The aim of the coursework is to give you experience of using a deployment-ready production framework to produce a fully functional game demonstrating sound architectural principles in separating game engine and game code. Your code should employ design patterns and a data/event-driven architecture to produce loosely coupled code.
You will be developing a game demo using C# and XNA with Visual Studio. You may also be permitted to use MonoGame to deploy on one of the supported platforms with express written permission (email is sufficient) from the module leader (Chris Child).
The coursework is a single piece of individual work, worth 100% of the final course module mark.
You are to produce a demo of a casual game of your choice in 2D, 2.5D (2 dimensional game-play with 3D rendering), or 3D. You may choose from the following game genres (other game types may be implemented with written permission from the module leader):
- Top down racing game
- Fast-paced space or flight shooter (side scrolling)
- Mario-style platform game
- Side-scrolling fighting game
- Sports related simulation
- Load appropriate assets for the game type using a resource management strategy.
- Control of the game character or first person view using keyboard, joystick, mouse or touch control. An event-driven architecture should be used to separate input hardware from the responding code.
- Collision detection or alternative hit detection using basic brute force techniques.
- Moving and animated game elements, demonstrating frame-rate independent game loop control.
- Configurable game world with positions/attributes of game elements/opponents demonstrating a data-driven approach.
- Collision response based removal of game elements showing separation of collision detection and collision response code.
- Scoring system demonstrating use of event listeners.
- High-score table demonstrating use of serialization or an alternative approach to provide a game state load/save mechanism.
- Start-screen (containing intro and keyboard controls) and game over screen (with score and restart options) demonstrating use of state pattern and FSM with game loop.
- Power-ups demonstrating use of event-listeners and re-use of a base-class for game objects.
- NPC opponents demonstrating FSM control of game objects
- Overall game-play and presentation, including use of additional level challenges as necessary (e.g. timer count-down, lives).
- An analysis of improvements to the speed of your algorithms that have been, or could be, achieved using your knowledge of hardware architecture.
- A discussion of the use of profiling software to improve the performance of your game engine.
- Diagrams and supporting documentation showing how your game architecture could be adapted for use as a network game.
The deliverables are as follows:
- A 10 minute in-class demonstration (you can use your own laptop, if you wish).
- Report of what you did, how and why (online submission).
- The working system (online submission).
The online deliverable should be submitted as a single ZIP file via Moodle. Note that Moodle has a maximum submission size of 200MB. You should ensure that your project is cleaned of all unnecessary build files, pre-compiled header files etc. and that your assets are of reasonable size in order to submit the file. Your project must contain all files necessary such that a simple build and run will allow the code to execute. If you have used external libraries, these should be included in the submission.
If you wish to work on this coursework off-site, you will require a copy of Visual Studio and XNA 4.0. Visual Studio is available to you free for non-commercial use as part of City’s membership of the Microsoft Academic Alliance. XNA is available free (links to this and are on Moodle).
Formative feedback is available in the laboratory sessions. Moodle discussion boards can be used for
queries between sessions.
- “Office hours” are also available on a “drop-in” basis if you wish to see me.
- The demonstration will offer opportunities for verbal feedback from me and your peers.
- A written marking scheme with comments for each section of the coursework (where needed) will be returned via Moodle.