Computer programming takes our 3D models from static artifacts to dynamic, immersive 3D environments. What’s a game without programmers? A photograph! Our team’s motto “Wouldn’t it be cool if…” starts the creative phase of dreaming up scenarios for the game. It’s the level designers, 3D modelers, and programmers who bring these ideas to life inside the game. This post focuses on the programming side of our game design.
What is computer programming?
One thing our head programmer, Matthew Cormier, wants players to know is that programming isn’t the mysterious, obscured art that people often think of it as. Nowadays, computer programming is common enough that it’s being taught in general curriculum, in grade school and in college. And according to Matthew, it’s no different from learning how to read, how to write, or how to do math.
Programming and math are often lumped together, which isn’t completely right, but the relationship is understandable. They both require logical thinking and problem-solving skills; but you don’t need to be good at math to learn programming! On the contrary, if you’re a great story teller, you’d be great at programming, too. Programming is an exercise in asking yourself, “If I do this, then what happens? If I do that, what logically needs to happen next?”
Any changes that occur on-screen require programming: all game logic, sounds, music, input handling. If the “camera” moves, it requires a transformation to be done to each object that is seen. In other words, any time you move your head, the objects around you look different from the different perspectives you’re observing them from. Virtual reality environments require the same kind of response, and our computer programmer is responsible for making these movements and perspectives feel natural in-game.
Programming in VR Hoover Dam
Much like the omnipresence of our 3D models, players will encounter behind-the-scenes programming work in every aspect of the game: from moving around and looking around, to interacting with objects, listening to audio, and everything else associated with gameplay.
One example that players will really enjoy is a ladder they encounter near the end of the current game module. Climbing the ladder is based on Winthrop Davis’ oral history of when he had to do that at the canyon site to get a photograph of the high scalers in action. He said it was one of the scariest things he’d ever done in his entire life!
In the game, two things need to happen first for there to be any ladder climbing: 1) the player’s hand must hover over a virtual rung; 2) when they squeeze the “grab” button on the controller, then their virtual hand must grab onto that virtual rung, locking in the first “frame” of reference. From here, the player is holding onto the ladder in front of them, but in order for the player to increase in elevation and “climb”, we have to program the game so that players can hoist themselves upwards by physically moving their real arms up and down while also squeezing the controller.
In computer speak, as players reach for the next rung, an invisible “vector” (think: arrow!) stretches from the first rung to the next, representing the difference between the position a player begins in and the position a player moves to as they climb rung by rung. So the farther you reach in real life, the farther you travel in the game, which translates to a player scaling a tall ladder.
Game engines are software programs that aids in the production of a game. It’s a tool for anybody who wants to create a game, and the nice thing about using a game engines is that you can get up-and-running pretty fast, and even make your own game without a lot of prior experience. It provides many of the basic programming components a game needs: lighting, rendering, collisions, processing animations. It also supports many of the complex machinations we have dreamt up for VR Hoover Dam!
However, like any software, game engines have their learning curves. Game engines like one we are using (Unreal Engine) have different relationships with different consoles. Based
on the way they interact with different consoles, a programmer needs to narrate different ways for the game to interact with the console that is hosting the game, for example, Android, Windows, Mac. Ultimately, a computer programmer’s job is to spend a lot of time finding out how Unreal wants you to “do the thing you want to do.” Because when it comes to programming, the limits are boundless: if you can dream it, you can program it.
Wouldn’t It Be Cool If?
Game development constantly circles around the question, “Wouldn’t it be cool if…?” Luckily for us, our head programmer, Matthew, is always up to the challenge of bringing our “what-ifs” to fruition!
But again, it’s important to reiterate that you don’t need a background in math, in computer programming, or in computer sciences to build a game. In school, students are given algebraic equations and geometric shapes, and they’re asked to work with these out of context. In programming, the creative process triumphs over the logical problem-solving and math that a person needs to configure any given movement. As you program, you learn how computers work, and you pick up algebra and calculus along the way: but the goal is always to create. Math is only a stepping stone on the way to making something you’re passionate about.