We had the goal to catch the feeling of a few games:
- Super Meat Boy
- Bloody Trapland
- Red Moon
Story
Alan is a PortalChanic, he repairs teleporters in his shed. Alina - Alan's girlfriend - is upset because he spends too much time with his teleporters. "Let's do something, Alan". "Okay, give me the screwdriver". "That's enough". Alina takes the teleporter to her friend, but Alan forgot to tighten a screw...Alina is dragged into nowhere and Alan's journey begins.
Compiled Versions
You can download compiled versions of the game for the different operating systems here:Linux: AlanAndAlina-Linux.zip (tested on Linux Mint Debian Edition with OpenJDK 7)
Windows: AlanAndAlina-Windows.zip Mac: AlanAndAlina-MacOSX.zip
Adapted controls in these versions: WASD for movement, C=Coin, 1=Start/White, Q=Blue (except for jump)
If you would like to change something or to compile the code yourself, check out our git repository and clone it! You can find some information on how to start in the README file.
To play the game on a raspberry pi, look at commit d6e85e0 which adapts controls and sound output to a PC environment. Before this commit the code was developed to run on our pi installation (esp. SoundManager and controller keys in GameLogic).
View
As in the featured games above, the game is played in a 2D universe.Some layers are used to draw objects over some other objects.
The camera only shows an extract of the whole map, if the map is larger than the screen.
The player figure is always in the middle. If the player reaches a map border, the camera wont move out of the map.
Game concept
The game is divided in several stages. If you want to master a specific stage (and advance to the next one), you have to get a good time and enough coins.You can earn bronze/silver/gold time if you finish the stage under a given time.
If you collect enough coins, you receive bronze/silver/gold medal.
When you reach better time and medals, you will be rewarded gracefully.
But you should not hesitate. For each stage, a given stage time limits the lifetime of the player.
The single-try-time limits the lifetime of the player for each try.
Example: In this map, you get the gold medal with three collected coins. You have to finish the map in seven seconds or less to get gold time. To reach these objectives, you have 3,5 minutes. For a single try, you have 30 seconds.
Graphics
We decided to keep the graphics very simple, limiting ourselfs to dark rectangle blocks with light borders. The main color palette for the game is based on the iconic tron colors:Orange (223,116,12)
Yellow (255,230,77)
LightBlue (230,255,255)
Cyan (111,195,223)
DarkBlue (12,20,31)
In addition to simple blocks drawn by processing, we created a lot of pixel animations (animated GIF files) and static graphics. To achieve a uniform style for the whole game, we first drew our main characters Alan and Alina by putting together pixel after pixel (see Characters section below). For a little more variation they also got some "emotional" mimics and facial animations. Important icons like clock and coin symbols followed. All other graphics are based on these first images.
In contrast to those graphics, the level background and portal pictures were created using multiple filter effects.
In order to give life to Alan and Alina, we created a rather complex package of animation classes. These are capable of spinning, fading, resizing and moving all drawable objects in the game. The game's intro, story intro and credits are made by combining those effects to create beautiful little video scenes.
Controller
We use WASD buttons to control the player. Some buttons are added to navigate through menu or to escape current game.W - previous menu button
A - walk left
D - walk right
S - next menu button, fall off walls
E - jump
We optimized the controls for joystick gameplay because switching between counterpart buttons (W and S, A and D) is harder on the arcade itself. Altogether we noticed that controlling the player figure with a joystick is much harder than with a keyboard, so we smoothly adjusted player controlling for better gameplay on the FabArcade.
Software Architecture
This is a schematic overview of the software architecture we developed. As the most important part of the game, the GameLogic class controls the game flow and the other modules. The GameMap represents a single stage of the game with all its WorldObjects. It supports saving to and loading from files (see also XML Objekt-Serialisierung, in german). Our camera class defines the window through which the player can look at the game map. It implements camera movement paths, zooming and player-centered view. In the UI package you can find all user interfaces rendered on the screen, including cutscenes. These make heavy use of the Animation package which provides spinning, moving, scaling and blinking of all drawable objects.Physics
As mentioned above, the player is able to walk left/right and to jump.If A or D buttons are pressed during jump, the jump is slightly adjusted in the specified direction.
If the player figure is jumping against a wall, the figure will slowly sink downwards. It's possible to jump of from walls and land on the same wall again to gain height. Alternatively the player can jump between two narrow walls.
Walljump might be required to reach the destination of a map.
As long as the player figure has no collidable object under its feet, the figure will accelerate to the ground like in a real life environment. The gravity speed is capped.
Collision Detection
Since CD is very important for a good gameplay feeling, we enhanced the collision detection several times.Among other sources, we use information from this article.
In this project, we just collide rectangles with other rectangles - circles and other shapes are not supported at the moment.
Zones
There can be found several coloured zones on the game map:- The spawn zone is used to set the start position of the player figure after level (re)start.
- Death zones reset the player position to the spawn zone. They should be avoided.
- Trigger zones might spawn any object like another trigger, a death zone, several enemies or just bricks. It's a great way to get a dynamic feeling.
- The End zone is the end of every map. If you reach this zone, the map has been successfully handled.
Moving Objects
Every object can change its position. It can be used for mobile platforms to reach other parts of the maps or for devastating death zones that crash on the player figure's head.Enemies
Similar to death zones, the enemies should be avoided. There are enemies with gravity that can follow the player on a specific layer.Nasty flying enemies can follow the player figure everywhere.
Coins
On every map several coins can be looted by the player. They are improving your highscore.Coins are often hidden in a place where the player has to do a detour.
Time
Maps might have a time limit. If you need too long to reach the end zone, the map will be resetted.The faster you are, the better your highscore.
Mapeditor
Much of the amusement is made due to good map design. We invested much time to create an impressive tool that helps us making maps for our game.This is an example of a short map, freshly build in the MapEditor:
This is the produced XML-Output for the map shown above: