Jerad Waas - Waas_Jerad - Evolution of Video Game Programming

Document Sample
Jerad Waas - Waas_Jerad - Evolution of Video Game Programming Powered By Docstoc
					             The Evolution of Video Game Programming

                                      Jerad Waas
                           Department of Computer Science
                          University of Wisconsin – Platteville
                                 Platteville, WI 53818
                                  waasj@uwplatt.edu


Abstract

The video game industry has seen major changes since its birth in the middle of 1900.
Some of the more obvious advancements include graphics and sound. However, other
differences include refined processes, specialty job positions, and an expanded market
now encompassing portable handhelds and cell phones. Throughout my presentation I
will discuss the history of the video game industry – from the origins to the present, the
various programming disciplines – ranging from the physics programmer to the user
interface programmer, the development process – starting with prototyping and ending
with maintenance, and finally, I will briefly touch on the future of the video game
industry including high definition and multithreaded gaming.




History

The Origins
During my research I encountered conflicting information regarding the origins of the
video game industry, because there was no singular standout event that started the
industry, as we know it. Regardless, the sources that I found all agreed that William
Higinbotham‟s invention in 1958 was an important event, and it helped forge the
structure of the video game industry. Mr. Higinbotham worked at the Brookhaven
National Laboratory and wanted a way to entertain the visitors, so he created a simple
tennis game out of an oscilloscope and a computer. This game was called Tennis For
Two. [3]



The 1960s
A group at MIT, called the Tech Model Railroad Club developed a game called Spacewar
on a PDP-1. [5] When they were finished the game took up 9KB worth of space, which
was fairly large for the time. Spacewar was the first game to be shared over a network as
well as the first widely available game. However, because PDP-1 systems were extremely
expensive, the package retailed for $120,000.

The next major advancement was thanks to Ralph Baer and Bill Harrison. Together, they
created the light gun, which would be used in arcades for decades as well as the home
market. [5] If one is unfamiliar, the light gun is a device that gathers light in order to
detect if you shot the enemy on the screen. There are some different techniques to gather
information the information from the screen.

One of the techniques works like this:
   1.      The trigger on the gun is squeezed. [6]
   2.      The screen on the TV blacks out. [6]
   3.      The photodiode within the gun begins reception. [6]
   4.      A portion of the screen is painted white – typically the target you are aiming
           for. [6]
   5.      If the photodiode registers a black signal and then a white signal you have hit
           the target. [6]


The 1970s
Nolan Bushnell and Ted Dabney wanted to turn the extremely popular Spacewar into a
coin-op style arcade game. They were able to achieve success in the software department,
but they were in dire need of a manufacturer. They found a manufacturer in Nutting
Associates, and in 1971 they began to build the first of 1,500 units. However, the controls
of Spacewar were to complex, thus making it unpopular. After the failure of their game,
Bushnell and Dabney leave Nutting Associates and decide to start up their own company,
called Atari. [5] The first game they developed was a very simple tennis style game,
called Pong. Pong sold to arcades across the nation for around $1,200. Atarti was able to
sell 8,500 units in the first year alone, and over the course of its lifetime, Atari sold more
than 19,000 Pong units.

In 1972, the first Magnavox Odysseys were sold in retail stores for around $100.
Magnavox quickly created and sold 100,000 units, however sales quickly came to a
plateau shortly there after. [5] A couple of employees at Atari suggested bringing Pong to
the home, and creating a home console system. Atari reluctantly decides to test the home
market after witnessing the lack of success of the Magnavox Odyssey. Together with
Sears, Atari begins to market a $100 version of Pong, made especially for the home. Pong
sold extremely well and finally put Atari “on the map”, as it became a household name.

Also in 1972, Steve Jobs joins Atari as a technician. After a while, Steve exposes Steve
Wozniak to Atari and the game, Pong. Together, they go on to form Apple, in 1976. But,
before Apple can be founded, Midway produces a game called Gun Fight. Gun Fight was
very important to the industry because it was the first game to utilize a microprocessor,
the Intel 8080, and it was the first game to be developed and later imported from Japan.
While at Apple, Steve Wozniak accomplished a couple of achievements that progressed
the video game industry. Mr. Wozniak created Breakout, which was the first video game
to run on software. Breakout was also the first game to be programmed in a computer
language. [5]

Finishing of the 1970s was the creation of the game Galaxian, which was the first color
video game. It was an instant success, and was the game to be playing at the end of the
1970s.


