Game development is one of the most interesting and exciting forms of software development. For some of us, it is what got us interested in learning how to code. However, game development is a lot more than just programming. It encompasses everything that goes down in building a game, right from the plot, script to design and sound effects. In this article, however, the discussion is confined to the programming aspects of game development.
What is a game?
The first thing that comes to mind are games like Call of Duty, FIFA, Counter Strike, Assassins Creed and your other favourites. These are however big commercial games that are funded by a publisher and take years to get made. Then there are indie games (indie stands for independent), ones that require relatively lesser costs but not necessarily lesser fun. Indie games have seen a rise lately, thanks to the internet. Your favourite Android or iOS game could very well be an indie game.
Does that mean it requires a lot to get started with game development? Everything you can build with a fair bit of programming knowledge, right from a basic Tic Tac Toe to chess with Artificial Intelligence is also a game.
What does a game consist of?
To understand what goes into game development, one must understand what goes into making a game. As stated earlier, we'll only discuss the programming aspects.
- Logic- The main game program implemented by some algorithms. This forms the backbone of the game and everything else is added on top of this.
- Input- This part deals with the user input. This input could be anything like mouse move, key stroke in a computer, a button press on a mobile, motion in a VR headset. This input is passed to the main game program where the Logic deals with what to do with the input.
- User Interface (UI)- This provides the users with screens and menus so that he/she can interact with the game. This is an important part of the game and the UI adds to the appeal of the game.
- Graphics/ Rendering Engine- This deals with rendering graphics for the game. The type of engine used varies widely but most often rendering engines are built upon one or multiple rendering application programming interfaces (APIs), such as Direct3D or OpenGL which provide a software abstraction of the graphics processing unit (GPU).
- Audio/Sound engine- This part deals with the algorithms related to sound. Abstraction APIs, such as OpenAL, SDL audio, XAudio 2, Web Audio, etc. are available.
Apart from the ones listed above there could be many other parts such as a Physics Engine or an Artificial Intelligence (AI) system depending on the nature of the game. For example a multi-player shooter may not use any AI but would require a Physics Engine, a chess game would have an AI but no Physics engine, while a game like Mario or Bomberman would have both!
How do I start Game development
Game development is tricky, complex and can take years to master. However, one needs to start small. [Most answers] for this question, would recommend starting off with a basic game like Tetris. If you have a fair amount of programming knowledge it wouldn't take too long to make this. If not, you probably don't want to start up straight off with game development and learn a programming language prior to this. One nice [blog article by an indie game developer] answers some questions for beginners.
I've made basic games, how do I advance?
If you've already set your feet in water and have some level of experience in making basic games, you could dive deeper into the world of game development. Learning never stops in game development. Learn how to use graphic libraries, try to contribute to open source games to gain a better understanding of how bigger games work. The architecture of such projects is very neat and efficient. You could also start off with learning how to use a game engine like [Unreal Engine] or [Unity3D].
I've made my game, where's my money?
It is true that the gaming industry earns more than the movie and music industry combined. But out of the thousands of games that are released every year over different platforms, only a handful of them get a good deal of money. Most of these are big publishers who spend lots of money and years on producing and advertising their games. This doesn't mean that there is no way to join the league though. But it just takes a good deal of time and experience and track record of making quality games to make a publisher interested in you. Apart from this, there are several indie developers out there and their numbers are on the rise. Many games also belong to self funded groups which can at times be Open Source!