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”.
Here a few things I had to drop from the description, to fit the 4000 characters:
The map must be bigger then screen, so that once can test “scrolling”, but it does not need to be much bigger.
All graphics, and all sounds should either not be copy-righted (a doodle from "MS Paint" would do just fine), or have some permissive copyright, that allows them to be used freely in this project.
Depending on how the implementation is done, another layer for the dynamic sprites (character, coins), might be used.
Clicking/taping on the desired location should causes the character to keeps on moving, until either it arrives at the spot, or another action is performed, or it gets stuck behind an obstacle.
I have no experience in mobile development, but I understand there is an Android Emulator, which could be used for testing. As I do not currently own and Android device, some instruction on how to set this up, or pointers to some good web page, explaining how to use it, preferably from Eclipse or Maven.
I currently have neither game art nor an artist to create it (I have not artistic talent of my own), but I only want to concentrate on the programming part for now.
Someone asked about an example of what I have in mind. Well, for a start, the end product is not going to be about running around and “picking up stuff” from the floor. That was just the simplest game mechanic I could think of. The general idea is to explore “places”, and “talk to people”, which give you “quests”. The quests normally involve going in “dungeons / haunted forests / ...” and killing the monsters there. Looting comes from the dead monsters. It is mostly a cooperative team game, with multiple complementary character classes, but I'll also add a PvP mode (and eventually other stuff). The isometric tiled design will give some 3D look, but otherwise the world will actually be flat. I'm trying to “keep it simple” for my first (published) game.
I had some trouble finding “examples”. From the “looks”, I think those go in the right direction:
A somewhat cartoony look, but probably “bigger” avatars and tiles and objects.
Just to be absolutely clear, the "links" are NOT part of the requirements for this project. The critical sentences are "no real game content or game-play required" and "I only want to concentrate on the programming part for now." I just wanted to show my "inspirations"; creating the graphics/sounds/complex-gameplay is NOT part of the requirements. This should really be an minimal demo.