Game development and archaic elitism

When you become part of the game development community, a recurring question you hear is some variant of “How do I get started?” or “What are the ‘right’ tools or languages to learn?”

I’ve also heard the same type of questions over and over again in the music scene. The answers are usually pretty good and straight forward. You choose the instrument that appeals to you the most, check out some tutorials and some basic music theory, and thrash around until you either fall in love with it or find out that it isn’t your cup of tea.

Now imagine if a newcomer asked a respected musician how to get started, and this is how the conversation went:

“I want to learn to play guitar and play in a band. Where do I start?”
“Well, first off, you’re going to need to learn how to make your own guitar from scratch.”
“What? Really?”
“Not only that, but you’re going to need to create your own recording software similar to Pro Tools. Don’t use Pro Tools. That’s for sellouts.”
“Are you sure? I just want to play music and write some albums.”
“Come on, a real musician will make his own instrument and recording equipment. Don’t take the easy way out and only learn to play the guitar. Trust me. You’ll be such a better guitar player after doing all of this.”

Never once have I heard a conversation as remotely asinine in the music scene as this (and considering the conversations I’ve heard between drugged up musicians during my time playing in bands, that’s saying quite a bit). Yet I see this kind of bizarre elitism in almost every conversation about learning how to become a game developer. I think this does a great disservice to the community at large.

The roots of “game engine elitism” are understandable. Back before GameMaker, Unity, Unreal, and all other engines were available for everyone to use, it did matter what engine you chose. It did matter whether you or your engine programmer where the next John Carmack, or just someone writing average code. It mattered how well your code was optimized because otherwise you weren’t going to be able to fit even a simple 2D game on a floppy disk. Even if it did it would probably drop frames to the point that you would have to restart your computer to exit the title screen. Back then these game engines weren’t free for everyone to use, which meant that to become a game developer you had to also become a game engine developer.

The entire scene around game development and the accessibility of entering game development have changed completely, yet due to this elitism we still give poor advice to newcomers. We often tell them to begin making small games like Tetris (to learn the basics of code and the process of finishing projects), while also telling them that to do so they must be learning how C pointers work and how to render triangles in OpenGL. What would have taken a day or two in Unity or GameMaker just became a month long crash course in software engineering. Most newcomers probably quit before they even figure out how to make the Tetris clone. How does this benefit anyone?

The majority of games that require incredible low level wizardry are the multi-million dollar AAA games that are pushing consoles like the PS4 and Xbox One to their absolute limits. The games that most beginners should begin making aren’t going to be pushing our PCs to the limits any time soon (unless they are writing code like this work of art).

When I began learning game development, the first thing I did was grab a book on C++ (because I fell for the trap that engines are for posers). Luckily I actually enjoyed learning C++ to the point that I could recreate a level from the Gameboy Color version of Harry Potter: The Chamber Of Secrets and run it on my Gameboy Advance using a flash cart. However I was overwhelmed by the sheer amount of engineering work it would take to make a Gameboy tier game, especially when you consider everything else that needs to be done such as game design, art, and music.

overlooker2A screenshot from my second game Overlooker 2

Eventually in 2015 I decided between semesters to sit down with GameMaker and make a basic game. 22 days later, I finished Overlooker, a Gameboy Color styled survival horror game. The game is far from perfect and far from what could be considered a commercial product, but it was a huge personal success. Not only that, but I felt like I’d learned more about actual game development in 22 days than I had in all of my time up to that point learning C++, as well as during my software engineering courses at university. When I had another 20-30 days between semesters, I made Overlooker 2 which was another big step up as the length of the game was longer and I added features such as an inventory system and save system. Having released these two games has given me the confidence to start up my own game development studio and begin working on my first commercial game Towards The Pantheon. I’m having a ton of fun!

pantheoncharactersThe main characters from my 2D RPG Towards The Pantheon

For someone who was more interested in the game development side of things than the game engine development side of things, it can’t be overstated how big of a deal it has been to use an engine like GameMaker instead of doing the lower level work like in C++.

What I think we should be doing is encouraging people to dive right into actual game development – basic scripting in popular game engines that allows them to see results quickly. Have them tweak variables and add small features to their projects to feel the excitement of having made a small game. It doesn’t really matter whether they choose Unity, GameMaker, Godot, or any other popular engine. What matters is whether they find out if they enjoy the process of making games. That process is much different than learning how the OpenGL pipeline works, or trying to figure out if they should use C and C++ instead of Java or C#. The worst scenario for a newcomer is the dilemma of trying to decide between SDL or SFML because they fear they will shoot themselves in the foot 2 years into development… before they’ve even begun their first full game.

This isn’t to say that people should be discouraged from digging deeper than the surface of game scripting. The opposite is true; people who naturally enjoy the software engineering side of game development should be praised and encouraged. We wouldn’t have the computers, the consoles, the virtual reality HMDs, the game engines, and so much more that exist today without the amazing work of software engineers. They are the mad scientists that enable game developers to do what they do. If someone wants to start from scratch, that’s perfectly fine and to that I saw run, don’t walk. But I think we are doing the future of game development a disservice when some of us look down our noses at people who start off using game engines. I think it would be better for newcomers to actually focus on game development than to risk having newcomers drop out because they got dragged into game engine development by elitism. When newcomers are told they aren’t “real game developers” because they are using game engines, we may be doing the equivalent in the music world of pushing away future James Hetfields from picking up a guitar… and I don’t think I need to tell you that there’s a very sad lack of bad ass rock musicians in our world today.

– Connor O.R.T. Linning