It has been recently brought to my attention that many people ask about game development, yet there aren't any articles on the topic. I've decided to shed some light on the general process of developing a game from start to finish. Keep in mind that that this is a generalization and WILL change from project to project.
Step 1: Choose Your Game Library Unless you want to write your own library for all the dirty graphics/sound programming, you will probably want to get a game library. There are many game libraries out there. but they all offer the same base functionality (mostly...).
Features that any good library should have:- Some system to load and play sound files
- Some system to load and display graphics
- At least some basic image manipulation (rotation, etc)
- Primitive drawing functions (circles, lines, rectangles, dots, etc)
- Functions to display text
- Multi-threading support
- Basic timer functions
Some game libraries include:
Step 2: Define the Concept All games start here, merely ideas in someone's head. First, come up with an idea for a game. Once you have a simple idea, expand on it. For example, if it is a board game, what is the objective/How do you win? What will the rules be like? etc. If your game will have characters or a story, create them. Make sure you have a pretty well defined concept of what your game will be when its finished. The more complex the game, the better you should plan it out in the beginning so you don't have to worry about the game itself while your coding. Keep in mind that your game WILL evolve as you create it.
Step 3: Plan Your Engine Here, you will plan out the various components your game engine will need and how everything will fit together. Depending on the complexity of your project, you may not need to do this step. This is also a good time to test various parts of your engine that you have never implemented in the past, just to make sure they work before you put them in the main project source. Also, you should begin to design the structure of your classes here as well(if you are using OOP, which you should be). Keep in mind, however, that there are pre-made engines out there, available for use in all kinds of projects.
Step 4: Code Your Engine (if your making your own)
Now its time to actually start coding your engine. This doesn't necessarily mean the game itself, but rather, core rendering, physics, file handling and the like, functions and classes that will be used to construct your game. However, depending on the complexity of the game, the engine and game code may be the same. Also, a more complex game will probably require a resource manager. A resource manager does what it sounds like, it manages your resources (graphics, music, sounds, etc). It also keeps your code clean and helps to avoid memory leaks. See an excellent resource manager below by Xander314. Try to give your entire engine some kind of compact, easy interface for use as well. That way, when you program your game, you don't have search through source to find functions names and the like. An easy way of doing this would be OOP. Like so:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| //put related components into classes
class collisions {
bool check_col(obj1*, obj2*); //you should have a base object class that all
void handle_col(obj1*, obj2*); //game objects are derived from, for easy passing to functions
public:
void handle_all(); //handles EVERYTHING collision related
}Collision;
class rendering {
void bots();
void bullets();
void players();
public:
void draw_all(); //calls other functions for rendering
}Renderer;
//this allows collision management and rendering in your game loop to be as simple as:
Renderer.draw_all();
Collision.handle_all();
|
Resource Manager by Xander314
| |