NOTE - This page is still very much subject to change!

Markus Larsson will not be able to answer mail until week 46.
Send questions to Tommaso Piazza or Staffan Björk (mail below)


2008-12-16: Added PDF of Lecture 12 and SGA Lecture.

2008-12-14: Don't forget to BOOK your supervision before Monday.

2008-12-5: Don't forget to BOOK your supervision before Monday.

2008-12-1: Added PDF of Lecture 11.

2008-11-27: Added PDF of Lecture 10. Don't forget to BOOK your supervision before Monday. Supervision on MONDAY will be via Skype, skype name: simengines, webcam required!

2008-11-24: Added PDF of Lecture 9

2008-11-19: Added PDF of Lecture 8. Don't forget to BOOK your supervision before Monday. Supervision will be via Skype, skype name: simengines, webcam required!

2008-11-17: Added PDF of Lecture 7

2008-11-14: Added PDF of Lecture 6 and a checklist for your presentation. Don't forget to BOOK your supervision before Monday.

2008-11-11: Added PDF of Lecture 5

2008-11-5: Re-arranged Group 3, Group 1 [Moved 1 student from G3 to G1] and Group 6, Group 7 [Moved 1 student from G6 to G7]. Added PDF of Lecture 4. BOOK supervision 2 before Monday.

2008-10-31: There are some issues with missing students and groups. If you don't appear in the group list don't worry. We'll take this on Monday - Tommaso.

2008-10-30: Added PDF of Lecture 2. Don't forget to BOOK your supervision before Monday. Read the description first.

2008-10-28: Project groups on-line

2008-10-27: Added PDF of Lecture 1

2008-10-16: Some changes to the schedule.

2008-10-06: Website published.

Course description

From the course catalogue:

The modeling and implementation of the fundamental components of interactive simulations is the core of the Simulation Engine course. As given by the main use areas of these systems, simulations within the automobile and aviation industry and 3D games, the course focuses mainly upon 3 dimensional interactive simulations although other types of simulation are also included. The visual components of interactive simulations are given most focus within the course but connections to related areas such as networking, artificial intelligence and physics simulations are covered.

The course consists of two lectures per week as well as a group project.

Main teacher: Markus Larsson, markus.larsson[+]

Examiner: Staffan Björk, staffanb[+]
Connection 1039 (031-772 1039 outside Chalmers).


Markus Larsson (main teacher) [ML], markus.larsson[+]

Project supervisors

Tommaso Piazza, piazza[+]

Guest lecturers


Course literature

Kursboken Object-Oriented Game Development
Addison-Wesley (Harlow, 2004), ISBN 0-321-17660-X, Pearson Education

The book is available at Cremona and should be possible to order from a number of online stores.

The following books are also recommended in addition to the official course literature.

  • Foley, van Dam, Feiner, Hughes. Computer Graphics: Principles and Practice, second edition. Addison-Wesley (Reading, 1997).
  • Watt, Policarpo. 3D Games: Real-Time Rendering and Software Technology. Volume One. Addison-Wesley (Harlow, 2001).
    (Angavs tidigare som kurslitteratur och är ett acceptabelt substitut.)
  • Watt, Policarpo. 3D Games: Animation and Advanced Real-Time Rendering. Volume Two. Addison-Wesley (Harlow, 2003).
  • Bourg. Physics for Game Developers. O'Reilly (Sebastopol, 2002).
  • Eberly. 3D Game Engine Design: A Practical Approach to Real-Time Computer Graphics. Morgan Kaufman (San Fransisco, 1999).
  • Stroustrup. The C++ Programming Language, third edition. Addison-Wesley (Reading, 1997).
  • Gamma, Helm, Johnson, Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (Reading, 1995).
  • Akenine-Möller, Haines. Real-Time Rendering, second edition. A.K. Peters (2002).

Note that these books are not mandatory for the course, but are worthy additions to the bookcase of any serious game developer.


The course consists of 14 lectures (2 x 45 minutes) and 7 supervisor meetings (45-60 minutes). Lectures are held at the following times and locations:

  • Monday: 10-12 in room Steve Jobs.
  • Wednesday: 10-12 in room Steve Jobs.
Week Lectures etc. ThemeLiterature
1 Mon, 27 oct SB Course introduction: introduction, administrative information, project description.
[Project description]
- Chapter 1-2, 3.4-3.5
Wed, 29 oct JP Practical system development: the C++ language, tools, optimization, documentation.
- NA
2 Mon, 3 nov - Guest lecture: Nils Andersson from EON Reality -  
Wed, 5 nov TPSystem development for simulation engines: UML, the development process, frameworks.
Software Engineering Chapter 3 (except 3.4-3.5), 4.1-4.2
3 Mon, 10 nov
MLArchitectures and design: architecture, design patterns, game developer patterns, component based development, Ogre3D information.
Software Engineering Chapter 4.3-4.4, 5
Wed, 12 nov
ML Scenegraphs: introduction, node representation, traversing, implementation.
Sound and multimedia: introduction, libraries and API's, 3D-sound, music, full-motion video, cutscenes.
Multimedia Chapter 5.4.6

