The Design and Programming of Computer Games Dr. Osborne cosc 1172



Download 32.17 Kb.
Date09.08.2017
Size32.17 Kb.
The Design and Programming of Computer Games

Dr. Osborne – COSC 1172

By:

Steven Pham


Jeremiah Rice
R. Reid Thomas

The Design and Programming of Computer Games

The development and commercialization of computer and video games has evolved drastically since their first creation. Throughout the 1960s and 1970s, many computer video gaming systems were developed by different companies competing for a share of this, at the time, newly expanding market. In the 1960s, computer games were developed as a hobby by individuals. Most games only ran on university mainframes. Since the accessibility of hardware was limited, games were small in number and forgot by posterity. During the 1970s, the first gaming consoles became available. The Magnavox Odyssey was the first commercial gaming system which was released in 1972. Since digital graphics were not very advanced (especially compared to today's standards), the Odyssey shipped with screen overlays. These were placed on the TV set to simulate different games, such as tennis and soccer. During its release, about 350,000 units were sold.[1]

The most notable gaming system of this time period is the Atari 2600, which brought computer games to households across America. It was released in October of 1977 by Atari. Its full-screen color graphics and sound capabilities helped Atari sell 40 million units during its release.[2]

Since early development of games was not a complex task, many games could be handled by one programmer, who handled not only game code, but also design, audio, visual artwork, and testing. The development of modern commercial video games, however, involves a wide variety of skill-sets and support staff. A modern development team may include a producer, a game designer, game artists, programmers, level designers, sound engineers, and game testers. Each team member is essential to the success of any company developing a game.

In order to form the team, however, support is required from a publisher. In the beginning of a game development cycle, a group of key people at a game development company will collaborate on a certain concept of a game. They will then find a suitable producer who will help further develop these concepts. Deciding upon a good idea of what the game will consist of, the development company will submit the idea to a publisher. Once the publisher approves the idea, they will help fund the development company, in which a full team will then be formed.

The role of a producer in game development is similar to one who assembles the cast of a play, brings an artist or talent to a studio, or organizes a publicly broadcasted event. Producers have an all-encompassing role; that is, he or she takes primary responsibility for the completion of the event, program, or project. Specifically, the role of a movie or television producer included casting, hiring a director, finding the script, handling contracts, distributing the finished product, financing, scheduling, location management, promotion, marketing, and PR (Public Relations).[3] Similarly, the role of the record producer, an occupation that emerged with the popularity of the phonograph, involved finding talent, hiring the recording studio, securing the distribution and financing from a record publisher, promotion and PR events, as well as contracts and legal agreements for the artist, writers, and musicians. Once again, these roles can be applied to the computer gaming industry.

A game designer is the person who presents core idea of the game and facilitates discussions on it. The designer then takes down the best ideas that arise, and assembles them into a whole that is fun, innovative and well-working. A game is never fully designed until it is close to completion. Games are so complex that foreseeing all the interactions and how it would play is impossible. Game designers, however, can "play the game in their head" before it's created a little better than other professionals in the team. The key is to produce prototypes, or quick game play mock-ups, that demonstrate how fun a game element is. Game designers are essentially communicators who take all relevant ideas from their team, then assemble them into a solid design which is updated as the game is being produced.[4] One of the most notable video game designers is Hideo Kojima. Hideo is a Japanese video game designer and the director of Konami's Metal Gear series.[5]

Game artists are responsible for all the aspects of a game that call for the visual arts. Since the abilities of computers and gaming consoles are so advanced, game artists are often larger than any other group of the game development team. Artists work directly with the game developers to insure that the characters, scenery, and props meet the developer’s expectations. Their jobs are usually broken down into character artists, animators, background artists, modelers, and texture artists. Character artists create the actual character while animators define the character's movement. The background artist creates the design for the different environments throughout the game. Background artists work together with level designers to create environments that fit the game. They begin by sketching their interpretation of the scenery from the design document and then submit it to the game designer for approval. Texture artists are responsible for the detail on the 3D surfaces. This helps the game feel more real, since it gives the different in-game structures depth.[6]

A game programmer, not to be confused with a game designer, writes code that makes up the actual game. While some programmers are also designers, this is not very common in the professional industry today. On large projects, it is not uncommon for individual programmers to specialize in one specific programming area. Some of the different types of programmers are: Game Physics Programmers, AI Programmers, Graphics Programmers, Sound Programmers, Gameplay Programmers, Scripters, UI Programmers, Input Programmers, Network Programmers, Game Tools Programmers, and Porting Programmers.[7] Each of these specialized programming fields need to be addressed when in the production of a full-scale modern game, even if some programmers have to work in multiple areas.

Sound engineers are people who compose music or help produce the sound effects that are used in the game. These people may work closely with sound programmers in order to mix the in-game audio to a desired output. Without sound engineers, games would not have the necessary sound effects to feel realistic. Every explosion, gunshot, voice, or any other sound would not be present in a game without the sound engineer. Sound engineers also have to be cognoscente of the game's release platform environment. For instance, if a game is going to played in an arcade the sounds may be loud and simple to attract customers. But if they are going to be played at home, the sounds may be very complex, for a more immersive experience.[8]

Game testers are people who analyze the compiled product of the development team. Testers begin work usually when the game is 50 to 75% completed by playing the game and taking note of any anomalies or bugs that occur during the testing session. These bugs may include game play errors, physics errors, graphical errors, sound errors, or anything that may have occurred due to an error on the part of a programmer. The tester must then be able to provide programmers with sufficient data to fix that code error. Some bugs are easy to document ("Roof on building is missing"), but others may be hard to describe and can require pages of information for the programmer to replicate or locate the bug. A game tester's job is often thought of as a fun job, but in reality can be time consuming and strenuous. Game testers may play the same game or level for up to eight hours at one time. If, for instance, a bug is fixed, a game tester may spend hours repeating a number of sequences to ensure the bug has been corrected.[9]

Level Designers create levels, challenges, or missions for the games. These people use level editors, such as Unreal Editor, to special-tailor for the games that are being made. Also, level designers may work on enemy or non-player character placement, story events, or code that may alter game rules or scoring for a multiplayer game. A level designer's job is focused solely on where certain actions take place, like the beginning and end of a level, encounters with other characters, and routes that non-player characters take throughout the game.[10]

Depending on a game's target audience and platform to be released on, the cost of development may be anywhere between $1 and $40 million dollars.[11] For example, releasing a small “coffee-break” style solitaire game may cost very little, but a game released utilizing next-generation graphics and physics engines can cost in the range of millions of dollars. These costs can quickly add up with the addition of equipment and wages. It is typical for new, startup development studios to take a smaller risk by developing for mobile or handheld devices due to lower production costs associated with those platforms.

The actual meat and potatoes of game development lay within three main areas: artwork, level design, and (most importantly) programming. In order to better understand how each provides an important contribution to making the game, they must be individually examined.

Game Artwork is a general term for any visual contribution that is provided to a game. While the artwork of early games of yesteryear were handled mainly by the programmer (or programmers), the increasing demand for the complexity of modern games requires a variety of artists working on a project. The kinds of art that can be produced are numerous: concept art, in-game textures, 3D models, and animation are a few of the many contributions that add to game visuals. Typically, game artists use software such as Adobe Photoshop and Autodesk 3D Studio Max to aid their work.[12]

Level design is also important and is related to artwork in that anybody working with it must be able to express their thoughts visually. However, it is also related to programming because making game levels requires scripting for certain level-specific events. For example, if a certain level is supposed to have an elevator at one point, the level designer must implement the artist's model and animations of that elevator in addition to scripting the movement whenever a player steps inside of it. Level design involves the use of level editors, which are actually compilers specifically written for a game engine. For example, Unreal Editor was written by programmers at Epic Software during the development of Unreal Tournament. The editor is easy to pick up, but powerful enough for a professional. Also, most game editors are freely available to aspiring, creative people that wish to create their own virtual environments to play in.[13]

At the heart of all computer and video games is programming. Programmers produce source code that actually runs the core of the game engine. Without programming, a computer or video game cannot exist. As projects vary in size, so do the number of programmers on a team. As that occurs, each individual programmer will receive a different area in which to concentrate their work.

There are several different languages useful for game programming, some more popular in the industry than others. The desire for balance between speed and programming convenience is a hot button issue between many professionals.[14] Assembly language is a low-level language and allows for very fast, efficient programs. However, for many, it is a pain to efficiently write code for, and higher-level language is more often chosen.

C++ is arguably the most popular language used in game programming today due to its relative ease (compared to assembly) to program for, and efficient program runtime speed. One of its features that appeal to programmers is its object-oriented structure.

In programming, the basic structure depends on a game loop, which is a repeated process that runs continuously until the game ends. When one imagines a computer game (in the modern sense), most people think of a real-time environment that is constantly updating. These action-style games, like Unreal Tournament, are constantly being played, even if the user provides no input. The game loop begins by checking for user input, then processing that data into the game engine. As the game engine provides real-time calculations for the game world (Physics, AI, etc.) the changes are rendered to the computer screen and the entire game loop repeats over and over again. However, in turn-based games like chess, the loop is slightly different: instead of checking for user input, the game will actually wait for input before continuing, due to the turn-based nature of these games.[15]

Another important aspect to games programming is the use of threads. Threads allow programmers to perform two tasks at once in a program, even if the program is being run on a single-processor machine. Although this creates overhead (since the two tasks are only pseudo-simultaneously executing), they can allow certain tasks to be completed in a performance-critical environment, like 3D games. Newly developed multi-core processors, and processors with hyper-threading help alleviate or eliminate this overhead by allowing multiple tasks to truly perform two tasks at once.[15]

In the early days of video game development, developers were funded by large checks, staking on the abilities of the development team to create a game on time. However, this proved to be a risky strategy and eventually gave birth to what the game industry now calls development milestones. Instead of one single check to pay for the entire development process, funding is now dispersed over time. The team has to prove to the publisher that progress is being made on the game. With each milestone met, the team receives more funding to go toward future progress.[16]

Between developers and publishers, there is a contract for milestones, where developers must meet them or else risk breaching the contract and have funding dropped. Two main milestones that all developers try to meet are the Electronic Entertainment Expo (E3) and Game Developers Conference (GDC). E3 (short for Electronic Entertainment Expo) is an industry-wide event held annually in which developers showcase their latest and greatest products. In order for one particular game to gain media coverage, its developer will need to create a polished, playable demo for E3. In fact, the E3 is such an important milestone that developers even temporarily stop progress on the project to create a small-scale demo. E3 is usually held in California during the summer.

Although heavily dreaded, game developers will encounter crunch time at least once in a development cycle. Crunch time is a period of game development where all employees on the team will need to put in extra hours to meet the upcoming deadline. Crunch time can last anywhere from one to two weeks, but on some ill-managed projects, there can be months of continuous crunch. Crunch time usually involves up to 12 to 16 hours of continuous working on a project per day.[17]

Since it requires a heavy commitment to the project, many teams try to their best to avoid the dreaded crunch time. While crunching can save a project from exceeding a deadline, the disadvantages associated with crunch time are numerous. Aside from burning out employees on the project, crunch time can cause the development team to churn out a low quality work. Crunch time can introduce numerous bugs and glitches into the game, in which another crunch session may need to be instated in order to fix the game.

As a computer or video game's development is nearing completion, many features will be added or removed before finalizing. However, during this process, developers will implement regression testing on the game. Regression testing is ensuring that new changes introduced will not compromise any functionality of the game.[17]

Testing is done through several methods. One method is called expert evaluation. Rather than using the target group for testing, the developer hires experts that will evaluate the game in its current state and give insight based upon their experience in the industry. Usually testing is ended and reported within a week. Expert evaluation is a great tool to a developer as it can be done at any point in the project cycle to determine what problems the game has.

Another method is called usability testing. This type of testing is done with the targeted group that is suitable for that game. This is perhaps the most important test a developer could implement. Usability testing gives insight to developers on how users would play the game and what problems they face with gameplay and interfacing. Usually a member of the team will walk through with a user to learn exactly what the user is thinking as he or she plays the game.[19]

Testing should not be taken lightly – one of the most notorious games known for bugs and being completely unplayable would be E.T., released for the Atari 2600 in 1982. Not only did the game flop completely, the license for E.T. cost Atari $21 million dollars. It was such a failure that in September of 1983, truckloads of millions of unsold copies were buried in a New Mexican desert landfill. For their failure to adequately test, Atari received devastating monetary losses and a heavy blow their reputation.[20] This teaches that the future of a development studio depends on the performance of their most recent project. In 1984, Atari nearly went bankrupt and was sold off, never to truly recover.

Eventually, a game will have “gone gold”, a term meaning that the game has been finalized and is ready for mass production. Usually, at this point, all major bugs or glitches have been fixed. After a game is released to the public, there may be problems that developers cannot anticipate during development. At this point, developers will create patches and fixes for the game, in order to quell any disappointment by users.[21]

The future of game development is a highly debated area. Arguably, the hot, new platform to develop for is the mobile phone market, because of the low production costs and large base of potential customers. Many modern cell phones are capable of running Java-powered applications, making the platform easy to develop for.[22] Time will tell whether or not this prediction will hold true. What we do know, however, is that over time, the idea of commercialized game development has matured from a small, niche market, into a full-blown multi-billion dollar industry.

Works Cited

1. Winter, David. “Magnavox Odyssey – the First Video Game System”. 2006. http://www.pong-story.com/odyssey.htm

2. AtariAge. “Atari 2600 History”. http://www.atariage.com/2600/history.htm

3. GameProducer.net. “What Game Production Has Taught Me”. http://www.gameproducer.net/2007/04/22/what-game-production-has-taught-me/

4. International Game Developers Association. “So you want to be a games designer?”. 2000. http://www.igda.org/articles/ebartlett_designer.php

5. Internet Movie Database. “Hideo Kojima”.


http://www.imdb.com/name/nm0463620/

6. Animation Arena. “Overview of the role of a Video Game Artist”. http://www.animationarena.com/game-design-artist.html

7. Vaughan, Marc. “Game Programming.” 2002. http://www.sloperama.com/advice/lesson15.htm

8. Crosby, Olivia. “Working So Others Can Play: Jobs in Video Game Development”. 2005. http://www.gignews.com/crosby2.htm

9. Sloper, Tom. “Testers – The Unsung Heroes of Games”. 2004. http://www.sloperama.com/advice/lesson5.htm

10. Shahrani, Sam. “Educational Feature: A History and Analysis of Level Design in 3D Computer Games”. 2006. http://gamasutra.com/features/20060425/shahrani_01.shtml

11. Reimer, Jeremy. “Cross-platform game development and the next generation of consoles”. 2005. http://arstechnica.com/articles/paedia/hardware/crossplatform.ars/2

12. Sloper, Tom. “Game Graphics and Audio”. 2005. http://www.sloperama.com/advice/lesson53.htm

13. Blundell, Chris. “From Paper to Pixels: Making maps for the Unreal Engine”. 2000. http://fordy.planetunreal.gamespy.com/leveldes.htm

14. Sweeney, Tim. “A Critical Look at Programming Languages”. http://archive.gamespy.com/legacy/articles/devweek_b.shtm

15. Brackeen, David. Developing Games in Java. New Riders, 2004.

16. Mullich, David. “Milestones and Glass Houses: Protecting Your Development Schedule from Shattering”. 1997. http://www.gamasutra.com/features/production/061997/milestones1.htm

17. Pruett, Chris. “Snap, Crackle, Crunch Time”. 2006. http://bcis.pacificu.edu/journal/2006/05/crunch.php

18. Collins, Jeanne. “Conducting In-House Play Testing”. 1997. http://www.gamasutra.com/features/production/070797/playtest.htm

19. Laitinen, Sauli. “Better Games Through Usability Evaluation and Testing”. 2005. http://www.gamasutra.com/features/20050623/laitinen_01.shtml

20. Kent, Steven L. The Ultimate History of Video Games. Prima, 2004.

21. DeRosa, Phillip. “Top 10 Tips on How to Improve a Game Quality Assurance Department”. 2005. http://www.gamasutra.com/features/20050202/derosa_01.shtml



22. Mencher, Marc. “The Future of Game Development: New Skills and New Attitudes”. 2004. http://www.gignews.com/careerfeatures/skills04part1.htm
Directory: faculty -> osborne
faculty -> Curriculum vitae wei chen professor
faculty -> Digital image warping
faculty -> Samples of Elements Exam Question III contains All Prior Exam Qs III except
faculty -> 【Education&Working Experience】
faculty -> References Abe, M., A. Kitoh and T. Yasunari, 2003: An evolution of the Asian summer monsoon associated with mountain uplift —Simulation with the mri atmosphere-ocean coupled gcm. J. Meteor. Soc. Japan, 81
faculty -> Ralph R. Ferraro Chief, Satellite Climate Studies Branch, noaa/nesdis
faculty -> Unit IV text: Types of Oil, Types of Prices Grammar: that/those of, with revision
osborne -> Instructor: dr. Lawrence osborne
osborne -> Instructor: dr. Lawrence osborne
osborne -> Cosc 4301-04/cosc 5340-04 Game Design and Development Syllabus Summer 2006 Instructor

Download 32.17 Kb.

Share with your friends:




The database is protected by copyright ©ininet.org 2020
send message

    Main page