Everything2
Near Matches
Ignore Exact
Full Text
Everything2

how video games are programmed

created by robocoder

(idea) by robocoder (1.5 y) (print)   ?   (I like it!) 1 C! Fri Feb 02 2001 at 22:22:39

How video games are programmed

Programming a modern video game is a major software engineering effort, usually requiring the work of a large team of programmers.

  • The art pipeline

    The programming tasks can be broken into two parts, code that runs the game (the game engine) and tools that process the data into a form the engine can use. Most often, off the shelf tools are used to create the art for the game. A variety of 3d modeling, animation and image processing tools are used by artists to create the raw materiels for the game

  • Tools programming
    Some teams use a custom tool to actually build the levels in the game and such a tool usually includes a limited ability to manipulate the 3d objects generated by the artists. This tool also puts the world, the objects, animations, textures into a level file. This file is ready to load into the game.

    So why do you need to process the data? Well there are a few reasons. Alot of times you can pre-process the data to do some time consuming calculations on the tool side, so your game doesn't have to spend valueable CPU time, when it doesn't need to. Also, the format that the 3d modeler and animation programs produce are probably not going to be the best data for the hardware to display. These tools massage the data into the ideal form for the game to draw at optimum speed. Sometimes it's also possible to compress the data, to decrease the time it takes to load and the amount of ram it takes up once it's loaded.

  • Scripting Vs. programming
    Some might argue that scripters are programming the game and this is perhaps a valid arguement. The complexity of a scripting system can easily approach the complexity of the actual language used to program the game. On the other hand, some systems have little or no scripting at all, limited to placement of game elements and simple activation of the placed objects based perhaps on where the players character walks.

  • The game engine
    It is at this point that the engine programmers job begins. The actual game code is ideally content free. In other words the game is made mostly by the level designers, artists, and scripters. So if the content isn't in the engine, what is in the engine? The engine contains the code that draws the world and the objects in it, animates those objects, checks for user input via the joypad, checks for object collisions, handles loading and unloading of level data, manages the score, plays music and sound effects, and runs the scripts and game ai. Usually a code module will exist that handles the players character, causing the player's avatar to run, jump, swim, fight or do whatever it is the player is able to do.

  • Sound and music Usually a module for sound and a module for music is created. The sound module handles allocation of the hardware resources or voices. The music module for modern games is usually responsible for streaming small chunks of the song into sound ram. See how video game music is created for an in depth look at this process.

  • Physics
    You shoot the glass, and it shatters - in an absolutly 100% accurately modeled way. In a PC simulation, this is probably a good thing. Sim heads love this kind of stuff. In a video game most gamers probably won't notice. But, the programmer was way into it, very proud of it, and probably had a blast coding it. So who's to say it's a bad idea? Except for the fact that the game isn't fun. Or it didn't ship on time (Did it ship at all?). Or it had too many bugs.

  • Debugging
    This is usually a big challange on any project, video game or otherwise. But it becomes an even bigger challange when the hardware you're developing for is beta (not yet finished) and your development system may have problems, both hardware and software. It could very well end up that there's limited debugging capabilities(like no debugger, just printf), incomplete or just plain wrong documentation, and hardware that actually changes on you. Even if the developement environment is good, eventually you'll run into a bug that only happens on the actual game system.It's a little bit like doing embedded systems programming. This sucks.

Just ship it.
One of the most difficult and nebulous concepts in video game programming is sometimes refered to as fun factor. In this age of lightening fast supercomputer video game systems, in the midst of flashy graphics, sound effect, cinematic musical scores, it's easy to overlook. It's also impossible to quantify. What is it that makes a game fun? If I knew the answer, I'd be rich. But I think you can get a clue about how much fun it's going to be, by whether the people who made the game enjoyed making it.

printable version
chaos

A computer with two mice How video game music is created NES programming Well if it's gonna be THAT kinda party, then I'm gonna stick my dick in the mashed potatoes!
How video game art is created scripting game engine embedded programming
get a clue texture map Enigma Variations PlayStation
avatar The Answer 3D snuff film
launch title How interactive fiction works (part 4) printf supercomputer
Image Processing StarFox Tony Hawk's Pro Skater 2 Beginning Linux Programming
Y'know, if you log in, you can write something here, or contact authors directly on the site. Create a New User if you don't already have an account.
  Epicenter
Login
Password

password reminder
register

Everything2 Help

Cool Staff Picks
After stirring Everything, these nodes rose to the top:
Brought down as White, kept down as Black, brought up as None, left with me
Teenage Dirtbag
The stars stood still and naked
Indian Removal Act
New Jersey disasters
Babylon
Goblin Market
Note to self: Ignore the troll
Khmer Rouge
Indiana Jones' Crusade for the Perfect Female, or Why We Go Grail-Hunting
Teach Your Children Well
The Imperial Roman Army
Bauble
New Writeups
dagnyswaggart
Dissolve like dreams.(personal)
XWiz
Trism(review)
artman2003
Briefcase Full of Souls - Part I(fiction)
Dreamvirus
Alan Ladd(person)
waverider37
Harold Holt(person)
The Debutante
Until death do us part(fiction)
Ysardo
a brother to a sister(personal)
antigravpussy
your warm whispers(personal)
Clarke
Multiculturalism(idea)
aneurin
Earl of Landaff(person)
Heitah
Pseudocide(idea)
XWiz
Google Knol(lede)
Mythi
July 24, 2008(personal)
locke baron
The fall of Earth(fiction)
BookReader
Fear the Cold(dream)
This page courtesy of The Everything Development Company