CE218 Assignment - 2D Video Game

 
Deadline: March 26 (See Faser)


Introduction

The aim of this assignment is the design and implementation of a "Space" ("Sci-Fi") themed 2D video game. Players are in control of a spaceship and they must use their piloting and shooting skills to overcome various kinds of enemies, avoid obstacles, collect treasures, etc.


Part A: Game Basics

The first part of the assignment is to get some basic, single-player game mechanics working to a high standard. Expectations for this part are:

● An easily maneuverable space ship

● Bullets with appropriate velocity and time/ distance to live

● Basic enemy ships or canons that shoot bullets

● Proper game rules (loss of life, scoring of points)

● Multiple lives and/ or multiple game levels


Part B: Further Game Features

You may decide what to do here, but start off by being realistic about what is achievable within the given time frame. Here are some ideas for your inspiration:

● Visual and sound effects

● Game objects such power-ups, treasures which increase the score, items which need to be collected to activate some game feature or advance to the next level, etc. Some of these objects may only be available for a limited time or they may be spawned by enemies which need to be defeated first.

● A protective, rechargeable "energy shield" which keeps the ship safe from bullets or collision damage as long as there is sufficient shield power left and the shield is switched on.

● Fixed components such as space stations, planets, nebulae, etc.

● Special features such as gravity, black holes or worm holes that transport items to another part of the map.

● Procedurally-generated game content

● High scores

● Options for game configuration or loading of maps from a file

● Different kinds of enemy ships with AI controllers, possibly spawning more advanced weapons such as mines or heat-seeking missiles.

● Worlds which extend beyond the edges of the screen, for example the game world could be 2x2 screens large. This would best be combined with a view that is centered on the ship and a "mini map" that gives an overview of the whole game world.

● A multi-player version as demonstrated in the CE218 lectures.


Part C: Manual and Report

Write a concise but sufficiently detailed report with the following sections:

● A manual including instructions how to run and play your computer game.

● A description of your main design choices both with respect to the software implementation as well as the game design.

● A game such as this has many parameters to tune. Describe which ones you tuned and how you did that to make the game as playable as possible. Include details of any test code you wrote.

● Also write a short appraisal of your achievements. How did the project go - what was easy, what was more difficult than expected? Are there any unresolved problems in your final submission? Are there any parts of the game project that you are especially proud of?


Constraints

The submitted program must be written in Java. For the representation of game object positions and velocities, you should make use of class Vector2D from Lab 2, possibly extended with further methods.

You are free to reuse any of your work on Asteroids from the lab sessions.


Submission Details

● Submission must be made electronically. Remember that the submission system allows you to submit more than once, as long as it is before the deadline.

● Submissions should be as Eclipse or IntelliJ projects including all project files e.g. Java source files, resources, documentation.

● The normal departmental submission rules apply: late submissions get zero.


Marking Criteria

Programs will be marked from a "game programming" point of view, taking both the quality of the implemented game and the quality of the software into account. With respect to the latter, the submitted software should be:

● well designed and making good use of data structures and APIs.

● organised into appropriate methods, classes and packages

● robust and user-friendly

● sufficiently documented and written in a consistent style

The assignment will be assessed according to standard degree-grade criteria.

● For a pass-mark of 40%, submissions need to have working implementations of most of the basic game features as well as a basic report.

● For a mark in the range of 60-70%, the submitted game should have a good implementation of the game basics as well as several further game features such as the ones listed under (B) above. The quality of the software implementation should be good as should be the report.

● Distinction level marks in the range of 70-80% will be awarded for excellent submissions. Typically these will have implemented a range of "futher game features" include some which are more demanding from a coding point of view. The quality of the design, implementation and the report should be excellent.

● Outstanding submissions may be awarded a mark above 80%.

Please note that this assignment is about practising and assessing YOUR game programming skills. You will get little or no credit if you find and use third-party software that does parts of the assignment work for you.


Academic Integrity

You are reminded that this assignment is part of your assessment in this module, and that the work you submit must therefore be your own. Any material you make use of, whether it is from textbooks, the web or any other source (other than the CE218 teaching material and standard JAVA APIs and tutorials) must be acknowledged and the extent of the reference clearly indicated.


DO NOT COPY PROGRAM CODE FOR THIS ASSIGNMENT FROM ANOTHER STUDENT OR FROM THE INTERNET OR FROM ANY OTHER SOURCES. DO NOT LET OTHERS COPY YOUR WORK.