The Software Engineer's Guide to Getting Started with Game Development

Published Mar 07, 2018Last updated May 27, 2018
The Software Engineer's Guide to Getting Started with Game Development

Software engineers spend their days solving tough, complicated, and important problems. We need to understand a broad range of technologies: from programming languages, to frameworks, from internet architecture to networking, operating systems, and much more. However, if there’s one thing that many software engineers are just a little bit overawed by, it’s video game development.

When I told a software engineer friend of mine that I was interested in exploring video game development, the look he gave me is best described as concern. “Doesn’t video game development involve lots of super hard math?” he said, furrowing his brow.

This was once true — game developers used to build their own physics and graphics engines. However, with the advent of accessible game development platforms like Unity and Unreal Engine, many of the low-level problems in game development can be abstracted by using the graphics, lighting, and physics engines these platforms provide.

Your Very First Game

Software engineers who are interested in game development have a significant head start. Programming skills are central to game development. Even if you’re more comfortable with Ruby, which is not commonly used in game development, you can quickly pick up other Object Oriented programming languages that are much more commonly used for game dev, like C++ or Java.

If you’re a Python programmer, you’ll be pleased to hear that Python has some game dev chops: it’s the language powering massive titles like EVE Online and Sid Meier’s Civilization IV.

eve-online.jpg‘EVE Online’, powered by Python.

The news is even better if you’re happy starting off simple with game development. Almost any programming language you’re comfortable with will have game development libraries that allow you to create basic games without straying too far out of your comfort zone.

  • Ruby has Gosu, a library that makes it easy to develop 2D games.
  • Python has PyGame, a library that empowers you to create both 2D and 3D games.
  • Phaser allows you to create games with JavaScript and HTML5.

Start Small

Experienced game developers recommend that your first game be as simple as possible. In general, the first project recommended to most budding game developers is building a Tetris clone.

Because the game art and sounds in Tetris are so simple, anyone can produce them. For Tetris, putting together game art will involve drawing simple colored squares and an interface that is as minimalistic as you want it to be. Even if you use third party art and sounds in future games, producing your own assets initially will help you better understand the process.

Tetris-VeryFirstVersion.jpg
The very first version of Tetris, created by Alexey Pajitnov.

Despite its simplicity, Tetris is a complete video game that will introduce you to many of the fundamental concepts of game development (except AI, which we will touch on shortly). Most importantly, implementing Tetris will force you to create a game loop, which lies at the heart and soul of video game development.

If you’re not a Tetris fan, another good first game development project is Pong. Pong also features simple graphics you can create on your own, minimal sounds, and a game loop. If you want to learn about making multiplayer games, allow matches to occur between two human players over a network. If you want to learn about AI, allow the player to challenge the computer.

If the idea of starting with Tetris or Pong is yawn-inducing, don’t be afraid to jump into an idea you are passionate about, even if it’s much more ambitious. Your passion for the idea will carry you through difficult challenges, and spur you to learn new skills. Eric Barone, the creator of Stardew Valley, taught himself to create pixel art, sound effects, and an intricate soundtrack in order to make his vision a reality.

stardew.jpg‘Stardew Valley’ by Eric Barone.

The Major Components of Game Development

Video games are combinations of many elements that come together to create an immersive experience. Below is an introduction to each element, as well as some tips on where to start learning it.

Story

Storytelling in video games is different from the kind of storytelling found in fiction. Even if the story is fundamentally linear, the player must feel like their actions have an effect on the story and are driving it forward. For non-linear storylines, the player’s choices actually do shape how the story unfolds, but this introduces extra complexity in ensuring that all possible choices lead to a satisfying — if not necessarily favorable — outcome.

Learn more about this in the book Video Game Storytelling: What Every Developer Needs to Know About Narrative Techniques.

Artificial Intelligence

In the realm of video games, AI generally refers to developer efforts to ensure that characters in games behave realistically. Common AI applications include:

  • Pathfinding: ensuring that characters in the game can intelligently navigate from point A to point B, even if events in the game have created new obstacles.
  • Combat: complex sequences of rules allow enemies in video games to make smart tactical decisions in combat, such as seeking cover before reloading a weapon.
  • Goal oriented behavior: setting goals and behaviors that help reach those goals, rather than explicitly scripting behavior.

To learn more, check out Introduction to AI Programming for Games by Ray Wenderlich.

Game Art and Textures

Game art is the medium through which the game world is presented to the player. In a sense, all the programming effort that goes into making video games is an attempt to turn game art into something that feels responsive and alive. Game art is an umbrella term that includes textures, 3D models, sprites, particle effects, and lighting.

Music and Sound

