How did I start making video games?

Who wakes up one day and decides to write a video game into existence?

More often than not, it’s a gradual thing, with many steps building up to a decision. For me, it was a lifelong obsession starting with 4-year-old Boarmont playing Lemmings and scribbling puzzles on a long roll of yellow scrap paper. Over the years, I naturally gravitated towards games with increasingly complex editors, progressing through Jetpack on DOS, Virtual Pinball on Genesis, Age of Empires 1 and 2, and Warcraft 3. Eventually I graduated to ZDoom modding with Doom Builder and XWE, then finally dipped a cautious toe into the ZDoom source code itself. Game development has always been something I’ve not just wanted, but compulsively sought.



Smell that? That’s the smell of Cookie Crisp on a Saturday morning right before a new episode of Mighty Max.


Maybe people make time for the things they truly want to do. Or maybe that’s a bit dismissive and it only goes so far, because someone might want something but may need a bit of help knowing how to get there. So here’s my attempt at actually-helpful advice: do things one step at a time.


There is a concept in Object-Oriented Programming called “abstraction” where an object’s internal details can be strictly hidden from users because those users only care about the external properties. That’s jargony speak for “I don’t care how a thing works on the inside, I just want to use it.” Do you, dear reader, know how a vehicle's combustion engine induces air at just the right ratio to impel the vehicle forward? Can you build one right now? In a cave, with a box of scraps?


Don’t worry if you can’t; you don’t need deep car knowledge to get into a car and drive it. As a result, we can say the internal complexities of a car’s combustion engine are abstracted away from the external functionality of the car itself.


Wait, Boarmont, are you getting distracted? What does this have to do with taking things one step at a time? The answer to that question is yes, I am getting distracted. The answer to the second question is that abstraction exists everywhere in our lives, and leveraging it can be a powerful productivity tool. Abstraction can help break up a complex problem like game development into manageable components.


Maybe you think this is silly or kind-of-obvious. I promise it’s not; you may already know it, or maybe you don’t appreciate it yet.


You might say, “To make-eth a game, one must animate things in thy physics engine that renders thine animation using extreme graphics chipset processors! How doth one even start!?” Well, strange reader who makes Elf references and talks a bit like Rouxls Kaard, just break it into separate abstractions. How does one animate things? How does one render graphics? How does one physics? I learned how animation works without the physics or the graphics rendering. I learned basic physics before putting it in a game context. I learned mathy things and Linear Algebra in school before I even knew modern graphics are represented by matrices and vectors and stuff. Game development is the marriage of many individual disciplines.


I believe there comes a point where we realize the world is just made of LEGO bricks, and when you reach that point, you start to feel like Neo seeing the Matrix for what it is. Our world is often a giant combination of little problems acting together to create emergent complexity. All the solutions to the big problems emerge from combining those little problems. Kinda like Craig Reynolds’ simulated bird flocking demonstration, Boids.



Each “boid” follows its own little path, and the combined result is a mesmerizing dance of hundreds of digital birds making thousands of tiny digital poops all over your computer screen.
This gif was made from a snippet of this original video by Andrew Magill, under the Creative Commons Attribution 2.0 Generic license



I spent a lifetime curating these individual skills. You, reader, probably don’t have an entire extra childhood to spend on learning this stuff, but games these days use abstractions too. Engines like PhysX and Havok know how to physics on command so you don’t have to. Graphics libraries encapsulate the hardest math concepts. And animation... well, abstractions exist, but keep in mind Undertale was very successful with almost Microsoft Paint-level graphics and a strong vision.


Tools like Unity and GameMaker put all of the brainy internal details behind one big abstraction so you can just make. One of my first games was a white screen with a gif chasing the mouse pointer around. Sounds dirt simple, and it was made with the simplest tools, but it was an intellectual “foot in the door” and I’m proud of it. It compelled me to try something just a bit harder. It made me interested in falling down YouTube rabbit holes and my game development toolbelt grew naturally. It all starts with the simplest things, then abstracting away the difficult parts.



Amusing comic borrowed from xkcdhttps://xkcd.com/676/



There might be a perception that real game developers use C++ and DirectX and have no need for lovely abstractions or sanity, but the right tools for the job are the ones that you can use to make a game you’re proud of. Many people feel like making games in Unity or GameMaker isn’t “real” game development, but many “real” developers take advantage of these amazing tools. Perhaps that’s the biggest abstraction of all: if an average person played a great game, could they tell you what programming language or graphics library was used? Undertale and Hyperlight Drifter were made in GameMaker. Hearthstone, Cuphead, and my current obsession Risk of Rain 2 were all made in Unity. Complicated things like C++ can’t be that important for making great games.


So to bring everything back to the beginning, where do you start? I think I’d recommend using the easiest tools to solve the easiest problems. Make use of Unity, or GameMaker, or whatever tools make you feel confident. Let time, experience, and a good appreciation of simplicity grow your toolbelt. I wouldn't worry about making an ambitious game or solving every problem in the world, just make the simplest thing you can with the tools you know, enjoy what you can do, and if you truly want to make games, then I suspect you will be naturally compelled to try something slightly more complex and interesting for the next game.


Oh, and don’t forget to apply this last lesson to everything you do in life; the best tool is the one that gets the job done.




Comments

  1. I'm one of those people who always sees greener grass on the other side, but really, anyone can make almost anything on most engines using the right approach.

    ReplyDelete

Post a Comment

Popular posts from this blog

Demo is here!

Who Is This For?