How to get into game development

The number of language options that you have in Game Development is so large that it’s worth covering them first, before we dive into the actual learning phase:

Object Oriented Programming (OOP) languages are faster, heavier, and more difficult. These are usually used in professional game development studios and are necessary to do anything 3D - consequently, they are also often much more difficult to learn and use.

Scripting languages, on the other hand, are light and easy to use. These are ideal for 2D indie games, which is what you’ll start out with. You’ll learn Python first because of how friendly it is to beginners.

The Python Years

  1. Learn Python through an online book like Python for Kids or through an online course like CodeAcademy. I’ve found that the CodeAcademy course covers the basics pretty well* but if you need extra help I’d recommend getting a book.
  2. Practice writing a Python application through something like a choose-your-own-adventure game or by using the problems available on ProjectEuler (more sites like this listed in Appendix 1). I’ve found that one of the most difficult parts of the programming journey is going from knowing all of the basics to actually being able to apply them - so make sure that you get enough practice to make this step.
  3. If you don’t know how Git/Github works, make an account and learn it through this book or this interactive tutorial. Essentially Git is a way to synchronize your coding projects with the web and it is used everywhere in coding.
  4. Unfortunately, Python doesn’t have good graphics built-in and so in order to learn an external library in order to code the visuals of a game. The most popular libraries are:
    • Tkinter: the ‘default’ Python graphics library, but vastly inferior to other choices
    • Pygame: this used to be my default for coding graphics but development has been discontinued and the community is pretty much dead
    • PySFML: SFML is fairly nice, but Pyglet seems more Pythonic
    • PySDL2: vastly inferior to Pyglet
    • Pyglet: the library of choice, it offers a Pythonic and simple approach to graphics. The only problem with Pyglet is the few number of tutorials available online. I recommend starting with the official tutorial, checking out this and this tutorial, and then Googling for examples after that.
  5. Write a simple game! A rule of thumb that I’ve found is to not try to invent some amazing new concept but instead to make a better version of a tried-and-tested game, such as a platformer. This will produce a better result and will save you a lot of hair-pulling.

Adulthood

With all of its benefits, Python is a very bad choice for writing a real game - this is mostly due to it being one of the slowest programming languages (this speed-for-simplicity tradeoff is very common among scripting languages). Here are the four choices that you should take after mastering the basics of programming:

Conclusion

After using Python to learn the basics of programming, you have a lot of options when it comes to writing public-worthy games. The four routes rated easiest-to-hardest are:

  1. Lua and Love2D
  2. C# and Unity
  3. C++ and SFML
  4. C++ and Urho3D

The C++ routes, especially Urho3D, are very difficult and you should probably skip them when you’re still getting used to programming. In general, I would also prioritize making 2D games over 3D games, as 2D is usually a lot simpler and faster to produce an actual product. Because of this I would strongly recommend the Lua/Love2D route to anyone - it is so good that it could probably last you your whole development career.

Appendix 1 - practice sites

This is a collection of sites that let you practice your coding. Note that I always prefer doing projects rather than completing these exercises, but that is your choice.

Appendix 2 - game jams

A game jam is an in-person or online game-making competition that puts you on a time limit of anywhere from one day to weeks. This a great way to practice game development because it is super fun, especially with friends.

Appendix 3 - publishing your game

Since Steam is shutting down Greenlight, you’re really only left with publishing to the plethora of indie game sites that exist. My two favorites are itch.io and GameJolt. Aside from that, it always helps to do some marketing on forums like GameDev.net, r/GameDev, and any specific one that your current engine/platform has.


*Even though CodeAcademy now bombards you with ads and makes it seem like it has no real content it can still teach you Python fairly well.

**This is a mistake I realized 600 pages into the Primer Plus book.

***LearnXinYminutes is a very cool website that you can use to get a taste of almost every programming language.