Unlike in the real world, video game sounds cannot be made by accident. Every sound in the game universe must be added by hand, and it is through layering these sounds that the game world starts to feel lifelike. You also need to be mindful of sounds triggered by the player, by other characters, and ambient sounds that create the gameworld environment.

Another ever-present facet of video games is music, used to create an emotional response in the player or removed entirely to leave behind an eerie silence. Unlike most compositions, video game music must loop seamlessly. It must also transition smoothly to new compositions based on in-game events, such as being spotted by an enemy.

rebecca-oliver-483486-unsplash.jpg
Photo by Rebecca Oliver on Unsplash

Lighting

In games, you can’t rely on natural light sources to illuminate your video game. Every light source in a video game must be added by hand and light manipulation is incredibly important. Light can be used for all of the following:

  • Controlling the player’s ability to see. Particularly in horror and survival games, light is a resource that must be carefully managed.
  • Controlling a player’s ability to be seen. In games with an element of stealth, dark areas can provide cover while well-lit areas represent a difficult challenge.
  • Setting the mood. The quality of light can be used to set the mood, with sunny and bright lighting associated with happy times and brooding light associated with dark times.
  • Lighting the way. Light can be used to direct the player’s attention. The best designed levels in video games often make clever use of light to guide the player in the right direction when they might otherwise be lost.

This tutorial covers some of the basic principles of lighting in video games.

Level Design

In many games (Portal 2 for example), the level itself is a challenge, trickier than the smartest AI enemies. Series like Tomb Raider and Uncharted also emphasize complex and challenging level design.

While the advent of open-world games may make level design seem less important than in bygone times, it’s worth noting that even open-world games have ‘levels’, such as a particular building, structure, or map area you must enter to achieve a goal.

To reduce player feelings of being railroaded, levels will ideally have multiple possible paths through them. How do you allow players to take multiple routes while still ensuring they don’t miss out on important goals or essential bits of information? Such is the challenge of level design.

To learn more, check out this Beginner’s Guide to Designing Video Game Levels.

super-mario-bros-level.jpgLevel design in Super Mario Bros.

Making Your Dream Game a Reality

If you want to produce a game, it’s important to be realistic about the kinds of games that are feasible for one person to make. Solo developer success stories like Stardew Valley, as well as Papers Please, Banished, and Avernum, have encouraged lone developers to reach for lofty heights.

Remember: none of these games were weekend projects. Banished took 5,500 hours to make (roughly three years of effort at 40 hours a week), and Eric Barone worked incredibly long hours over four years to produce Stardew Valley.

This article assumes you’re a software engineer by trade, and as such, are not likely to have more than a few hours a week to devote to game development. If that’s the case, my advice is to focus on creating a game that does only a few things, but does them very well.

Lucas Pope’s (the creator of Papers Please) games are an excellent example of this. Sometimes called “document thrillers,” his games focus on simple mechanics that test the player’s fastidiousness and attention to detail. Pope is a regular participant in Ludum Dare, a game jam with a 48 hour time limit.

The time constraint ensures that games must be boiled down to essential elements that make them fun, with less important elements (such as shiny graphics and intricate sounds and music) left out completely. For a software engineer dabbling in games as a hobby, participating in weekend game jams like Ludum Dare are a great way to improve your game development skills.

papers-please.jpg
‘Papers Please’ by Lucas Pope.

If you’re not content making games that are limited in scope, your best bet may be to team up with others. Find people with complementary skills so you can focus on the areas of game development you enjoy the most. As a programmer, you bring skills to the table that are extremely valuable to game designers who may have ample creative skills but lack the technical chops to make their vision a reality.

If you can’t find anybody to team up with, consider getting involved in the modding community for one of your favorite games. Getting involved in modding will teach you how your favorite games are made and allow you to focus on the areas that interest you most: from programming, to art, to 3D modeling, to level design.

What’s Next?

I hope that after reading this article you no longer feel that getting started with game development is in the ‘too hard’ basket. As someone with programming skills, you have a massive head-start on the average video game hobbyist who wants to learn how to make a game. Here are the points I hope you’ll take away from this:

  • You can get started with game development quickly by using a game dev library built on a language you’re already comfortable with.
  • Tools like Unity and Unreal Engine abstract away some of the hardest parts of game development.
  • Start small, if possible, and build a clone of an existing game.
  • If you really don’t want to start small, start with an idea you’re passionate about.
  • If you want to make a big, impressive game but don’t have a lot of time to spare, consider teaming up with others or joining a modding community.

From here, the first thing you should do is make your first game. After you’re done, we’d love to see the results when you share them in the comments section.

Discover and read more posts from Tash Postolovski
get started