Many of us went into software development because we dreamt about creating videogames and making a living of it. Developing games has a certain appeal, because they are something fun to do and play that millions (hopefully) will enjoy.
Games are made up from working blocks, a lot of working blocks. The more complex a game is, the more blocks it has. Creating games is just a matter of creating individual blocks and making them interact together to create an experience for the player.
What makes a Game
There are a lot of moving parts in a videogame, but there are 5 parts that stand out. I will use original NES Super Mario Bros(SMB) as an example of each part:
It refers to how the game interacts with you; the set of rules of how the game is played. Mario jumping over turtles and shooting fireballs at gombas are separate rules interacting together.
Pressing a button to make Mario jump is one rule, which also adds the possibility to jump over turtles. Mario shooting fireballs by pressing a button and a gomba dying when a fireball hits it completes the scenario. It is all made of interacting rules.
2. Code implementation
The implementation of the rules. It is actually making Mario jump and shoot; this is the one most people are afraid of. It can also be overwhelming if you don’t have a programming background. At the present time, the implementation can be done in many different tools. In some of them, programming knowledge is not even required.
The drawings and animations of Mario, turtles, gombas and fireballs are the graphics of the game. SMB is 2D, but other games use 3D graphics. The animation of those graphics may also be included in the code implementation. Making Mario look like running and jumping will require additional work but will make a game much more appealing.
This includes the soundtrack and sound effects. Just like with graphics, it makes the experience a lot better. A big Mario destroying blocks with his head would be a lot less impressive without the crushing sound. The pressure the game puts on the player by increasing the tempo of the music when time is running out is also a great effect. And who can forget in “Duck hunt” the laugh of the dog when you missed?
It is sometimes viewed as the basis of the gameplay, but sometimes it is the other way round, it is the reason why the player is supposed to do something. In SMB, Bowser kidnaps the princess and Mario has to rescue her while she is always in another castle.
As you can see, a game is all about interaction to deliver an experience. Creating an enjoyable gameplay supported with graphics and music, tied together with code.
The starting point
By this point you probably feel more knowledgeable about videogames and may want to begin creating your initial game. The first difficult choice you’ll have to make is choosing a game making tool. There is no perfect tool; you should keep in mind that your goal is to make a game, any tool that allows you to do that is therefore a good one.
You may want to experiment with different tools until you find the one that suits your workflow. Below you will find a list of tools I have used and my opinion about them. Remember, my perspective on them may not be the same for you, use them as reference and try them by yourself.
This was the first tool I used to create games. It is easy and visual. Very fast development with several tools focused in 2D games. Now with the studio version you can develop for mac, windows, linux, even mobile and web. It uses graphic blocks to design the game or you can use GML language as scripting.
Originally created for the enterprise Java developers so they could use their corporate knowledge to make games. It can create 2D games and I am not quite sure if it is 3D capable. It can release to multiple platforms and uses Java as programming language. The setup can be difficult if you are not familiar with the tools.
This is not a game engine, but a multimedia framework that has tools which simplify drawing graphics, playing sounds and receiving mouse or keyboard input. I have not used this one very much, but I decided to mention it since it is the lowest level I would dare to start with. It uses C++ and since it is a low level library it has the most flexibility of all.
There are a lot of other game engines that I know of, but the list will really grow if I describe them all. Here is a list of some other popular tools for game development that you may want to check: