How to make games

Three years ago I was doing volunteer work on a farm in Costa Rica. I was pushing a wheelbarrow of manure when suddenly I thought “I should make a game”. That was three years ago, I’ve since made ten small games, and am about to release my first full-length game.

In case you’ve ever wanted to make a game, here’s what I did:

Pick an engine:

Don’t make a game from scratch (unless you’re turned on by boring, repetitive tasks like writing math libraries). There are tons of super high-quality (and free!) game engines that take care of 90% of development, so you can focus on making games instead of your boredom fetish. You sick fuck.

Google around and check out different game engines that have pretty showcase trailers before eventually settling on Unity. Great! Onto the next step!

In all seriousness, Unity is probably the best engine for beginners as it has the most tutorials and largest community out of all the engines (since it was the first free engine that was actually decent). But feel free to shop around and check out the other engines…you’ll totally be able to make a great game in Unreal without any prior programming experience (moral: C++ is a bitch).

Now onto the work

Looking back, I notice I went through three phases; I’ll call them Tutorial, Tinker, and Commit.

If you know anything about programming you’ll probably fly through these. Actually, if you already know how to program why are you reading this?

I will now guide you through these phases:

Tutorial phase

This is the awkward cringey phase where you’re a total noob. Embrace it. You will experience the ‘tutorial polarity’ as I call it; an emotional pendulum that swings from ‘warm and safe in the guiding hands of the tutorial god’ to ‘wait, shit how did he do that? what the f-?! *clicks back 15 seconds and rewatches* the screen just changes and he’s done! wtf?!’.

You will politely ask dumb questions like “Thank you so much for your help with this! great tutorial! Just one quick question; I’m getting an error that says *proceeds to list extremely obvious error that tells you exactly what the problem is and what line you can find it on and could have been solved in five seconds by googling it*”.

Learn to google.

Here are some tutorial peoples I recommend:

Brackeys (logo shown, I started with this guy’s tutorials; great teacher!): 

Sebastian Lague:

BurgZerg Arcade (this guy’s a classic; though, his starting tutorials are a bit dated):

PushyPixels (they do some neat livestreams where you can follow along and ask questions):

Master Indie (used to be Eteeski tutorials):

est. time to complete this phase: one month

Tinker Phase

This is the magical phase where you move beyond relying on tutorials and actually begin applying what you’ve learned to come up with your own unique creations. Your Google searches will go from ‘how to make rpg unity’ to ‘how to save stats unity’. You start comprehending smaller scale problems and how you can solve them.

You will now experience ‘tinker polarity’, the emotional pendulum that swings from ‘fuck yeah, I got this’ to ‘fuck, I don’t know anything’.

est. time to complete this phase: anywhere from a month to years (more on this below)

Now for the final challenge: commitment issues.

Commit Phase

After a certain amount of tinkering (less than you’d think!) you’ll be ready to make your own game to share with the public. But you won’t. You’ll start working on a game, then you’ll get a better idea and start working on that instead, then you’ll get a better idea and start working on that instead, then you’ll get a better idea and start working on that instead…This is pretty much what the tinker phase is all about. You don’t want to get stuck in the tinker phase.

What separates the tinkerers from the game developers? Having a finished game. How do you finish a game? Pick something small that you can do and do it. Do whatever it takes! (justdoit.gif) To finish my first game I set a deadline of one week and used public domain art; you can play it here:( it’s total shit but it’s still a game. The commit phase is all about training the ultimate skill: the abilitiy to finish things.

Here’s a great article on finishing games by Derek Yu:

This article was what inspired me to get past the tinker stage; I was like ‘oh shit, that’s me; I have to change’ and I did. yeah.

Here’s some places to get free, public domain assets for your games:

est. time to complete this phase: three games

Congrats! you’re now a level 2 game developer!

Good luck!


The Competitor

It was a subtle and long-term plot: the pencil sharpener contained a bomb that would be activated after approximately 327 hours of usage. This had been calculated, through years of  incredibly minute research, as exactly the time it takes for an intern to reach executive level.

It would be devastating; they wouldn’t know what hit them. And the Moist’n’Merry Ice Cream company would be ready to step in to dominate the frozen goods market.


The Cat

Gertrude was a cat. It was a nice life; she had whiskers that let her feel and navigate the dark areas the larger, more vision-oriented creatures couldn’t.

Like right now, two of said creatures were fornicating in the corner of this dark chamber, unaware of the cat that had snuck through the drain pipe and was now listening, and judging.


Gilgamesh the Conqueror

Gilgamesh the Conqueror

The town of Ryst lay in ruins; Gilgamesh stood in the ashes of the last city to stand against him. The country was his; there were no more challenges, nothing left to conquer; all that stood ahead was the drudgery of managing an empire.

He drew the rune crystal from his pocket and prepared the spell to turn back time. The world blurred as he returned to his childhood; What should he be this time? Perhaps a singer; he could define a new era of music. Or maybe be a merchant again and create an empire of currency.


Killer – MiniStory Challenge

I’ve been wanting to improve my writing skills, so I’ve decided to challenge myself to write a couple short stories every week. Here’s my first entry:


Robert flipped open the heart locket showing him and his soon-to-be ex. Smiling, happy together. He closed it and leaned forward on the roof’s precipice, looking down his rifle’s scope. She was sitting 400 meters away with his old friend Mark. Smiling, happy together.

Safety off.

His cruiser’s radio buzzed, “Robert, there’s been a double homicide on 31st Street; can you check it out?”. He lifted the receiver and responded,”Roger that, on my way”. The receiver clacked down next to the radio. A streetlamp glinted off his police badge.


InterSection Art Direction

[This is a repost of a post I had originally made on indieDB last year]

When I first started developing InterSection as a full game, I had no idea the art style would end up with the simplistic vector art style it has now.

I had originally made InterSection for Ludum Dare 30, where the ‘art style’ was blue and red blocks:

After I started working on it more, I figured I’d continue working with this style and just try to make it look better:

But people on the devlog kept saying they felt the worlds needed something to distinguish themselves more.

Somehow I got the idea to maybe have one world as dying and the other as young, with you trying to save your people by bringing them to the young world. So I put together some concept art which people liked a lot:

It presented an interesting story and was a hell of a lot better than whatever weird abstract route I was originally thinking of going. (one person commented they had expected it to go the ‘neon abstract geometry’ route, but liked this style a lot better).
But how was I going to convert this to 3d? I had very little knowledge of how to make 3d art, besides some simple modeling skills in Blender.
First I tried making a poly-heavy tileset:

but it was way to graphics intensive and just looked like floating chocolate bars.

I had seen some interesting art styles in the Art section of Tigsource, so I decided to try imitating this one that was becoming more common: unlit, flat-colored models. It looked good and I was able to make it easily.

People liked it, I liked it; it was a win.

Now for designing the main character. I had done a lot of sketching to try and figure out what I wanted the main character to look like.
Some speed paints when I was still designing the main character:

Then, I believe, I was looking at pinterest for ideas when I came across some pictures of Oriental-styled people :) that I liked a lot. I sketched the main character with some simplified clothes design, added the hair-style from the picture, etc. liked it a lot, and modeled/textured her:

Showed her to my feminist friend (just in case 😉 ), and she approved, so I was good to go .

This is what the game was looking like at this point:

Time to tackle the background.
I threw some textures around, added some particles, some colors, some bloom(of course), and ended up with something not bad:

I still need to add something to make the actual intersection point of the worlds look nice, but I haven’t been able to think of anything that would be interesting yet non-intrusive.

That’s all for now!


Making AI’s that play games

For my Computer Science course we’re making AI’s that play a simplistic game called “The Robot Game” (two player strategy game, you can look it up, there’s a whole subreddit dedicated to it). Once we’ve finished our AIs we’ll pit them all against each other and see whose is the smartest.

Right before we were assigned this, I had discovered a page about machine learning in games ( There was an interesting section( discussing the problem of making AI’s for StarCraft. Turns out, there are competitions where people make bots for StarCraft (the first one) and pit them against each other (On a side note, I also found out people make AI’s that speedrun games, thought that was cool). There are a plenty of challenges to making these AI’s, as StarCraft is a really complex game, but what caught my attention is that no bot has been made that can challenge a decently skilled human player.

This reminded me of Google’s DeepMind AI, which is currently about to take on the world-champion of Go (sort of the Chinese version of chess, if you don’t know what that is). It recently beat a professional Go player (the first time a computer had ever beaten a professional at Go), and it was trained using machine learning and neural networks.

I’m curious to see how machine learning will be used in the future for games. Right now, it’s not really necessary, as AI is pretty basic in most games, with simple state machines providing fun bots. But, in the future, games on the level of complexity of StarCraft might become more common, and developers will have to start experimenting with machine learning. I’m really looking forward to seeing where that will go.


A guide to actually finishing games

For rookie game developers, a common habit is starting lots of projects and not finishing any of them. To clarify, this is a bad habit; the habit you want is the one where you finish lots of games. To help you along (assuming you’re a rookie game developer), I’ve written a handy guide to actually finishing games:

Know your abilities: Are you a noob coder?  Then don’t do some large-scale multiplayer procedurally-generated roguelike rpg; you’ll never finish that. Instead try making a simple platformer. If you want to make something with innovative mechanics, remember that some of the best inventions came from working around limitations. Don’t deny your limitations, embrace them.

The same goes for art; what are your artistic abilities? If you can’t draw an anatomically-correct stick figure, and you’re last notepad doodle was that strange ‘S’ thing, consider using abstract shapes. You can achieve amazing things with simple art and just a little bit of knowledge on color theory. Even black and white art with simple shapes can look good:

Screenshot from a jam game I made, ‘It’s The Room’.

Plan, plan, plan: When I start a new game I like to write down on a big piece of paper every mechanic, every possible script I’ll need, and every animation objects will use. I then draw lines connecting everything and short blurbs explaining what they do and how they’re activated or used. I divide everything into individual parts, and try to figure out what can be reused. E.g. a script  controlling humanoid movement can be used by both the player and an AI if set up properly. This way I don’t need to copy code between scripts, saving me time.

Get to work: For small games(which is what you want to start with), I don’t worry about creating a schedule, but it gets really helpful when working on longer-term projects. If you’re still a rookie developer, you’re going to want to stick to the old, reliable ‘make game when I have free time’ schedule. When you’re ready to develop, pick something off the design sheet you made, work on it until it’s done, then pick another part and work on that. Repeat until game complete!

Then just repeat this whole process five times or so and I’d say you’re ready for a big project.


Self Review – Shadowless

Shadowless, my first game.

Pretty badly made, still has the old default Unity Gui. The animations are from the Standard Assets as well. All the art came from Reiner’s Tilesets.

But still, my first truly original game. The mechanic is simple: the bad guy doesn’t have a shadow, kill him within the time limit. I remember my first real ‘game design’ thoughts coming about, stuff like “how can I make so that this is always winnable but still challenging?”. I made all the gnome guys walk through shadowed areas, so you’d have to figure out the best spots to watch them. I’m a little surprised at how much depth there is in this game (not that much, but more than I remembered), though it’s not really noticeable considering how short the game is.

I was inspired to make Shadowless after reading Derek Yu’s article on Finishing a Game. I had been trapped in the cycle of “start a game”/ “I’ve learned so much! *drops project and starts something else*”/*repeat*, so I made a plan. I took an idea I had had of ‘bad guy with no shadow’ and decided to make it in one week. It took two, but I blame midterms. It was an incredible learning experience, not just with programming, but in what it takes to finish something.

I did everything it took to finish it; used public domain art, put some crappy music together (proud of this track actually) on a free music composing program, used really code, and of course the horrid Gui. But I did it. And I could show it to people. That’s my favorite part of making a game, watching someone else play it.