Task Description
The style of game being made is an arcade-style object-avoidance game in the style of Bit Trip Runner. The game consists of guiding a character along a set path avoiding threats by jumping over them as they arrive. The player does not stop running the game moves forward at a fast rate, and the player can neither slow down nor speed up the pace of the game. Therefore the player can only react by jumping over or sliding under the enemies.
Main Features
Main Menu: when the game is lanuched a menu will appear with two buttons – one marked “PLAY” to play the game, another marked “EXIT” to return to the OS. The main menu’s background can be colored in or left black. This screen may have a name for the game displayed as well.
Game Screen: For the purposes of this assignment a game screen of 800 by 480 pixels is assumed. You will be provided with a tilemap consisting of a basic level and you must use this or a variant of it for your game’s background with roughly the same proportions. Additionally you will be given a series of spritesheets for the protagonist and spritesheets for a basic obstacle.
Gameplay
Gameplay is relatively straightforward. The player is located on the left side of the screen close to the bottom (note that this should be in landscape). On starting the game, the player immediately starts running to the right, with the camera following the player such that the player does not change position while the background scrolls past.
Periodically a slime or other threat will appear, generally moving towards the player. The player will need to jump over the slime but touching the top half of the phone’s screen (once again in landscape), at which point a jump animation will be run as the player moves up the screen, hopefully landing on the other side of the slime. The locations of the slime should not be random – they should be individually placed to make an interesting but possible game, where the player is able to memorise the order and location of threats. Keep in mind that I need to be able to play through to the end of the level, so try and keep the game playable rather than making it impossibly difficult.
When handling collisions, I’d rather you avoided using Box2D and instead relied on the simpler overlap feature of a rectangle or bounding box. Box2D is great, but we’ll be covering it later in the course.
Optionally, a second action should be added which will allow the player to slide under flying threats when the player touches the bottom half of the screen (see Additional Features below).
In my case, I found that a speed of 360 pixels per second was a comfortable rate of game play, with the slimes moving towards the player at 100 pixels per second. You may prefer different values.
A demonstration video will be provided at the end of week 4 to show how the basic gameplay should function.
Fail State
If the player hits a slime or other threat the player will fall down using a provided animation and the player will stop running. A button should appear labelled “TRY AGAIN” which will reset the game again from the start with the player at the far left side of the map.
Success State
The map is 17500 pixels wide. If the player makes it successfully to the end of the map, the camera will stop moving while the player runs off the screen. Some sort of congratulatory message should be shown with a button that leads back to the main menu, along with another that allows the player to start again.
Assets
You will be provided public domain assets for all of the assets required to make the main features of the game. You must also ensure any new assets used are either made by yourself or licensed under a permissive license for use in an academic project. Use of public domain resources is recommended. Also, just to keep things professional, make sure any assets you add to the game are safe for work.
Additional Features
For the last few features you have a choice of which features you would like to add to complete the game:
• A pause feature
• Sounds
• Looping background music
• Unique graphical style
• Second level (or more)
• Slide action and associated threats
Each addition is worth a number of marks (see Marking Criteria for details) and their combined total is more than the maximum number of marks available for this part. The listed marks indicate a high-standard of completion, where there is no visual clash with other elements on-screen and manipulating any new controls does not come at the cost of inconvenient movements on the player’s part. These new features may require some additional research by you to implement as the course will not have covered all of these possibilities yet. Basically this is a chance for you to show off and go above and beyond what is expected of you.
New features added are still subject to the requirement for your game to run quickly and smoothly and so make sure you do not use an excessive amount of memory or write poorly optimized code, either of which could cause your game to hang or stutter. Descriptions of each additional system are available below:
Pause Feature
Some ability to pause and resume the game when it is in play. This should only be possible in the game screen, not when there is any sort of fail state. While paused the game should have text in the top half of thescreen in large font reading “PAUSED” and a buttons in the bottom half marked “CONTINUE” to resume the game and “QUIT” to close the game. You may do this with a button on the screen though that will take up space needed to play, so you would want to make it translucent. Do not make the pause button move around the screen if you choose to use a button. Another option is to activate the pause feature by pressing back key on an Android phone (simulate this with the backspace key on the keyboard for the desktop module). This would allow you to keep the play area free of distractions.
Sounds
Adding sound will give the game much more atmosphere. Ensure youhave a complete suite of effects including jumping, the player being hit, as well as win/lose conditions. Remember to only use sounds you have the rights to use, freesound.org is a good start, as is BFXR.
Music
Adding a nice soundtrack can also improve the play experience. If youdo this make sure the song loops continuously. Finding appropriate royalty freemusic can take some digging around, many people swear by incompetech for their music needs.
Unique Graphical Style
Instead of using the provided assets, you may choose to replace or modify some or all of the assets to make them more striking and unique. If you want to get the full marks for this feature, you must ensure all of the assets added look like they’re part of a consistent art style and they must all appear consistently scaled.
Second Level (or more)
This option is a little more vague than the others and will require some additional creativity on your part. Essentially you add some sort of progression to the game with a second level that has some tweaked mechanics or a different layout. This level should be available from the Success screen of the first level and needs to be sufficiently distinct from the first level to not just feel like a reskin or repeat of the same mechanics. If you feel you have the motivation do so, you may even add further levels after a second, though a well done second level will be enough to get the full marks for this option.
Slide action and Associated Threats
Along with a jump annimation you have been provided with the tools for a slide animation. By having the option to slide under threats the game will become more interesting. Of course, this will also require having a threat to slide under – any flying threat should do this just fine.
Code Quality
Docmentation
Use Javadoc-style documentation on methods and constructors. Documentation can be omitted for simple methods if their functionality is obvious and they have no side-effects. Code comments can be used sparingly, aim to comment blocks of code rather than individual statements unless the outcomes of the statements are not obvious.
Code Style
You must write your code in a consistent style. Keep your style close to Java guidelines and if you choose to deviate from it, please do so consistently. Note that you are not specifically required to follow Object-Oriented design, you merely need to make sure your code is legible – however, you will find that a good object-based structure will pay off.
Version Control
You must use a git repository to track your implementation progress and to keep a record of your work. You may choose to exclude the majority of the project from being tracked to keep your file version history compact and make it easier to switch between computers, but you must at least include the source directory of the core module. If you make any changes to the source in the android or desktop modules then be sure they are included in version control as well.
Submission Details
You must submit your complete Android Studio project folder in a single zip archive file. The zip archive must include all source files and asset files required to compile and run your project in both android and desktop modes. The submitted archive must also include your version control directory (there should be a.git/folder inside the project), and a document outlining what featrues you have implemented.
Once you have created the zip file according to the specifications, you are required to upload it to the Individual Assignment Submission link via the course website on LearnOnline. The deadline for the submission is on 11 April 2021, 11:59 PM.
Marking Criteria
Criteria
Mark
Main Features
45
Main menu with Play and Exit buttons
5
Control of player with touch control causing a jump action
10
Collision response with slimes
10
Animations
10
Fail and success states, including retry button
10
Stability
15
Android module stability without stuttering, errors ro crashes
15
Code Quality
15
Documentation and commenting
5
Consistent and readable code style
5
Correct use of version control
5
Additional Features
25
Ability to pause the game
5
Sounds
5
Looping background music
5
Unique graphical style
5
Second level (or more)
10
Slide behaviour
5
Total possible marks
100