Indeed!
However, there are many way to do a same thing! My experience is not exactly an example to give. But I can say that I’m getting close to my objective!
1. Game idea developement
You need to have a clear vision and mission your game.
Vision
What should it look like, and why. The game style must be an complement of the game play. Gameplay should allow the player to reach the game goals in challenging and funny way.
Mission
The mission of a game is mostly to entertain. But if you add a bit of education, you mission will be much important.
Details of how you are going to make your mission happen will distinguish your game for the others. For the way you play the game, is what makes it fun! Remember that the human brain gets used to tasks and environments very quickly, so, the game needs to stimulate the brain very often, not just with increasingly interesting environments, but evolving way of doing a task (upgrades).
While preparing your mission, you can think of all systems you’ll use in the game.
2. Game systems planning
At this point, you make an assessment of your tools and skills. Can you write your own code? Are you going to use logic bricks only? Is it possible to do any of what I planned with my current assets (tools, skills)? Can someone code for you?
What about models, textures, animation, level design, FX design, sound, documentation, UI, etc?
In my case, I started with logic bricks, but soon it became clear that they were too limited. So, I saw the need to learn python. And now, even though I think I can write any conceivable system, I can come up with, I still am getting experience in ways of doing them. Just to say, it’s not enough to learn how to code, you need experience too!
Core systems:
The main activities performed in the game, make your core systems.
You can test them individually and then in combination. Your programming style will determine how easily and/or seamless they can integrate and work together in your game.
Think about runtime for each system. How often they run? Do they run in parallel with other systems? How much processing time do they take ? Can you centralize data? Will threads be required? Can you polish the code, in order to simplify it?
Make a timeline diagram, with all your core systems, for a game loop(you can use diferent colors for each system, and use a squared lines paper for the timeline). Mark at what time will a system intervene and why (what will it be doing and why?).
Your core systems can be:
Player controls, player/world interaction, world generation, AI, UI, Mission/scores controller.
some can just run once every so often (world generation), others will need to be running all the time (interaction, scores).
Auxiliary system:
They are important as well, but they normally just help the game look and feel better
They may be:
Music, FX (particles, font work, sounds, etc), game menus, documentation, etc
3. Building the game
For me, when you start drawing concept art, you are already building the game. Sketching will help you give life to the vision you have of your game.
- Preparing: Create your work environment. A physical place where you can work seriously without distractions , where you can hang your best artwork, and diagrams (if you lack that space, use your desktop background, or just a folder). A logical place, a folder with your project. Add folders for documentation (inspiration docs, your notes and logs), textures, sound, assets. I normally compile the game from the start and link my blend game to the compiled one. A to-do list is also a good idea.
- Programming: I wont type here what should be done, but what I do: I create all the necessary files. Then fill them with commentaries(documentation). That works like function place holders, and if there’s a lot of coding to do, I’ll remember what function does what and where I can put it. then I put the functions headers, with nothing in them. As long as all functions are defined, I can test all others that relie on them without getting a non existance error. As soon as I start writting a function and I call for others, I write them afterwards.
- Testing: Once your systems are in place, you’ll thoroughly test your game (often with placeholders such as cubes,and shadeless materials).
- Cleanup : Polish your system accordigly,
- Implement assets: You may now add your models and animate them.
- Back to testing and implementing (Sound, FX, artwork, extra code.
-
4. Finalizing, and publishing your game
Avoid exposing your game excessively before is ready. You can show your progress in the forum, but when it comes to advertising, make sure you are not hasty. Secure you download links, show footage of your game in action. Don’t label your game “Ultra awesome” just because you think so. Let your game take a life of its own.
Keep improving the game. If people and you play, try to remove any bugs that may infest your game.
OK that’s it, sorry for the wall of words. I hope it helps!