Simulation Engines TDA571|DIT030 Course Introduction Tommaso - - PowerPoint PPT Presentation

simulation engines tda571 dit030 course introduction
SMART_READER_LITE
LIVE PREVIEW

Simulation Engines TDA571|DIT030 Course Introduction Tommaso - - PowerPoint PPT Presentation

Simulation Engines TDA571|DIT030 Course Introduction Tommaso Piazza 1 The Course in brief Develop an interactive simulation engine Focus on software engineering Not just game programming Use the paradigm that the engine acts as


slide-1
SLIDE 1

Simulation Engines TDA571|DIT030 Course Introduction

Tommaso Piazza

1

slide-2
SLIDE 2

IDC | Interaction Design Collegium

The Course in brief

  • Develop an interactive simulation engine
  • Focus on software engineering
  • Not just game programming
  • Use the paradigm that the engine acts as

middleware

2

slide-3
SLIDE 3

IDC | Interaction Design Collegium

Learning Outcomes

  • Understand the typical structure of simulation engines and the

requirements of specific parts of such engines

  • Understand which public libraries and programs can be

combined with simulation engines to provide the required functionality of an interactive simulation

  • Analyze existing simulation engines to determine functionality

and extendibility

  • Plan several parallel extensions of a simulation engine while

minimizing dependencies

  • Extend existing simulation engines to augment functionality

while maintaining stability and having predictable consequences

  • n resource use
  • Present extensions of a simulation engine through

demonstrators and public presentations

3

slide-4
SLIDE 4

IDC | Interaction Design Collegium

Course Rationale

  • The games industry grows at a tremendous

rate

  • Bigger than Hollywood
  • Large demand on software engineers with formal

education in games programming

  • Modern game development requires good

software engineering skills and no longer allows for the old “hacking” styles

  • Technical complement to the course “Game

Design”

4

slide-5
SLIDE 5

IDC | Interaction Design Collegium

Teachers Involved

  • Main teacher & Supervisor
  • Tommaso Piazza
  • piazza@chalmers.se
  • Examinator
  • Staffan Björk
  • Programme Manager
  • Olof Torgersson

5

slide-6
SLIDE 6

IDC | Interaction Design Collegium

Administrative Stuff

  • Roll call
  • Fill in the form handed out
  • Student representatives
  • 3 people
  • All information about the course in available
  • n the course webpage
  • http://www.cs.chalmers.se/idc/ituniv/kurser/09/simul/
  • Check the webpage frequently!

6

slide-7
SLIDE 7

IDC | Interaction Design Collegium

Grading Information

  • Examination in this course consists of a group project. The course has no

written exam

  • A passing grade requires the following:
  • An approved written suggestion for an individual extension of the

simulation engine

  • A passing grade on your group's project report
  • A passing grade on your group's project presentation
  • A passing grade on your personal project report
  • A verbal presentation of a course subject
  • The course is divided in two parts. One part is 2 points and represents each

student's individual effort and the other is 3 points and represents the project group's collaborative effort. Possible grades are failure, 3, 4 and 5 at Chalmers or U, G and VG at Göteborgs Universitet. Grading is individual and is based on the above mentioned subjects as well as the project supervisor's judgement.

7

slide-8
SLIDE 8

IDC | Interaction Design Collegium

Important Dates

  • Mon, 2 Nov 24.00
  • Extension suggestions should be handed in to project supervisors
  • Mon, 9 Nov
  • Approval of extension suggestions
  • Week 2-7
  • Individual presentations of themes from project members
  • Mon, 11 Jan 24.00
  • Group reports and individual reports should be handed in
  • Exam week
  • Project presentations
  • Failing to keep a deadline without a proper explanation

in good time before the deadline will result in a failing grade!

8

slide-9
SLIDE 9

IDC | Interaction Design Collegium

Game Engines

GameBryo

9

slide-10
SLIDE 10

IDC | Interaction Design Collegium

Example: Quake & Doom Engine

  • Developed by ID software
  • One of the first commercial engines
  • Games act as advertisement for the

engine

  • Old engines are released as Open

Source

  • Price example for Jedi Knight II
  • Q3A: $250000

10

slide-11
SLIDE 11

IDC | Interaction Design Collegium

Example: Quake & Doom Engine

11

slide-12
SLIDE 12

IDC | Interaction Design Collegium