The 1980s
The 1980s saw the creation of two of the most significant products in the video game
industry; the first being Pacman, and the second being the Nintendo Entertainment
System. Pacman showed the industry that being different, and innovating, is a vital part
of evolution. [5] Instead creating games very similar to Pong, or Galaxian – games that
have had they success, the creators of Pacman decided to create a game that was unique.
Pacman also brought about the art of video game merchandising. [5] Once Pacman
became popular, and it didn‟t take long, there were Pacman cereals, T-shirts, and even
TV-shows.

In 1985, Nintendo released their 8-bit video game console, the Nintendo Entertainment
Center. Bundled with Super Mario Brothers, this product completely dominated the
North American market. [3] This system was revolutionary because the “D-pad”, or
directional pad, on the NES controller now became the standard instead of the joystick.


The 1990s
There are a couple of major advancements in the gaming industry that occur in the 1990s.
Shareware was one of those major advancements. The idea behind shareware is very
simple, game developers release a small portion of their game for people to try out and
then purchase later if they so choose. This concept basically develops into what we now
know of as game demos. Shareware was pioneered by Id Software with games like
DOOM, and Wolfenstein 3D.

In 1996, 3dfx releases the Voodoo chipset, which allowed for devoted 3d rendering of
graphics. This allows for the CPU to handle other tasks, like logic, or artificial
intelligence processing. Id Software‟s Quake was the first game to utilize these
standalone graphics cards.

Finally, the 3d era in consoles arose in the 1990s, with the release of the 32 and 64-bit
units. Sega‟s Saturn and Sony‟s Playstation dominated the 32-bit console market. After
many delays, Nintendo‟s N64 swept up the remaining 64-bit competition, selling around
1.5 million units in three months. The N64 produced many critically acclaimed games,
some of which are regarded as some of the best games of all time. Of those games, Super
Mario 64, Goldeneye 007, and The Legend of Zelda: The Ocarina of Time stood out from
the rest of the collection.


Disciplines

Overview
In the video game programming field there are numerous types of programming jobs.
They can range from physics programmer, input programmer, and graphics programmer
to the porting programmer. Though there are many roles to be filled, none fall short of
important when talking about the completion of a project.


Game Physics Programmer
This person, or team of people, work on developing the physics in the game. Sometimes
this could include modifying or even creating a brand new physics engine. Since
processor cycles are at a premium, so the maximum frames per second (fps or f/s) are
achieved, efficiency is of the utmost importance. [4] Finally, of all the different genres,
first person shooters (FPS) will typically demand a large team of physics programmers,
whereas a real time strategy game, that primarily deals with enemy strategy instead of
physics, might only need one or two physics programmers.


Artificial Intelligence (AI) Programmer
The AI programmers develop the logic that the game, enemies in the game, and the non-
player characters (NPC) utilize when the user is playing the game. [4] Because of all the
recent advancements in the field of AI, this job has really become a specialized area. [4]
Similar to the physics programmer, a game could demand one, two or even a whole team
of AI programmers – depending on the genre and what the game has to do. RTS and FPS
games usually demand a large number of AI programmers, whereas a game that is
completely multiplayer based, all interaction is user vs user, will not demand any because
there are no computer opponents.


Graphics Programmer
Graphics programmers specialize in the development and modification of complex 3D
graphics. Don‟t confuse the graphics programmers with the modelers, or artists, as the
programmers do not actually draw anything, but they write the code to utilize the
graphics in the game. For the graphics programmer, knowledge with 2D graphics is still
considered a plus because of the numerous games being developed on cell phones and
PDAs. [4] Finally, the graphics programmer will be working with vertex and pixel
shaders in order to get the output that is desired. [4]


Sound Programmer
Full musical scores in video games have been around for quite some time, however, 3D
positional sound and the implementation of it in video games is a new technology. [4]
That‟s where the sound programmer comes in. The sound programmers job is very
similar to the graphics programmers, but instead of dealing with graphics, the sound
programmer works with sound. Again, don‟t confuse the sound programmer with the
composers, the sound programmers just take the sound effects and musical scores given
to them and code them into the game. While sound programmers are required in all
genres of video games, the FPS genre has become quite popular for requiring teams,
instead of one or two programmers. This is primarily because of the 3D positional sound
that has come about as of late, and its popularity in the FPS genre.


User Interface Programmer
The user interface (UI) is what the user is constantly interacting with when he or she is
playing the game. Because the user will always be utilizing the UI, it must be clean,
intuitive, filled with useful features, and very easy to use. The UI programmer may be
involved with the development or modification of an existing UI for the game. Some of
the more advanced UI allow the user to write their own custom scripts, like the UI in
“World of Warcraft”. The users playing “World of Warcraft” are able to write custom
scripts in LUA or XML.


