Transcript Document
CHAPTER 1
Introduction to Game Development
© 2008 Cengage Learning EMEA
LEARNING OBJECTIVES
In this chapter you will learn about:
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
The game development process
The history of game development
Elements of game programming
Operating system architecture
Game development techniques and methodologies
Sequential software development: the waterfall model
Iterative software development: the Rational Unified Process
Agile software development: Extreme Programming
The Unified Modeling Language (UML)
Class diagrams
Representing classes
Representing associations
Representing generalizations
Aggregation
Interfaces
Instance diagrams
Game development tools
INTRODUCTION TO GAME
DEVELOPMENT
Game development
– A multifaceted discipline concerned with the
production of video games.
Video game
– A game where the player interacts with some virtually
represented environment via a particular controller or
input device.
Game development process
– Defined by combining some software engineering
methodology with a project management process.
INTRODUCTION TO GAME
DEVELOPMENT
Software engineering
– Deals with the design, implementation and
maintenance of software.
Project management
– Deals with the administration of resources so that
some project can be completed within a predefined
timeframe, budget and scope.
Any game development effort includes:
– A pre-production phase, a mainstream production
phase, project milestones, testing, release to
manufacturing, and patch-based maintenance.
INTRODUCTION TO GAME
DEVELOPMENT
History
The first computer games ever:
– OXO
– Tennis for Two
Multi-User Dungeons
PONG
Breakout, Donkey Kong, Pac-Man and
Space Invaders
History
The Atari 2600
Personal computer games and the Apple II
IBM PCs and Wolfenstein 3D, Doom and Quake
The advent of 3D graphics cards
DirectX and OpenGL
Elements of Game Programming
Game programming
– Concerned with the software engineering elements of
computer, console and arcade games.
The programming team will often start by:
– Defining and designing the various networking,
interface, AI, scripting and graphics components
needed to fulfill the game’s requirements.
The team will also evaluate:
– Whether all game design requirements are
programmatically fulfilled, determining the lacking
components.
Elements of Game Programming
Difference between game programming
and general application programming:
– The real-time nature of games.
Computer programs were traditionally
written using a flow-driven or procedural
programming paradigm.
Modern-day programs generally make use
of the event-driven programming model.
Elements of Game Programming
Games require a more independent execution approach.
– Accomplished via the implementation of a game loop.
A standard game loop:
1
2
3
4
5
6
Initialization and memory allocation.
Input monitoring.
Execution of artificial intelligence (AI) and physics routines.
Sound and music output.
Execution of game logic.
Rendering of the scene based on the input from the user and
other subsystems.
7 Display synchronization.
8 Shutdown of the game if the user wishes to terminate the
program.
Introduction to Operating System
Architecture
Introduction to Operating System
Architecture
Introduction to Operating System
Architecture
Cooperative multitasking
– based on the principle that any executing task must,
at some point, release the CPU either voluntarily or
after some system interrupt has been issued.
Pre-emptive multitasking
– based on the use of a system interrupt mechanism
coupled with a scheduler ensuring that all active
processes can gain access to the CPU at any given
time, thus creating a more reliable operating
environment where each and every process is
guaranteed some CPU time.
Introduction to Operating System
Architecture
Memory Addressing
– Virtual mode
– Real mode
Object-orientated operating system design
is based on the process of extending the
kernel modularly, allowing programmers to
customize the operating system without
affecting the overall system reliability or
functionality.
GAME DEVELOPMENT TECHNIQUES
AND METHODOLOGIES
Sequential Software Development: The Waterfall
Model
GAME DEVELOPMENT TECHNIQUES
AND METHODOLOGIES
Iterative Software Development: The Rational
Unified Process
GAME DEVELOPMENT TECHNIQUES
AND METHODOLOGIES
Agile Software Development: Extreme Programming
– Practices:
Continuous integration
Evolutionary design
Pair programming
Refactoring
Testing
– Values:
Communication
Simplicity
Feedback
Courage
Respect
THE UNIFIED MODELING
LANGUAGE (UML)
A graphical modeling language developed in
the mid 1990s for the visual representation of
object-orientated software.
Class Diagrams
THE UNIFIED MODELING
LANGUAGE (UML)
Representing Associations
THE UNIFIED MODELING
LANGUAGE (UML)
Representing Generalizations
THE UNIFIED MODELING
LANGUAGE (UML)
Aggregation
THE UNIFIED MODELING
LANGUAGE (UML)
Instance Diagrams
GAME DEVELOPMENT TOOLS
A screenshot of Quake 3’s level editor, Q3Radiant
GAME DEVELOPMENT TOOLS
A screenshot of Autodesk’s high-end 3D modeling package, Maya
GAME DEVELOPMENT TOOLS
A screenshot of Adobe Photoshop
GAME DEVELOPMENT TOOLS
NVIDIA’s PerfHUD
GAME DEVELOPMENT TOOLS
NVIDIA’s FX Composer IDE
GAME DEVELOPMENT TOOLS
Basic Visual Studio 2005 interface