1

The Video Game Development Process

Anthony Manion

Software Engineering

University of Wisconsin – Platteville

Abstract

A popular video game can be one of the most widely known and distributed pieces of software around. A software system of this complexity and popularity must depend on a proven process in order to be successful. With multiple departments, multiple individual experts, and a myriad of software tools required to create a video game it is impossible to develop a video game without a process. The most important aspects of a video game from funding to the engine the game runs on are addressed by this process. The video game development process outlines the steps and tools required to build the most simple of video games to the next blockbuster hit.

Introduction

There is no denying that video games have become an integral part of modern entertainment culture. With gamers averaging age 34 and have been playing since age 12, it is little wonder that the video games have become a $10.5 billion industry, and is only growing. From the most graphically intense PC game, to the most basic cell phone game, video games are pieces of software. And like all well-crafted pieces of software, they rely on a rigorous process in order for them to be completed successfully. Unlike most business focused software processes, where agility and speed are the primary focus, the nature of video games as an entertainment medium and as a software product limit the flexibility of the video game development process. Ranging anywhere from a few months to upwards of five years, the process of developing a video gamegenerally follows the same process.

Overview of Development Process

A video game can be developed in many different ways. The two most common ways to develop a game are either independently, or through a game development studio. For independent developers, games are developed by a small team or individual creator working to complete their own game [10]. The games independent developers often produce are more personal games that often attract more of a niche market than those developed by major studios. The major studios can have upwards of one thousand people all working on the same game.

The process of developing a video game may vary from developer to developer, but by in large they all follow the same basic process. This process is essentially a modified version of the waterfall model where the phases are performed in order and there is little going back once moving to the next stage. The basic waterfall model looks like this:

Figure 1: The Waterfall Model. [15]

The video game development model could be considered a more basic and less rigid form of the waterfall. Unlike the traditional waterfall model the video game development model has a bit more ability to go back to a previous process. The videogame development model also contains fewer phases, but each phase is made up of multiple steps. Most of the looseness of the model takes between the production phase and the post production phase, when testing and bug fixing can sometimes cause major rewrites to the game. The video game model looks like this:

Figure 2: The basic video game development model.

While the model may look simpler than the waterfall model, each of its three phases are filled with their own complexities. In its own way, each of the phases of the traditional model is contained within the video game model. Most importantly, “The process needs to be efficient right from the conceptualization stage, and all the developers and designers should have the same vision that the designers originally have.” [12]

Pre-Production

Pre-production encapsulates the Requirements and Design phases of the traditional waterfall model. The genesis of the process comes from the game concept. The concept of the game is the story, theme, or idea. Without this there would be no game. The concept can come from a number of places including: an original concept, a sequel to an existing game, a spinoff based on an existing game, a game based off a TV show, comic or movie, or any number of other places [13].

Acquiring Funding

When the concept has been decided upon, a formal pitch is made to investors to receive funding. This is where investors of major studio executive developers make the decision of how much money, if any, they will put forth for the project. This step is the first major milestone for a game, because without funding, there is no way to pay for all the developers and artists who will realize the game.

For independent developers, this can be more difficult because they don’t have the track record that major developers have. Independent developers can range from one to two people or a small group who organize themselves to a small independent studio. These small groups often get their funding from investors who the pitch their game to individually, through government grants, or through crown sourcing through avenues like Kickstarter. Just because the independent developers don’t have the full weight of a major studio like EA Entertainment behind them doesn’t mean that they won’t necessarily be as successful. A small company like Mojang, creators of the popular game Minecraft, has made multiple millions of dollars with a staff of only a few people.

Design

After the first major milestone of funding has been secured, the preliminary design work can begin. This is where the game gets more clearly defined, and the scope of the game gets defined. If during this phase it is determined that aspects of the game are unfeasible, they can be altered or negotiated for, but if a solution can’t be found, the game could be canceled.

One of the first big decisions the developers have to make is what platform or platforms the game will support. A platform refers to the type of hardware the game will be run on. The types of platforms vary widely and cover all sorts of devices from smart phones and tablets to game consoles and PCs. The type of platform a game is intended to run on can put some major limitations on the game itself. Smart phones and tablets are limited in memory and processing power, with the processor running only about 1.9 GHz; thus limiting the graphical intensity of the game. PCs, on the other hand, can have extremely sophisticated hardware where even the most graphically heavy game can be run without much load on the system. PC processors alone can run upwards of 4 GHz without having the most sophisticated system. Gaming consoles like Microsoft’s Xbox 360 and Xbox One, and Sony’s PlayStation 3 and PlayStation 4 have hardware capabilities far greater that a smart phone but less than the average gaming PC.

Major programming-related decisions must be made in pre-production. At the top of that list is what type of game engine will be used. A game engine is the framework on which the game is built and ran. The engine a game runs on can refer to both the actual “Game Engine”, or for more specialized games the “Physics Engine”. For developers, it provides tools for rendering, coding, and editing all the assets of the game. It allows development of various complex game assets like the environments, lighting effects, sound effects, and scripting the behavior of non-human controlled actors. Game engines can be very flexible, allowing developers to put more focus on things from higher frame rates or having large open-world environments with many individual AI units and an interactive environment [8]. Physics engines are a more specialized engine concerned with controlling how all the objects move on the screen. These engines mostly focus on detecting when two objects collide and how those objects should behave given the collision. Game and physics engines can be exceedingly difficult to create; that is why many game developers simply license one from various software companies who specialize in creating these engines. Some of the more popular licensed game engines are Source by Valve, Frostbite by Dice, and Unreal by Epic.

Along with these programming decisions, as well as preliminary art direction and level design, a detailed Design Document is produced. This document outlines all aspects of the game that must be accomplished before the game is launched. Along with this document a schedule is produced that lays out when each major component of the game must be completed for the game to be finished on time.

