Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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