Create a Java game prototype, based on libGDX. Focus is bootstrapping on the libGDX API; no real game content or game-play required. The game will be defined as an isometric "Tiled" (TMX) map. The game will run as a "Desktop", "Android", and "GWT" game, so it must be truly cross-platform.
The character starts in the middle of the screen, must walk around to pick coins, and must walk around "obstacles" (trees/stones). Game ends when all coins have been collected. During play, you can exit with Escape, and are given the choice to save or not. A "best time" list is saved, and displayed on "winning".
Game start screen:
Load Game screen:
You can choose and load (Load button or double-click), or delete, a saved game.
(New/Loaded) Game screen:
An isometric map, with some "flat" background layer, and another layer on top with a few "obstacles". There is the character at the center, and some coins spread around. All graphics can be anything. A single type of foreground (obstacle) and background (floor) tile is enough. Depending on the implementation, another layer for the dynamic sprites (character, coins), might be used. Note that the character must appear "in front of" the "obstacles" when "under" them, and "behind" the obstacles when "over" them. Some effect is needed to show the character when hidden by an obstacle. When the user finishes the game (wins), a list of "high scores" is displayed. Some noise is played when picking up a coin, and at the end. Some particle effect should display when picking a coin. The character stays at the center of screen, and the map moves, until the map edge matches the screen edge, at which point the map stops moving and so the character moves. An "option menu" in the game screen, lets the player choose between ("map moves", as described above, and "character moves" (map only moves when the character reaches the edge, but the "jumps" to show the character back in the middle) display modes).
The game will ask the player name once, to associate it with the score.
Movement is by using arrows, or clicking on the target location with the mouse/finger. The Game Time is displayed, and a Save button. "Escape" causes a Quit/Save dialog to pop up.
Programming language is Java, unless you can do Xtend, as it is the language I normally use.
Complex, in particular math-related, code must be explained with comments (in English).
Code will be pushed on a Github project. We can use Github issues and milestones to track progress.
Build system is Maven. Project must correctly Import as a Maven project in Eclipse. Project must be split in "Shared", "Client", "Desktop", "Android", and "GWT". All "generic" (non-UI specific: beans, interfaces, algorithms) code should be in Shared. Bootstrapping code is in the specific front-end. The rest of the client code goes in Client.
There should be a "Maven goal", for all 3 versions, that "runs" that version, from Maven.
The code must be either free of copy-right, or use Apache or BSD license. This also applies for all dependencies. Please confirm before adding dependencies on code with another license.
Because I want to turn this into a multi-player game, I want a fixed-rate "logic": Frame-rate should be fixed, such that the "game logic" is executed at a fixed interval. In other words, frame rate could be 60 (or 30 or 50 or 80), but "game logic" is called 10 times per second, at about 100ms, regardless (so, every 6, 3, 5, or 8 UI cycle). Also, "input" is not processed directly, but only in the "game logic" loop (I have seen there is some Input Processor implementation that queues input, and can delegate it to another processor on demand).
This project is only the beginning; after adapting the result of this project to my needs, I will create one or more follow-up projects, to add divers additional “technical features”.