Input Programmer
The input programmer writes all of the code that determines how the player will use the
various input devices while playing the game. [4] These input devices range from
keyboard and mouse, to a console controller. Depending on the complexity of the
controller and the game, a team of input programmers may be required. A perfect
example of this is the Nintendo Wii‟s controller. Because it utilizes motion-sensing
technology, something that hasn‟t been attempted on consoles yet, an entire team of input
programmers was required to develop the controller.

These programmers are perhaps the most under-rated of the bunch. Without an intuitive
control scheme, the whole game is worthless, but yet many people look become
interested in a game because of its graphics or storyline. That being said, standards have
been established over the years, and they should be followed or the user will become
confused while playing the game. For example, in the console world the „A‟ button
typically means accept, or ok, whereas the „B‟ button typically represents back, or cancel.
In the PC market, the WASD key combination has become the standard for FPS games.
WASD are the keys that you use to move around while playing a FPS game.
Below is a listing of what the keyboard keys do when you press them in game:
W – move forward
A – strafe left
S – move backward
D – strafe right


Network Programmer
The network programmer writes all of the code that allows players to play the game on a
local area network (LAN) or on the Internet. [4] These programmers are very important
for massively multiplayer online (MMO) games, like “Everquest” and “World of
Warcraft”, because the whole game is played online. Because the entire game is played
online, latency control is especially important. If a game is completely single-player
based, thus having no multiplayer, it is irrelevant to hire a network programmer to work
on the project. However, in the instance of a MMO game, a whole team is going to be
required. Finally, programmers cannot assume all players have a broadband connection,
so they need to write the code in a way that consumers that have a 56k connection will be
able to enjoy the game as well.


Game Tools Programmer
The game tools programmer has a very interesting role in the development of a video
game. He could be called upon to do numerous, completely different tasks, but all the
tasks have one underlying theme – batch. A batch job is just a way to explain that
multiple things are going to be done, very similar to a script. So, the game tools
programmer will write code, or develop tools, to handle tasks like scripting, converting
art from platform to platform, modifying the game and the levels within. [4]

Mainly, the game tools programmer develops software to be used in-house, that is to say
within the company, but he may also be responsible for releasing a software development
kit (SDK) for the game to allow for modifications by the user. The “Half-Life 2” SDK is
a perfect example of this. The SDK contained many tools that allow the user to modify
the game how they see fit. For instance, the tool called “Hammer”, in the SDK, let the
user create and modify levels.


Porting Programmer
Porting programmers handle all the conversion of code from platform to platform. For
example, when you see a game that is available for XBOX 360 and PS2, the porting
programmers are hard at work making sure the same game will be available for both
consoles. Porting is especially important for large companies like Electronic Arts (EA),
because when they release a game it can typically be found on every platform. During the
porting process, the game tools programmer could be called upon to write little tools to
convert art, or anything that wouldn‟t be compatible from one platform to another. [4]
Because the hardware in consoles is so different, some of the code, that utilizes hardware
specific routines, may have to be re-written.


Lead Programmer
The lead programmer is often times the middleman between the management and the
programmers. The main job duties include keeping the programmers on task and focused,
as well as having a general knowledge of all aspects of the game. It is not expected that
the lead programmer know everything about graphics, or sound, but he or she should
have a solid understanding of how the systems work together.


The Game Development Process

Prototyping
Prototyping in video games is very similar to prototyping in any application. This is a
great time to test out ideas and algorithms, as well as providing the customer with an
early glimpse of the product in order to receive feedback. [2] Especially in the video
game industry, it is important to get early screenshots and videos out to the public in
order to create a strong fan base for your product as soon as possible. However, if the
game changes drastically, or never comes out, the fans that were at one time excited
about the release, may not be interested in the game anymore.


Language
What language should the game be developed in? This question depends on many things:
  1.      What programming languages is the staff comfortable with? [2]
  2.      What platform is the game expecting to come out for? [2]
  3.      What is the language of the game engine? [2]

By far, the most popular programming language for video games is C++, followed by
Java and C. Because Java is not console friendly, and C is not object-oriented, they fell to
second most popular. [2]

Assembly is also very popular, especially in the console world, because efficiency is so
important. However, the code that is written in assembly for one platform of the game,
may have to be re-written if the hardware on the other platform is different.
API & Libraries
Another question very early on in the development life cycle is: Which API & libraries to
us? There are numerous libraries on the market that handle everything from sound
processing to AI pathfinding. [2] If the library doesn‟t exist, the developers may need to
tweak how the game works, or just develop their own library. Which library is chosen
also depends on which platform the game is going to be on. A library for PS2 may not be
available for the XBOX 360, or it might be slightly different. So, those considerations
need to be addressed early within the development cycle.

