First, learn to code. It is very essential to have an understanding of all the basics related to programming. If you don’t know how to program, I would recommend starting with Python. It’s a wonderful language that strips the programmer of low-level details and allows him to focus on concepts. It is also a very fun language, I am sure you will love programming in it. I picked it up in just 3 days (even though I had prior programming experience).

Once you have chosen a language and know how to program, you must decide in which language you want to program the games. That really depends on the kinds of things you want to do: engine development or game development. Engine developers create the core of the game, the engine, the things that turn on the actual game. If you choose this route, you will have to deal with all the low-level programming details. You should use C or C ++ for this, as most engines are coded in these languages. You must also be very disciplined about memory allocation / deallocation and code optimization techniques.

The other route is to encode the games, using a pre-encoded engine. On this path, you will use an engine created by someone else and use it to create your own game. Usually the engines have links in some scripting language (such as python, lua, or ruby) and therefore you can code the actual game in a scripting language. You can focus on game design rather than other low-level details.

Obviously, you can choose to do both: code the engine and the actual game.

At first, I think you’d better wait after you’ve created a few games to decide which path you want to take. In your first few games, it is best to code the entire game on your own. You will learn a lot along the way and you will also be able to decide which path you want to take.

To create games, you need certain additional libraries. If you know how to program, you need to know what libraries mean. They are additional code patches that you can link with your own code. To create games, you will need libraries for graphics, event handling, networking, etc. If you are using Python, Pygame is an excellent library for beginners that provides almost all of this. For C or C ++, you have Allegro and SDL. A simple Google search will give you a list of game programming libraries for your language of choice.

Start playing with the library you have chosen. Read their tutorials online. Learn how to do simple things like rectangles, circles, upload images, etc. Try to do some animations. The fundamental concept behind building an animation is to draw the object, then draw another object of the same dimensions on top of the background color, and then draw the previous object, with its coordinates shifted by the required amount. Of course, if you do this too fast, you can cause an illusion of movement.

After that, make a simple game like Pong or a Tetris clone that uses only event handling and some basic physics (collision detection). Google for the game loop structure, it will help you code the game.

Once you have coded it, move on to a slightly complex game, like a game with 2 tanks fighting. You don’t have to get cute with graphics, just use as many royalty-free images as you can. Try cloning more arcade games like Breakout. To do them, you will have to use something called a level editor, something that is used in almost every game.

After that, try your hand at a game that uses some artificial intelligence, like a pacman clone or a top view soccer game. Both can be implemented using an FSM (Finite State Machine), a concept used for AI in 80% of commercial games. Then try your hand at a side scrolling platformer as a Mario clone.

The games mentioned above, combined, include almost all the concepts used in 90% of the games. To create a game with an eye-catching 3D interface, all you need to do is use an engine to help you do it. It’s just that in the beginning, 2D programming allows you to focus on the most important concepts and also makes your code less complicated. Once you are comfortable, you can opt for 3D games.

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *