My answer to “How can I learn how to make games?”

Many people over the past few months have asked me “how exactly do you learn how make games?” For every time the question was asked I had to come up with a long answer, and because that question will probably be asked another huge amount of times in the future, I decided to write my definitive answer so that I can point people to it, and also so that I can improve it later on.

First off, I would like to say that I’m not a professional. Heck, I don’t even have a full officially released game yet. Over the past two years I’ve done lots and lots of prototypes, that is games that aren’t finished, but are just a rough draft of the final projects. I’ve mostly never finished a game because I lost motivation someway throughout the development process – sometimes I get very close to finishing, then just drop the project and start a new one instead. At first it may seem like a huge waste of time, but it actually isn’t. It generates tons of practice and experience for future endeavors, so don’t feel too bad about not completing a project. You probably learned tons of useful stuff from it and you’ll be able to apply it to newer projects.

To start off, decide what game engine you’re using. Of course this sounds like gibberish to someone who’s never programmed before, but try googling around for 2D game engines. Why 2D? Well, 2D games are easier to make – physics, art, and programming are way easier to manage in a 2D system than a 3D system. For starters, make sure you find a game engine, not a game framework (ex: PyGame). Frameworks give you the tools necessary for you to write your own game engine, but unless you want to focus on writing an engine rather than a game I recommend selecting a game engine. I wish I knew that when I was starting out.

I began with PyGame. It’s a cool framework, but Python is really not an ideal language for game development, and also because PyGame was a framework, I had to implement my own animation, physics, particle, etc. systems. They were less than stellar since it was my first time programming, and my game sucked. That’s okay – I learned a lot from implementing my own engine, but I don’t think it’s necessary to take that painful path – just use a game engine.

Next thing I tried was Flixel. It used the ActionScript 3 language and ran on Flash Player and Adobe Air – in my opinion vastly superior platforms than what Python offered. It was fun, and taught me even more. With Flixel taking core of the game engine, I was able to concentrate on actually making games.

Eventually, I found the Flash Player and Adobe Air platforms quite terrible, so I moved over to Haxe, which is an awesome programming language that takes the best of ECMA script syntax and merges it with some C++ goodies. It can also deploy to tons and tons of different platforms (mobile, native, web, etc.), which makes it usable for a gigantic amount of purposes. Luckily, there was a port of Flixel to Haxe, called HaxeFlixel. At the moment I’m using HaxeFlixel, but I might use Luxe and Snow from Snowkit one day.

Okay. Let’s talk about art now. I’m a programmer. I’m not a composer and I can’t draw anything decent. So, how do I get music and drawings? Well, if you look hard enough on google, chances are you’ll find open-source or creative commons (aka stuff you can usually use free of charge) both music and art that correspond with your game idea. Sites you can use are opengameart, freemusicarchive and nosoapradio, for example.

So, to learn how to make games:

1) Find a 2D game engine you want to use – make sure you its platform and programming language – USE GOOGLE

2) Read/watch tutorials about the game engine and its programming language (I strongly suggest learning the programming language before attempting to learn the game engine) – USE GOOGLE

3) Find art/music or learn how to make art/music – USE GOOGLE

4) Get some fun game ideas and try to make games out of them

Indie Quilt submission: Daring Ezkape

Indie Quilt is a game jam for charity. For some reason I was really compelled to make a small game that would fit right in. I was getting a bit tired of my huge-scoped projects, so a game I could finish within a couple of days was really refreshing.

Play it here:

http://jams.gamejolt.io/indiequilt/games/daringezkape/29334

A kid walks into a game jam

This is something I wrote in January 2014, I forgot about it for a while but I think it’s cool so I’m going to post it anyways. I hope this can help convince otherwise undecided people to come and join a game jam.


 

This year I decided to go to Montreal’s game jam after reading Noel Berry’s post-mortem on his entire development experience, really.

http://www.noelberry.ca/2012/07/years-of-game-development-adventures

I’m 16, and I loved the game jam. It started on a Friday evening and ended at 3PM on the Sunday of that week, which gave us more or less 48 hours to make a game.

Pre-jam (Friday early evening)

It was a bit awkward. I didn’t know anyone, but the food was great. Soon enough the game jam began and we all sat down in a classroom. We were roughly 150 people. Looking around, I could see beards twice the length of my hair. Thoughts like “Oh man, what am I doing here, I’m not even sure I can make a prototype in 48 hours!” started popping up and now I thought I had done a huge mistake. I was literally regretting the moment I clicked the “Register” button at the Montreal Game Jam website.

And so there I was sitting amongst what seemed to be seas of beards and seasoned developers. There was an introductory presentation followed by a few inspiring videos. Also the presenter asked how many people were attending their first game jam. To everyone’s surprise more than half the room raised their hand. Suddenly I felt a bit less anxious.

Now it was time to announce the theme. After a roaring drumroll, the theme hit us like a soccer ball right in the crotch (I know how that feels). It was “We don’t see things as they are, we see them as we are”. Silence. People scratching their heads and saying “Yeah, that’s a tough one”. After a few minutes of brainstorm I still haven’t thought of anything interesting.

Continue reading

Haxe command line argument parsing

I`m planning to make a game where the user will be interacting with shells, so I need to be able to parse some complex commands like

testcmd -testbool -testint 2 -testfloat 3.455324 -teststringlist what, are, we, testing, already?

I couldn’t find anything written in Haxe that would allow me to parse command line arguments, so I turned to C++. Pretty quick I found CLAP, and I decided to port it to Haxe. Took me a day, but worth it. Here’s the result: https://github.com/Ohmnivore/HxCLAP 

Website development with Docpad

I’ve tried web development once in the past with Laravel. It was fine, and quiet easy to get into, but I didn’t find it incredible. Docpad, on the other hand, is amazing. Seriously, it’s just so easy to get rolling. In a couple of hours I made this: http://ohmnivore.github.io/ , with almost no prior experience in that area.

Insomnia Haxe library

While working on my game SkullRush I realized that I couldn’t keep a server running 24/7 if my computer went to sleep after a while (duh). Google came to the rescue and I figured out it was possible to programmatically ask Windows not to fall asleep. Therefore I happily present Insomnia:

https://github.com/Ohmnivore/Insomnia

Open-sourcing SkullRush

SkullRush is now on GitHub: https://github.com/Ohmnivore/SkullRush

I realized that I was making SkullRush for fun. I know that it won’t be an easy game to market, nor do I have a lot of marketing opportunities. So, I’m just going to release the SkullRush source code so that it may benefit others and frankly I don’t have anything to lose. At the moment the source code is very messy, but I’ll clean it up over the next few weeks.

TileSetter

https://github.com/Ohmnivore/TileSetter

TileSetter is like a complimentary tool to Ogmo Editor. Anyhow, the above link contains all I have to say about it.

SkullRush downloads and links

Downloads

Links

Master server implementation in plain PHP

For my game SkullRush, users had to be able to browse a list of servers to choose one. This essentially allows users NOT to type in IP addresses manually and also allows them to see detailed information about each server. OK, let’s get to the point: what online game doesn’t have a server browser?

But why PHP you may ask? Before you shoot yourself, let me explain. The game I’m making will probably never be marketed and will never reach a large audience. Therefore the amount of players using the server browser is going to be very low. In that case a free hosting plan satisfies all my needs. However, I can’t expect a free hosting plan to have Django/Ruby on Rails support. That’s why I chose PHP. It runs on any hosting plan, I believe. In the end it also allows to re-host it in case the official master server goes dead (ex: avoids GameSpy and all the crap PS2 and retro PC players have to deal with). I also chose the Laravel PHP framework because it has some pretty good documentation and it was one of the first search results that Google showed me.

Continue reading