Finally, developers must choose which graphics API to use. The two popular choices on
the market today are DirectX and OpenGL. [2] Microsoft‟s DirectX is a collection of
different APIs, and Direct3D is actually the graphics API. Because it is revised more
frequently than OpenGL, developers can utilize the latest features of 3D graphics cards.
[2] However, developers that are looking to program cross platform will be disappointed
when the find out DirectX is only for Windows, PocketPC and Microsoft‟s XBOX and
XBOX 360.

DirectX‟s weakness is OpenGL‟s strength. OpenGL code can be easily ported to and
from Windows, MacOS, Linux, and any of the consoles. However, because there is an
entire community that must agree on changes to OpenGL, revisions happen much slower
than DirectX.


Production
The production phase is the bulk of the production life cycle. In this phase, all of the
design and analysis should be at a state where the developers and management are
content, so the programmers will be able to sit and code away. The design and analysis
documents are constantly changing during this phase, so the lead programmer must
regularly report the changes and the overall status of the game to the supervisors. Finally,
since the target platforms of the game are known, the game tools programmer can begin
to develop game tools to be used later on.


Crunch Time
Towards the end of the production phase the developers may or may not enter the phase
called crunch time. This is a phase where programmers will likely spend twice the normal
amount of hours, in order to complete the project by the deadline. One thing to keep in
mind though, twice the hours does not guarantee twice the productivity. [2] Staff
members will get fatigued. Also, adding staff members may not increase productivity
because these new people may need to be trained, which could actually hamper the
production. While crunch time is a decent short-term solution to getting the project done
on time, this is by no means a long-term solution.
Maintenance
Once the game has gone “gold”, or is ready for shipping, the maintenance phase begins.
Pre-current generation consoles, maintenance on video games was next to impossible
without a re-release of the game. However, with the Internet capabilities and hard drives
offered on the current, and next generation consoles, maintenance can be done to console
games. Maintenance can include patches, or even new content downloads.

As far as the PC market is concerned, patches are inevitable because of the numerous
hardware and software combinations. [2] Of all of the genres, MMO has the longest and
most intense maintenance phase. New content is always required to keep players hooked
to your game. Plus, when users have to pay a nominal fee to play the game every month,
I think they expect new content every now and then.


The Present and Future of Gaming


Threading
Threading is a way to split up processes to multiple processors, or cores of the processor.
Games that are being developed with multiple threads run extremely more effiecient
when the user has a multi-core processor, or even a computer with multiple processors.
The XBOX 360 and the Playstation 3 are expected to utilize a multi-processor/multi-core
setup.


HD Gaming
High Definition (HD) gaming is relatively new in the gaming industry. Many families
already have an HD compatible TV, and thus want to play their video games with the
same quality as the HD channels they can watch. HD offers many benefits including
improved textures, improved character models and an overall higher pixel count, just to
name a few.


Next Generation Consoles
The next generation of consoles is going to be an extremely competitive match. Microsoft
has already launched their XBOX 360. Nintendo and Sony will be unveiling their
respective products, Wii and Playstation 3, in November. Microsoft has rumored that
they are looking into an accessory that will play HD-DVDs, whereas Sony has opted to
stick with Blu-Ray, there proprietary format. The Wii, however, will not be able to play
DVDs of any kind, but it does offer a strong control scheme in motion sensing
technology.


Conclusion
The video game industry is still relatively new and flourishing. Looking back at the
origins one is able to see how far the industry has come. Once you grasp how far the
industry has come, and the new technologies that are available today, try and imagine
what the video game industry will be like in fifty more years. The video game industry
will continue to evolve, newer technologies will be presented, but the overall goal of a
video game, having an enjoyable time, will not change.


References
[1] Computer and Video Games. Retrieved September 9, 2006, from Wikipedia. Web
       site: http://en.wikipedia.org/wiki/Computer_and_video_games

[2] Game Programming. Retrieved September 9, 2006, from Wikipedia. Web site:
      http://en.wikipedia.org/wiki/Game_programming

[3] History of Computer and Video Games. Retrieved September 9, 2006, from
        Wikipedia. Web site:
        http://en.wikipedia.org/wiki/History_of_computer_and_video_games

[4] Game Programmer. Retrieved September 9, 2006, from Wikipedia. Web site:
      http://en.wikipedia.org/wiki/Game_programmer

[5] History of Video Game Programming. Retrieved September 9, 2006, from
        everything2, Web site: http://everything2.com/index.pl?node_id=1185238

[6] How does the light gun for a video game work? Retrieved September 9, 2006, from
       How Stuff Works, Web site: http://www.howstuffworks.com/question273.htm

[7] History of the video game industry. Retrieved September 9, 2006, from Pong-Story,
Web site: http://www.pong-story.com/intro.htm