4 Mon, 17 novML3D-graphics 1: realtme 3D-graphics, part 1.
3D GraphicsNA
Wed, 19 novML3D-graphics 2: realtme 3D-graphics, part 2.
5 Mon, 24 nov ML Artificial intelligence: introduction, behaviours, perception, decisions, actions, pathfinding.
Network & AI NA
Wed, 26 nov ML Network programming: architecture, latency, security, online games.
Chapter 5.4.11
6 Mon, 1 dec ML Physical simulations: basic mechanics, Newton's laws, forces, kinetics, modelling, real-time simulation.
Physics Chapter 5.4.10
Wed, 3 dec - Guest lecture: TBA - -
7 Mon, 8 dec - Guest lecture: Swedish Game Awards
Begins at 13.00!

[PDF] Movies: Blueberry Garden, Best Innovation 2008, Magicka, Game of the Year 2008, Swarm, Best Mobile Game with JavaME 2008, Megachile Pluto, Nominee Best Execution 2008

Wed, 10 dec ML

Input and colission detection: Input devices, force feedback, collission detection, representation, culling, bounding volumes.
Misc: 2D graphics, front-ends and GUIs, resource management, scripting.

Chapter 5.4.8 - 5.4.9, 8, Case Study 4.4 (GUI)
T Mon, 15 dec - - - -
Wed, 17 dec - Project presentations:
Begins at 13.00!
- -


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.


The practical work in this course is done on a group project which is done during the whole course. The work is done in groups of six students, where each student is assigned one of six themes that the course is divided into. As a foundation Ogre3D, a massive Open Source-project for development of 3D-games, is used. Each group member is responsible for studies in their assigned theme, find a suitable and non-trivial extension of Ogre3D (or other relevant API relevant to the group project) and to design and implement their extension. The student shall then verbally present their work to their project supervisor and the rest of their group. The group will also present a "tech demo" of their extended 3D-engine where they use the new functions that they have implemented.

Read the project description for more detailed instructions.

Important dates

  • Wed, 14 nov kl 24.00 - extension suggestions should be handed in to project supervisors.
  • Mon, 19 nov - approval of extension suggestions.
  • Week 2-7 - individual presentations of themes from project members.
  • Wed, 7 jan kl 24.00 - group reports and individual reports should be handed in.
  • Exam week - project presentations.


Links (descriptions in Swedish atm)

Here follows a list of links to interesting websites concerning 3D-engines, 3D-programming, games development etc. If you are aware of any interesting sites, feel free to send an e-mail!


  • Game Engine Technology - kurs motsvarande denna på Lunds Tekniska Högskola. Se exempelvis deras seminarier om CrystalSpace.

Computer game development

  • - en lysande webbplats med informationsresurser om allt möjligt som rör datorspel. Diskussionsforumen är speciellt intressanta och är mycket aktiva och aktuella.
  • DevMaster - ännu en informationsresurs för datorspelsutveckling. Presenterar nyheter inom området, driver en Wiki för utveckling, och har en bra databas över 3D-motorer samt aktiva diskussionsforum.
  • Generation5 - en lysande en mängd spelrelaterade artiklar.

Simulation engines

  • 3D Game Engine List (3DEL) - en något inaktuell samling av olika 3D-motorer, kommersiella som fria. Fortfarande intressant som bakgrundsmaterial.
  • 3D Engine Database - en databas med 3D-motorer som drivs och underhålls av DevMaster.
  • Emergent Game Technologies - spelmotorutvecklare som ligger bakom Gamebryo (f.d. NDL (f.d. NetImmerse)).
  • Game Engine Anatomy 101 - en bra genomgång vad en spelmotor egentligen är och vad skillnaden mellan ett spel och en spelmotor går. Skriven av Jake Simpsons, f d utvecklare på Raven Software. Går in i detalj på flera områden, endast de två första sidorna är relevanta för detta moment.
  • What's a Game Engine? - en bra (icke-teknisk) introduktion till vad en spelmotor är.
  • Fly3D - 3D-spelmotorn i Watts och Policarpos bok (den gamla länken fungerar inte).
  • CrystalSpace - en relativt komplett Open Source 3D-spelmotorn som användes som fallstudie i kursen förra året. Anledningen till att vi inte längre använder CS är att motorn är relativt odokumenterad, krånglig och svår att sätta sig in i.
  • Unreal Developer Network - information om The Unreal Engine, simuleringsmotorn back Unreal Tournament, America's Army, etc.
  • Gamebryo - Gamebryo (f d NetImmerse) är NDL's kommersiella simuleringsmotor.
  • Genesis3D - en Open Source simuleringsmotor.
  • RenderWare - en kommersiell "komplett portfölj" av verktyg för spelutveckling, inklusive en simuleringsmotor (används t ex av Grand Theft Auto).
  • Jupiter - Jupiter (f d Lithium?) utvecklas av Touchdown Entertainment (f d LithTech) och är en samling verktyg (inklusive en simuleringsmotor) för spelutveckling. Jupiter används t ex av TRON och No One Lives Forever 2.
  • FlightGear - en Open Source flygsimulatormotor för olika plattformar.
  • Id Software technology licensing -- Quake-motorn var en av de första spelmotorer som licensierades ut.


  • Ogre3D - projekthemsidan för Ogre3D och den definitiva källan för information, features, nedladdning, dokumentation, osv för grafikmotorn.
  • Ogre3D-installation (lokal) - Martas installationsanvisningar för Ogre3D på skolan.