Example Unreal Engine

  • Developed by Epic Games
  • Multiplatform
  • Xbox360
  • PS3
  • PC
  • Popular engine
  • UT07, GoW, Lineage 2, Splinter Cell, BioShock...
  • Unreal 3 has been used in the development
  • f more than 600 titles

12

slide-13
SLIDE 13

IDC | Interaction Design Collegium

Example Unreal Engine

13

slide-14
SLIDE 14

IDC | Interaction Design Collegium

  • Developed by CryTek
  • Commercially available
  • Far Cry 2004
  • Crysis 2007
  • Crysis Warhead 2008
  • Crysis 2 yet to come

Example Cry Engine

http://www.crytek.com/

14

slide-15
SLIDE 15

IDC | Interaction Design Collegium

Example Cry Engine

15

slide-16
SLIDE 16

IDC | Interaction Design Collegium

Key features of most engines

  • Rendering
  • Animation
  • Audio
  • Physics
  • Scripting
  • Networking
  • Cinematics
  • Editors

16

slide-17
SLIDE 17

IDC | Interaction Design Collegium

What is a Game Engine?

  • “A game engine is the underlying software behind a
  • game. It provides the functionality which is common to all

games. A 3D game engine is a game engine that is designed specifically for 3D games (basically, any game that can benefit from a 3D card) ... [it will] provide such functionality as rendering models and worlds, network communications, and interfacing with the player. By using a pre-existing game engine, game developers can skip most of the work that goes into programming a game and instead focus on the content of their particular game.”

http://www.gauge3d.org

17

slide-18
SLIDE 18

IDC | Interaction Design Collegium

Definition of Game Engine

  • A game engine is a top-

down framework of reusable components geared towards computer game development and implementing common concepts and functionality found in most (or all) games for a specific genre

18

slide-19
SLIDE 19

IDC | Interaction Design Collegium

Definition of Component

  • A component is an independent unit of

deployment with contractually specified interfaces and with explicit context dependencies to other external components

  • nly

19

slide-20
SLIDE 20

IDC | Interaction Design Collegium

Definition of Game Component

  • A game component system is a bottom-up

framework of reusable components geared towards computer game development and implementing common concepts and functionality found in most (or all) games for a specific genre

20

slide-21
SLIDE 21

IDC | Interaction Design Collegium

Example RenderWare

  • Game component framework
  • Open framework
  • Multiplatform
  • Interesting architecture
  • Genre packs

21

slide-22
SLIDE 22

IDC | Interaction Design Collegium

Simulation Engines Advantages

  • Simulation engines are a relatively new

concept and allow for a few advantages:

  • Shorter development time
  • Focus on gameplay.
  • Performance and stability

22

slide-23
SLIDE 23

IDC | Interaction Design Collegium

Simulation Engines Disadvantages

  • Generalized structure:
  • Monolithic design
  • Inflexible design
  • Technical limitations
  • These can be avoided at least to some

degree with well planned software engineering

23

slide-24
SLIDE 24

IDC | Interaction Design Collegium

Computer Game Components

24

slide-25
SLIDE 25

IDC | Interaction Design Collegium

Course Focus

  • Game engines and simulation engines
  • Not games and simulations
  • Software engineering for games
  • Technical knowledge for engine programming
  • Using existing frameworks and engines
  • Read, understand and edit external code
  • Documentation of game engine code
  • Group work in project form
  • Present information both to your group and
  • utside of it

25

slide-26
SLIDE 26

IDC | Interaction Design Collegium

Course Focus

  • Not focus on:
  • Game programming
  • Game design
  • Computer graphics
  • The latest in 3D and games
  • How to get a publisher for your game
  • How to start a games company
  • C++ programming
  • Software engineering
  • But it might contain bits and pieces of all of these

things

26

slide-27
SLIDE 27

IDC | Interaction Design Collegium

Course Contents

  • Introduction to simulation engines and practical information
  • Software engineering, architecture and design
  • Multimedia and scenegraphs
  • 3D graphics
  • AI and network
  • Physics
  • Input and collision detections, misc.
  • Project demos:
  • Project
  • Deliveries
  • Extension suggestion, group project repot, individual report
  • Demonstrations
  • Extension demonstration, project demonstration
  • No written exam

27

slide-28
SLIDE 28

IDC | Interaction Design Collegium

Course Contents, cont.

  • One theme each week
  • Two lectures per week (mostly)
  • Monday 10-12
  • Wednesday 10-12
  • One hour mandatory meeting for every group
  • Mondays or Wednesdays 13.00-17.00
  • Mandatory presentation each week

