You don't need any special tools to create a concept. For a simple game, you can simply think it through. But at least put your thoughts on paper or create a short document.
Creating a concept will help you figure out the basic requirements for your game and having requirements can help you estimate the time and resources needed to finish your game. To be less theoretical, let's look at example.
Squong Game ConceptFirst, I had an idea to create a pong game for this tutorial. But then I wanted to make the game a bit more complex and I was thinking what can I add or change. First I just thought of making the pong game with more freedom of movement - like a pong where you can move you paddle not just left/right but also up/down. I already thought of using Box2D physics - it is not really neccessary, but good for the purpose of the tutorial. And there was the idea - paddles could collide if they are both on one side of the court. Like in Squash.
If you can figure a name for your game at this stage, good. But don't spend too much time thinking about a cool title. Simply call your game "First Game".
Second, I came up with basic entities in the game. Entity is any object that you will add to the game.
- A paddle - one player, one opponent
- Court - and the court consists of
Next I tried to think of all possible situations that can happen in Squong. Players must change possession of the ball. That can happen when the ball hits the top wall. But then player could go close to the wall, hit the ball and disallow the opponent to play. So I had to change the possession a little bit further from the top wall. Also the bottom wall should actually be the same as in pong - when the ball exits the court there, player loses:
- Court - and the court consists of
- Walls - top, left and right
- Center line
- Bottom line
- When ball stops, player in possession loses
- When paddle crosses the center line, the owner of the paddle loses
Squong Game RequirementsI've already decided that I will use AndEngine. Now let's give a quick thought to the architecture of the game. We are going to need:
- Graphics - paddles, ball - this should be pretty straightforward
- Sounds - ball hits paddle, wall, sound for score or foul. Maybe for change of possession.
- Music - not really needed, but could be nice to have background music in menu (at least for the purpose of a tutorial)
- Physics - paddle, ball, line and wall collisions
At this point you can start drawing your entities or thinking where you get them. But don't get stuck. If you don't have them, simply use some mock pictures. A paddle can simply be a rectangle, ball is a circle. You can start looking for sounds and music, but that is a very low priority now.
ScenesA scene is exactly what the words means. If you look at games, they usually consist of some initial loading scene, that we call Splash. Then you go to Menu scene (a Tap-To-ontinue scene is sometimes present). There can be a Settings scene if you can't fit everything in Menu scene. Then a one of more Game Scenes. Maybe a Credits Scene, Achievments Scene etc. In Squong we are going to use the following. See the flow diagram to understand how the scenes change.
The Info scene will simply be a link to this tutorial. Note that concept of "Exit Game" is a bit complicated in Android, we will get to it later.
This all might seem like a waste of time. You want to be coding already! But trust me. Having these will be very useful later especially in bigger games.
Next partIn the next chapter, we finally start coding!
Further readingHere's my book about AndEngine and you can see the list of books about Android Game Development for further reading, not just about AndEngine but game development in general.
Note: I had to take a break from writing this tutorial. The game is published in Google Play store now. You can still get the full source code of the final game for 99¢. Available on Sellfy, pay by PayPal:
Also here's one Box2D physics problem that is directly related to the Squong game. If you find a solution, let me know!