Simulations and computer games

  • Americas Army - Amerikanska arméns stridssimulator som är fritt tillgänglig och spelas på internet som ett datorspel, men också används i träning av riktiga soldater.
  • Flight Simulation at Saab Aerosystems - en engelsk artikel om användandet av flygsimulatorer på Saab (PDF).


Software Engineering for computer games


  • GeometricTools (tidigare känt som Magic Software) - en värdefull samling algoritmer och källkodssnuttar för olika typer av matematiska operationer, som t ex intersections, tesselation, interpolation, etc. Härstammar bla från boken 3D Game Engine Design av David H. Eberly.
  • Virtual Terrain Project (VTP) - ett internetprojekt med syfte att sprida olika tekniker för utomhusrendering, allt ifrån terräng, kultur (vegetation, hus, vägar, etc), databaser, etc.
  • Cal3D - ett skelettbaserat animeringsbibliotek för 3D-program som utvecklas som Open Source.
  • Rotating Objects Using Quaternions - artikel på Gamasutra som diskuterar hur man kan använda sig av quaternions för mjuka kamerarörelser (kräver gratis registrering på Gamasutra).
  • TerraGen - världsgenerator för Windows och MacOS (fritt tillgänglig).
  • FreeWorld3D - helt interaktivt 3D-terrängeditor.


  • OpenSG - website för det nya OpenSG-biblioteket (Open Scene Graph), en satsning för att skapa ett standardiserat scengrafsbibliotek.
  • Java3D - Java3D är Javas 3D-bibliotek som också är centrerat kring en scengraf. Se API referensen för mer information. kan också vara intressant.
  • OpenGL Performer - Performer är SGI's scengrafsbibliotek för visualiseringsapplikationer. Dess dokumentation kan vara väldigt upplysande för de som vill bygga sina egna scengrafs-API:er.

Sound and music

  • Creative Developer Central - Creative Labs är skaparna av det ursprungliga Soundblaster-kortet och stöder just nu deras EAX-bibliotek för environmental audio. Denna site är deras supportcentral för utvecklare. (Kräver dock medlemskap.)
  • OpenAL - OpenAL (Audio Library) är ett försök att standardisera ljudhantering på samma sätt som OpenGL standardiserade 3D-grafik. Har vunnit erkännande och används t ex av Jedi Knight 2, America's Army, Unreal Tournament 2003, osv.
  • fmod - kraftfullt cross-platform ljud-API som är fritt tillgängligt för icke-kommersiell användning.

Artificial intelligence

Network games

  • WorldForge - ett Open Source-projekt som ämnar att bygga ett kraftfull ramverk för onlinespel.
  • OpenTNL - en öppen version av Torque Network Library, som är nätverksmotorn i Torque Game Engine och som härstammar från spelet Starsiege: Tribes (1 och 2). Väldigt kraftfull och välbeprövad.


  • Havok - kommersiell fysikmotor för PlayStation, Nintendo GameCube, Xbox och PC.
  • JSBSim - C++-implementation av en Open Source generisk flygplansmodell (FDM - flight dynamics model). (Associerat med FlightGear-projektet.)
  • Open Dynamics Engine (ODE) - en Open Source fysikmotor.
  • SOLID (Software Library for Interference Detection) - ett Open Source-bibliotek som tillhandahåller avancerad kollisionsdetektering för interaktive 3D-applikationer (som t ex spel) -- Open Source.
  • I-COLLIDE - kollisionshantering för konvexa polyhedra (verkar dock inte ha uppdaterats på ett tag).
  • RAPID (Robust and Accurate Polygon Interference Detection) - avancerad kollisionshanteringsbibliotek för miljöer av "ostrukturerade" modeller ("polygonsoppor"). Fritt tillgängligt för icke-kommersiell användning. Baserat på ett SIGGRAPH'96 paper om OBB-trees.
  • V-COLLIDE - en blandning av I-COLLIDE och RAPID.
  • Newton Game Dynamics - fritt tillgängligt fysikbibliotek (dock utan källkod?). Har Ogr3D-bindningar (OgreNewton).


  • Dependency Walker - gratis utility som scannar Windows-moduler för att härleda deras beroenden.
  • NSIS - Nullsoft Scriptable Install System, an Open Source installer creation application developed by the creators of WinAMP.
  • InnoSetup - Populär skriptbaserad installationsverktyg som klarar det mesta.
  • GameMonkey Script - ett inbäddat skriptspråk för användning i datorspel och simuleringar.
  • Crazy Eddie's GUI - gratis bibliotek för alla typer av grafiska användar gränssnitt. Allt frå fönster till sliders och knappar. Fungerar mycket bra tillsammans med OGRE.

This page is updated by Markus Larsson. (markus.larsson [+]