28

slide-29
SLIDE 29

IDC | Interaction Design Collegium

Course Contents, cont.

  • In the course, we want our developed

simulation engines to be:

  • Object oriented
  • Component based
  • General
  • Extendable
  • Effective

29

slide-30
SLIDE 30

IDC | Interaction Design Collegium

Simulation Engine or Game Engine?

  • For the duration of this course, “Simulation

engines” and “Game engines” are synonymous

  • “Game engine” will refer to middleware that

can be used both for simulations and games

30

slide-31
SLIDE 31

IDC | Interaction Design Collegium

Example America’s Army

  • Financed by the US military
  • Two purposes:
  • Training platform for group-based

units

  • Advertisement to recruit new

soldiers

  • Uses the Unreal engine

31

slide-32
SLIDE 32

IDC | Interaction Design Collegium

Game genres

Abstract (Tetris, Qix, Arkanoid) Adaptation (Star Wars, Casino, Tic Tac Toe) Adventure (Spy Vs Spy, Superman, Ultima, Tomb Raider) Artificial Life (The Sims, Creatures) Board Games (Backgammon, Battleship, Scrabble) Capturing (light cycles in Tron) Card Games (Blackjack, Casino) Catching (Stampede) Chase Collecting (Pac Man, Spy vs Spy) Combat (Battlezone, Spy vs Spy) Demo Diagnostic Dodging (Frogger) Driving (Indy 500, Night Driver) Educational

There are a lot of different kinds of computer games Hard to find a good definition Categorized from certain design elements

Management Simulation (SimCity, Civilization, Railroad Tycoon) Obstacle Course (Frogger) Pencil-and-Paper Games (Tic Tac Toe, Hangman) Pinball (Pinball Dreams, Pinball Fantasies) Platform (Donkey Kong, Super Mario Bros, Giana Sisters) Programming Games (CRobots, RARS) Puzzle (7th Guest, Myst, Tetris) Quiz (Jeopardy) Racing Indy 500, Mario Kart 64) Role-Playing (Diablo, Fallout, Ultima, Interstate 76) Rhythm and Dance (Beatmania) Shoot ’Em Up (Galaga, Space Invaders, Asteroids, Doom) Simulation Sports (Madden Football, NHL Hockey, SimGolf) Strategy (Monopoly, Chess) Table-Top Games Target

Escape (Pac Man) Fighting (Mortal Kombat, Tekken) Flying (A-10 Attack, Descent, Flight Unlimited) Gambling Interactive Movie (Dragon’s Lair, Space Ace) Maze (Doom, Pac Man, Lode Runner, Descent) Text Adventure (Zork, Planetfall, Hitchhiker’s Guide to the Galaxy) Training Simulation (Comanche 3, Flight Unlimited) Utility

32

slide-33
SLIDE 33

IDC | Interaction Design Collegium

Game genres and simulation engines

  • The genre is mostly interesting for the design

team, but also for the developers

  • How does the genre affect the demands on the

engine?

  • Is it possible to create a game engine that

allows for any genre?

  • Is it practical to create a game engine that allows

for any genre?

33

slide-34
SLIDE 34

IDC | Interaction Design Collegium

Choice of Platform

  • Large amount of platforms
  • Anything from portable to stationary
  • Console games are more popular than PC games
  • This course focuses on PC/Windows
  • Standard: Good and easy to come by development

tools

  • Comfortable: Available in classrooms and most

students have a lot of experience

  • Variation: The PC is a constantly changing platform,

which challenges our skills

  • Performance: A modern PC has a lot of horsepower

34

slide-35
SLIDE 35

IDC | Interaction Design Collegium

Choice of Language

  • Productivity vs. performance
  • Games contain worlds
  • Object orientation represents this very well
  • Games are huge
  • The games of today are extremely complex and

require a lot of design

  • Games require performance, but not all the

time

  • Focus on optimizing the inner loops and use a

reasonable language for the rest

35

slide-36
SLIDE 36

IDC | Interaction Design Collegium

Choice of Language - C

  • ANSI C
  • Industry standard
  • Advantages
  • C is one of the most effective high level languages
  • C is available in the same standard for most platforms

which allows for multiplatform development. There are also plenty of libraries and tools

  • C allows access to low level functionality
  • Disadvantage
  • Hard to work with modern complex systems
  • Does not inherently support large software structures

36

slide-37
SLIDE 37

IDC | Interaction Design Collegium

Choice of Language – C++

  • Advantage
  • High level language with access to low level

functionality

  • Object orientation
  • Abstraction
  • Encapsulation
  • Inheritance
  • Polymorphism
  • In this course we use C++
  • Unless you already know it, start now!

37

slide-38
SLIDE 38

IDC | Interaction Design Collegium

A Simulation Engine Dissected

  • Documentation
  • Well written documentation of all aspects of the engine
  • Technical support
  • In practice, necessary to enable third party usage. Rarely present in

“free” engines

  • Content creation pipeline
  • A good engine must have a well defined pipeline for creation and

usability of all game content

  • Core functionality
  • The engine must, at least, handle all components required for building a

game or be possible to extend into a game with a well defined interface

  • Extendable
  • A third part developer must be able to add functionality and content that

separates their product from other products

38

slide-39
SLIDE 39

IDC | Interaction Design Collegium

Summary

  • In this course we examine the development
  • f simulation engines.
  • Not games development
  • A simulation engine is the middleware which

is designed to allow for a higher level of abstraction for games development

  • Simulation engines is a lucrative business!
  • We will use the Windows platform.
  • We will use the C++ language for

implementation.

39

slide-40
SLIDE 40

IDC | Interaction Design Collegium

Project Scenario

  • “Your project group is a newly started game studio with the ambition to

develop groundbreaking 3D-simulations for the PC-platform. You have the competence, but at the moment you lack the financial resources to fully develop the next blockbuster title. In order to be able to achieve this, you need to establish collaboration with a publisher who is interested in financing your next game. Publishers are notoriously hard to impress and you need to prove your technical expertise to sign a

  • deal. To your aid, you have basic development tools and an existing 3D-

simulation engine (Ogre3D). Your task for the next seven weeks is to learn the simulation engine, integrate necessary components, extend it with technical features to impress the publisher and to implement a tech demo which shows what your modifier 3D-engine can do.”

  • The project supervisor (me) you have been assigned to has two tasks.

Partly to act as an ordinary supervisor and mentor in your work and to act as the publisher and evaluate your work

40

slide-41
SLIDE 41

IDC | Interaction Design Collegium

Project

  • This course is based on the group project
  • 5 students per group
  • Individually
  • Responsible for their own theme
  • Suggesting an extension to the simulation engine within their theme
  • Implementing their extension
  • Verbally present their theme and extension to the rest of their group
  • Write an individual report and project diary
  • Groups
  • Design and implement a tech demo that utilizes all of the extensions

that have been created by the group members

  • Write a project report
  • Verbally present the project to the rest of the class

41

slide-42
SLIDE 42

IDC | Interaction Design Collegium

Project Group

  • Form groups of 5 people (no exceptions unless absolutely

necessary!)

  • Write down the name and email of everyone in your group
  • Themes
  • Software Engineering
  • 3D graphics
  • Multimedia
  • AI and network
  • Physics
  • (Misc)
  • First individual presentation next week!

42

slide-43
SLIDE 43

IDC | Interaction Design Collegium

Project Tips!

  • This is a large project
  • Roughly 20h/week
  • Begin work immediately
  • Get to know the simulation engine
  • Do not expect perfect documentation
  • Do not forget your individual diaries
  • Start immediately

43

slide-44
SLIDE 44

IDC | Interaction Design Collegium

How to group-work and share with me

  • All students are required a Google Account
  • concerned about privacy? http://www.dataliberation.org/
  • Sharing Documents (Google Docs)
  • The group report and any tech demo presentation must be created and shared by

the group head to me (simulation.engines@gmail.com) and all group members

  • The group head will create a folder named as follow simEngines-g# (ex. simEngines-

g1) and share it with me

  • Inside the folder there will be two files named as follow simEngines-g#-GroupReport

(ex. simEngines-g6-GroupReport) and simEngines-g#-GroupPresentation (ex. simEngines-g2-GroupPresentation)

  • For individual reports, extension suggestions and presentation it is enough to create

the documents and share them with me without creating a folder. Naming conventions are simEngines-g#-YourName-Report|Extension|Presentation (ex. simEngines-g7-TommasoPiazza-Report, simEngines-g7-TommasoPiazza-Extension, simEngines-g7-TommasoPiazza-Presentation)

  • Sharing Code (Google Code)
  • http://code.google.com/hosting/createProject - Created by the group head
  • invite all group members and me
  • Version control system is SVN. License is up to you.

44

slide-45
SLIDE 45

Thank you!

Questions?

45