How I make games

I number of people have asked me how and what I use to create games, so decided it was time to write about it.

My first game Dave Dangerous was written in Java,  at the time this was a language I had not used. But being a c# developer the languages are very similar.  Both object oriented and use very similar syntax.

 
I followed a tutorial from kilobolt.  I found it very detailed and covers creating your own game framework.   I found it a great way to understand game mechanics.  Including creating your own physics,  for my later games I used a physics engines, but was still nice to understand this logic. Tutorial below.
 
http://www.kilobolt.com/game-development-tutorial.html
 
The original release of this game I was fairly happy with, although this was only available on Android, not iOS.  It also did not support hardware rendering.  I later did I big update on this game porting it across the libGDX framework.  This then allowed me to compile it for iOS and it supported hardware rendering.  Bit about this here http://digitalgeek.me/blogview.php?id=69
 
My next game, Spike Galore.  This was also written in Java, but used the libGDX framework.  This game was created to learn the libGDX framework.  With this knowledge I then ported my first game across to the framework too.   I also had to buy a Mac so that I could build the iOS releases!
 
Tutorial here
http://www.kilobolt.com/zombie-bird-tutorial-flappy-bird-remake.html
 
After this game, it was time to do something new.  I really liked the libGDX framework, but at times had found integrating the third party services (in-app purchase, ads, game services) a little painful.  When there was an update and it needed to be recompiled it would often break something.  It was also at a time when there was a lot of uncertainty on how to compile the iOS releases as the roboVM model they use to compile these releases had closed down.  I know I will revisit libGDX in the future, but for now it was time to try something new.
 
So, my next game, 100 Platforms was creating with Corona SDK framework.  This uses a lightweight language called Lua.  First I would say that I much prefer to code in Java.  I feel Lua misses the structure that a fully object oriented language like Java has.  My lua code is harder to read and not as efficient as what I code in Java.  This might be just my coding as i'm still getting to grips with the new language, i guess I'll see.  But language aside, i'm finding the Corona SDK framework great.  Adding third party services is usually painless with a  line of code.   I really like the transition libraries, you can create some great graphic effects in a few lines of code.  This was also my first game to use the Box2D physics library.  Previous games had coded within the game loop how to handle gravity, collisions and velocity.  Using the Box2d made this easier.
 
There are a lot of tutorials online, i followed this one, it's a little out of date as it uses some old libraries but I found it usefull.  
 
https://www.youtube.com/watch?v=0GtUxdSeWzk&t=1s
 
My current game, Lost Little Spaceman, is in development and is using the Corona SDK framework again.  I feel i'll keep with it for now.
 
Over the last year or so I have tried a lot of IDEs,  and have settled for InteliJ IDEA and use bitbucket for code repository.  I know a lot of people love Eclipse, but I ran into a lot of issues building my project with libGDX and found IDEA handled things better.  It's also what Android Studio is based on.
 
After the last year or so, would I do anything different? Probably not.  I would not start developing a game now using my own game framework, as I did for my first game, but this was a great way for me to learn simple game mechanics and helped me with my later games using their own frameworks.  Going forward, for now i'll stick with Corona SDK,  however I might take a look at Cocos2d at some point and if I was to create a 3D game (Dave Dangerous 3D?), I would probably look at Unity.  
 
My most useful resource has been Google and YouTube :)
 
#coding #gaming

Comments

Back to blog