Production

With the onset of the production phase the hard work really begins. In this phase the game gets implemented. The most amount of expertise, funding, and time is used in production. All of the various departments work simultaneously together to get the game done on time; although, for independent developers the various departments are all made up of the same few people. Within the programming department, all the various teams are working in tandem to support each other. The things the programming teams are responsible for are the tools, game and physics engines, user interface support, and artificial intelligence (AI) scripting. Scripting is programming of any in game elements that behave without user control or in response to user control. This can vary from how computer controlled players behave to how the environment behaves as the user moves through it.

The tools are the things used by the game that the user never sees but makes the game run more smoothly. These tools help get in-game assets to the engine in an optimized way and help keep the game engine working as efficiently as possible. Tools can also refer to custom software the other developers use to make the game. Usually these tools are wrapped into the game engine development kit, but custom changes to the kit could be required to accomplish the development of particular game aspects.

The user interface programmers make all the menus and any of the non-main-gameplay screens used in the game. These user interfaces can range from the main menus used to set up all the in game options and actually launch the game, to what the user sees displayed while the game is taking place. The latter example is often referred to the “Heads up display” or HUD and conveys valuable in-game data to the player.

Figure 3: An example of amain menu style user interface.

Figure 4: An example of a HUD style user interface. [3]

Building an Engine

If the developers decide to make their own game engine, the amount of work that needs to be done during production increases exponentially. A game engine consists of three major areas:, a rendering engine, a physics engine, and the tool kit that allows the developers to use the engines.

The Rendering Engine

A game engine must be able to render all the game objects on the player’s screen, or the player will have nothing to look at. The hardest aspect of rendering is getting the objects to look as lifelike as possible. Objects in a 3D environment are far more difficult to represent than 2D objects. Where 2D objects are simply drawn on a plane, 3D objects must be constructed out of hundreds to thousands of polygons. The more polygons an object has the smoother and more lifelike it looks. A great example is the graphical improvements seen in the franchise Halo:

Figure 5: Graphical Improvements of a Halo Character [1]

The difference from the blocky, hard-edged character on the far left and the finely polished character on the far right is astounding. The most impressive aspect of this character is the amount of polygons in the weapon of the fourth character has as many or more polygons as the entire first character and weapon.

Having a large number of polygons in an object is only part of the difficulty of rendering a game. Another aspect is trying to color the objects. This involves shading the objects to give them color. There are four main ways used to give 3D objects color: Flat shading, Gouraud shading, Phong shading, and texture mapping [13]. In Flat shading a single color is assigned to each polygon. While this method is the fastest to process and render, the result is less lifelike especially if the object has fewer polygons. A solution to this is using Gouraudshading. In this type of shading, a color is assigned to each vertex. Colors are then blended across the faces of the polygons. This type of shading is more complex but it does make the objects look more natural.

Figure6: The same object with Flat and Gouraud shading applied [13]

Phong shading is the most complex type of shading. Phong improves upon Gouraud by averaging the color of each pixel based on the colors adjacent to it to create a smoother surface. The most commonly used method is texture wrapping. Texture wrapping involves taking another image, created by the art department, and wrapping the object with it, like wrapping paper around a gift. The aim here is not to have to calculate a color for each polygon on the fly but rather have a known image applied over the whole object.

The Physics Engine

If the game requires a lot of object moving and interacting with each other, a robust physics engine will need to be developed as part of the larger game engine. A physics engine controls the movement and interaction of all the elements on the screen. Using vector mathematics (linear algebra) in combination with Newton’s laws of motion and various other physics equations, the engine can break down the movement of every object into smaller equations for each axis: X, Y, and Z. A basic process a physic engine can follow to simulate the motion of an object can go as follows:

  1. Determine all forces that are acting on the object
  2. Add the forces up to get a single resultant or “net” force
  3. Use f = ma to calculate the object’s acceleration due to those forces
  4. Use the object’s acceleration to calculate the object’s velocity
  5. Use the object’s velocity to calculate the objects position
  6. Since the forces on the object may change from moment to moment, repeat this process from step one forever. [8]

This process is used for each object for each moment in the game. For most games to look smooth, that’s at least 30 or moretimes per second. To add to the complexity, the physics engine also has to detect when two of these objects collide and what to do when that happens. A basic collision detection process is as follows:

  1. Split the environment into sections via a grid, a quadtree for 2D environments, and an octree for 3D environments.
  2. If two objects are in the same section of the grid, use a simple collision detection to determine if they are colliding.
  3. Break the objects down into bulky shapes and determine if they are colliding.
  4. If you still think the objects are colliding, use a more thorough algorithm to get the final word on if they're colliding.
  5. If they are colliding, extract information about the collision and figure out how to make the objects react. [8]

The final major step in creating a game engine is developing AI scripting tools. AI scripting involves writing rules and characteristics of all the video game objects that the player doesn’t control but can interact with. These are commonly referred to as “NPCs” or “Computer Players.” This involves quite a lot of expertise and behavior programming. Overall the task of developing a game engine is a one that few developers would want to take on.

Using Tool Kit

Once the game engine and all its components have been completed, the work of actually building the game can start. All of the work the artists, audio engineers, and other designers can now get fully realized in the world of the game. Using their engine the developers perform a variety of tasks: the two biggest of which are building scripts and implementing scenarios. Scripting involves using the game engine’s scripting tools to design and build the computer controlled aspects and objects used within the game. These include NPCs and scripted environment events. Scenarios are the activities the player is intended to play through. These scenarios can cover everything from laying out the environment that the player travels through to incorporating the scripted events and NPCs in that environment to complete the gameplay experience. Once the gameplay experience has been completed to a stable point the game can then transition into post production.