45
Simulation Engines TDA571|DIT030 Course Introduction Tommaso Piazza 1 Monday, October 25, 2010

Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

Simulation Engines TDA571|DIT030 Course Introduction

Tommaso Piazza

1Monday, October 25, 2010

Page 2: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

2Monday, October 25, 2010

Page 3: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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 on resource use

Present extensions of a simulation engine through demonstrators and public presentations

3Monday, October 25, 2010

Page 4: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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”

4Monday, October 25, 2010

Page 5: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Teachers Involved

Main teacher & Supervisor Tommaso Piazza [email protected]

Examinator Staffan Björk

Programme Manager Morten Fjeld

5Monday, October 25, 2010

Page 6: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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 on the course webpage http://www.cs.chalmers.se/idc/ituniv/kurser/10/simul/ Check the webpage frequently! RSS or Twitter

6Monday, October 25, 2010

Page 7: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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.

7Monday, October 25, 2010

Page 8: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Important Dates Mon, 1 Nov 24.00

Extension suggestions should be handed in to project supervisors

Mon, 8 Nov Approval of extension suggestions

Week 3-7 Individual presentations of themes from project members

Mon, 10 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!

8Monday, October 25, 2010

Page 9: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Game Engines

GameBryo

9Monday, October 25, 2010

Page 10: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

10Monday, October 25, 2010

Page 11: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Example: Quake & Doom Engine

11Monday, October 25, 2010

Page 12: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Example Unreal Engine

Developed by Epic Games Multiplatform

Xbox360 PS3 PC iOS version coming

Popular engine UT07, GoW, Lineage 2, Splinter Cell, BioShock...

Unreal 3 has been used in the development of more than 600 titles

12Monday, October 25, 2010

Page 13: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Example Unreal Engine

13Monday, October 25, 2010

Page 15: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Example Cry Engine

15Monday, October 25, 2010

Page 16: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Key features of most engines

Rendering Animation Audio Physics Scripting Networking Cinematics Editors

16Monday, October 25, 2010

Page 17: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

17Monday, October 25, 2010

Page 18: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

18Monday, October 25, 2010

Page 19: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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 only

19Monday, October 25, 2010

Page 20: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

20Monday, October 25, 2010

Page 21: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Example RenderWare

Game component framework Open framework Multiplatform Interesting architecture

Genre packs

21Monday, October 25, 2010

Page 22: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

22Monday, October 25, 2010

Page 23: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

23Monday, October 25, 2010

Page 24: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Computer Game Components

24Monday, October 25, 2010

Page 25: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

outside of it

25Monday, October 25, 2010

Page 26: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

26Monday, October 25, 2010

Page 27: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

27Monday, October 25, 2010

Page 28: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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 Tuesdays 13.00-17.00 Mandatory presentation each week

28Monday, October 25, 2010

Page 29: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

29Monday, October 25, 2010

Page 30: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

30Monday, October 25, 2010

Page 31: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

31Monday, October 25, 2010

Page 32: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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 gamesHard to find a good definitionCategorized 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)SimulationSports (Madden Football, NHL Hockey, SimGolf)Strategy (Monopoly, Chess)Table-Top GamesTarget

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

32Monday, October 25, 2010

Page 33: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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?

33Monday, October 25, 2010

Page 34: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

34Monday, October 25, 2010

Page 35: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

35Monday, October 25, 2010

Page 36: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

36Monday, October 25, 2010

Page 37: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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!

37Monday, October 25, 2010

Page 38: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

38Monday, October 25, 2010

Page 39: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

Summary

In this course we examine the development of 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.

39Monday, October 25, 2010

Page 40: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

40Monday, October 25, 2010

Page 41: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

41Monday, October 25, 2010

Page 42: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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 Monday November 8th

42Monday, October 25, 2010

Page 43: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

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

43Monday, October 25, 2010

Page 44: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

IDC | Interaction Design Collegium

How to group-work and share with me All students are required a Google Account

concerned about your data? 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 ([email protected]) 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

44Monday, October 25, 2010

Page 45: Simulation Engines TDA571|DIT030 Course Introduction · A passing grade on your group's project presentation A passing grade on your personal project report A verbal presentation

Thank you!

Questions?

45Monday, October 25, 2010