Monday, March 26, 2018

My Java Game Development Learning Process

I've been interested in game development since 2013 yet only now I finally picked it up with a serious note. As a software engineer student, I grasp up game development concept much faster which allows me to progress faster in my learning process. Currently, I am at the very basics where core things to learn are to make an engine. With this blog post, I'll share my perspective on how to learn game development. Keep in mind I am new to this and it may not be a very efficient method to do so.

Start as low as you can

Nowadays there are plenty of tools used to make games: Game Maker Studio, Unity, Unreal Engine to name some. These are considered "high-level of game development" as an engine handles most of the things that looks extremely simple such as rendering, keyboard handling, updating entities and so on. I started out with Game Maker and I never realized how difficult it is to work from scratch and always had a stereotypical idea making games with code is a waste of time. Fear me not, developing only with the code is a way to understand most of the things about game development patterns, design, and logic. It teaches you HOW things work and WHY they are like this. Creating something from scratch may have less of a result output however in the long run it sure will benefit your dopamine system that rewards you for doing great things in your life!

Java Game Development

Learning Java as a first language can benefit non-programmer to think like one as the language is super verbal without any shenanigans for example C++ have with stdin::cout << "Hello world"; With Java mostly everything makes sense as the code statements says what they will do.

Same goes for game development except game design and logic complicates the things. Luckily you don't need to put most effort into language and you can focus on learning game development theory instead of language tricks and tips.

Learning Process

Everyone knows their own way of learning, but I'll share mine. As a software engineer student I did not worry about language specific tutorials though some online tutorials were handy. For beginners I'd recommend starting with Derek Banas Java tutorial playlist. It covers important programming syntax and concepts in a nicely laid out order.

As for game development there are many options. You can jump straight into using a fully-made library such as libGDX yet I'd consider that a mistake as without the knowledge how rendering and simple engine works beforehand, you may end up struggling to work with it. Car engine has its life-cycle and ways to work same applies for game engine so developing one by yourself with the help of tutorials extends your knowledge about game theory at a faster rate than using already made tool. There are 3 main playlist that are recommended to watch after you finish Java tutorial.

  • Ryan van Zeben - 15 Part Playlist explaining basics of how Minicraft engine works
  • CodeNMore - 34 Part Playlist explaining similar engine with additional content
  • TheChernoProject - 126 Part Playlist where same engine is made at its finest with good optimization and rendering algorithms yet may seem slightly complicated if you haven't covered previous playlists.
Finishing these tutorials would prepare you for the real job of game development. Even after finishing CodeNMore playlist assembles your knowledge for a full prototype-ish game. I'd say CodeNMore tutorial is the best out there to learn Java game development which is the one I am working right now and here is my current result:

What's Next?

Once done with pure Java game engine development I believe that is the right time to start using more of a "high level game development framework/library". Now you're all built up with the information how an engine works, how to make one, what happens behind the scene and so on.  Best library to pick up would be libGDX. It is the mainstream library for Java which supports multi-platform and has many other great features


There's always a new thing to learn and a way how to solve an issue in your game. Never stop doing it even if you don't get it. My hidden message behind 3 playlist recommendation is to watch them all, because not getting means you can watch a different tutorial and start all over again with better understanding how things work. 

No comments: