Reference no: EM133066746
CMP9133M Advanced Programming - University of Lincoln
Assessment TasK: Complete the following two tasks.
Part (1) Develop a playable online 3D ten pin bowling game with rules similar to a physical ten pinbowling game that can be played by a good number of online players, with potential to scale upfor massive online players;
Part (2) Write a formal report covering the development details of the game, and your insights on thechallenges, solutions, programming languages and skills regarding large-scale programmingissues.
The purpose of this assignment is to evaluate your capability in evaluating, proposing and implementing solutions for a large scale programming problem, and your deep understanding of different object-oriented programming languages and state-of-the-art tools for large scaleprogramming issues.
Your development can recycle and extend the materials used in the module workshops. Please note that it still needs significant modification to the provided system design and implementationto meet the requirements. Alternatively, you can opt for implementing your own GUI-based gamefrom scratch addressing the massive online challenges.
To meet the minimum requirement, yourdeveloped online game should allow at least 100 online players to play at the same time.The detailed technical requirements are detailed below.
Please note that you are expected to submit the report on your development addressing these requirements below, along with allsource code and project files of your system.The Playable Online GameSimilarly to the C++ classes Ball, Table, Cushion and Players - designed or restructured during the workshops - you are required to think carefully about the classes you will design andimplement to make a playable online ten pin bowling game suitable for large number of playerswith potential to scale up for massive online players. To complete a playable game, the following classes and effects must be implemented.
1. Lanes
A lane shows the area for two players to play the game with certain layouts. The online gamewill have multiple tracks or courses allowing multiple players to pair with and play at thesame time. This means that a lane class should be designed and implemented, and your gameshould support large number of lanes, at least 5 lanes for demonstration.
2. Balls and pins
Add programmatic ball and pin classes to the lanes. This will require the design andimplementation of new classes to support the attributes and functionality of a ball/pin. Youwill then be able to add ball/pin objects to the lanes, implement a method for detecting aball/pin's collisions and positions, and construct a system for managing balls/pins/scores.Typically, there are one object ball plus ten pins for a lane. Your game should allow 2players playing in each lane.
3. Players and Scores
You should design and implement a ten pin bowling game to accommodate a few players atthe same time. This does not need to follow exactly standard ten pin bowling game rules, andmay be quite simple. However, it should be turn-based, and players should score points.Again, you should think carefully about a suitable class structure to represent the players andgame rules. You should also consider how your game logic code could be extended, andreflect this in your code design. For example, could your game be easily scaled up to support10,000 players to play at the same time rather than just 10 players?
You should also design and implement functionality for displaying the current player(s),players' score(s) and ranking. You can either display the text information in the gamewindow (ideal case), or print text to the console window as a basic/minimal solution.
4. Multiple Computers
You should also design and implement functionality allowing game play in multiplecomputers via a computer network. The scores and ranking of players, even in differentlocations/computers, should be displayed and updated as well.
You should think about how to allow massive players to join the online game and implementthis to your game.The above tasks will be evaluated via a software demonstration, where both the functionalitiesand the source code will be evaluated by two markers during the demonstration.
The Report
You should submit a report (1) describing your online ten pin bowling game development indetail, (2) describing the key challenges and your solutions, if your game is re-designed formassive online players e.g. more than one million users at the same time. The report should bemaximum 8 pages with the font size of 11pt, excluding front cover, references and appendices.
The report should clearly structured and include the following sections:About your developed artefact? The game. Please describe your game including the rules of your game, how to play thegame, and at least one snapshot of your game (approx. 0.5 page)? Design and implementation. Please describe briefly your game design and the implementation of the classes and the key functions you have used in the game, usingdiagram if necessary (approx 1 page)?
Implementation. Please include detailed descriptions of the new classes, functions and concepts you have implemented for each of the above 4 requirements including lane/ballpin/players-scores and multiple computers, with diagram/plots/snapshots of source code if necessary (approx. 4 pages)? Memory and scalability. The method you use to cope with memory (e.g. too many detailedobjects to be loaded) and scalability (e.g. 1,000 or even more online players at the sametime) issues, with diagram/plots/snapshots of source code if necessary (approx. 0.5 page)? Strengths and weaknesses of programming languages in implementing the game. Your own reflective thinking about the strengths and weaknesses of C++ programming language, as compared to other development tool(s) such as Python/Java/C#, especially your own experiences in the development of the game (approx. 1 page)
Challenges and solutions if your game to be scaled up for massive online players? Please list key challenges if your game is scaled up for more than one million online usersplay at the same time, and propose your solutions to these challenges. Your solutions maynot be restricted to only one specific program language or specific platform (approx. 0.75pages).
Please also provide a brief review/examples of similar large scale projects or online games(approx. 0.25 page)Appendix? You are expected to include your own code as an appendix to the report, or any other materialrelated to your solution such as detailed design diagrams or screenshots.
On successful completion of this component a student will have demonstrated competence in thefollowing areas:?
Learning Outcome 1: Evaluate the strengths and weaknesses of different object-oriented programminglanguages in comparison to alternative development tools?
Learning Outcome 2: Propose and implement solutions for a large-scale programming problem?
Learning Outcome 3: Critically evaluate different solutions for large-scale programming problems
Knowledge & Skills Assessed:Advanced Programming Knowledge, Skills and Understanding: e.g. Literature searching,Referencing, Project Planning, Techniques and Advanced Skills for large scale programming.
Professional Graduate Skills: e.g. independence and personal responsibility, adaptability, verbal communication, written communication, creativity, critical thinking, self-reflection, problemsolving, group or team skills, effective time management, working under pressure to meetdeadlines.