3D Game Programming

[ Course slides ] [ Course program packages ] [ Useful links ]

General information

Office Hour: Monday: 09:00 - 10:00

Office: Room 527

Email: wingo.wong@gmail.com or cswingo@cs.nctu.edu.tw

#ext. 56626


Teaching Assistants


電資大樓 707

Microelectronics &

Information Systems

Research Building

Room 707

Tel. x59274


Please form a group which consists of at almost three students.

When you submit your programming assignment, you must include /lib /programs, /boost_1_42 /include.

Notice that we will compile your program for marking. Please follow the instructions.


Final Project


What to do?

1. Submit your hardcopy final project report

2. Present and demo your work.

3. Presentation time: 15-20 minutes

4. Live Demo. Show source code and explain it


Each group member must present and then each group performs a demo. Also you should submit a hard copy report.

Show clearly what you have done.


Report requirement

Term project requirement

Presentation Marking Scheme



On-site programming tests

1. create a scene
2. use mouse to control
3. ray, volume queries
4. particle systems
5. simple animation, e.g., moving a light, changing size of objects, etc.
6. shadow, lighting, terrain, viewport, camera, materials, ray-plane intersection, etc.
All the materials that have been taught.



Submit a hard copy in class.

The proposal should have 2 pages.

The following items should be included:

0. The information of the group members.

1. Introduction

2. Game Story

3. System requirement

4. How the game will be played?

5. Milestones

6. Work load distribution




Lab Exercises:


Date:  Set One Instruction;


Date: Set Two Instruction;


Empty skeleton package [.NET2010]


Demo package [.NET2010]


You should follow the instruction and finish all the exercises.





IMPORTANCE for marking assignments.

Make sure that you (students):

**Must compile and build programs on .NET2010. Make sure that the file paths are relative to your main file. Do not use absolute file paths.

**.NET2010 package with one example 3DGameCourse_Ogre_vc10_v1-7-1_NET2010.7z

       Build the program in the release mode. You can find the executable file, demo_hello.exe, in ./bin/release

**Need vc100 toolset in other Visual Studio (VS) version, e.g., VS2013, VS2015.

**You may need to demo your programs to our TAs.

**When you submit your assignments or projects, you should put all your files in one folder. Name your folder by starting with the homework ID and your student ID.For example, if the homework ID is hw01, your student ID is 123456789 and your name is XYZ, then your folder name should be hw01_123456789_XYZ.


If your program cannot be built properly or there is a crash, the problems may be due to incompatible versions of your platform and my platform. To solve the problem: use the correct version and platform. Also, read Ogre.log to see if you find some messages that can help you resolve problems.

Course Evaluation

Three Programming Assignments and Reports: 35%

-First assignment: 10%

-Second assignment: 10%

-Third assignment + Demo: 15%

Programming Quizzes + Demo: 15%

Final Project

+ Presentation: 10%

+ Program Content + Live Demo: 25%

+ Report: 15%

Course slides:



Source code(參考源程序)


Course Outline

Introduction to Game Development

Doxygen ( Documentation)



The Main Game Loop

Introduction to Engine Main Loop



3D Engine Training (1)

SceneNode Entity





Multi SceneManagers


3D Engine Training (2)

Terrain (try different types of SceneManager)

Sky ( try different types and materials)

Fog (try it out!)

FrameListener_intro ( check command console)

FrameListener KeyEvents etc.

(Try unbuffered mode and buffered mode)


Ogre Programming Intermediate

Int. Tutorial One (Animation)

Int. Tutorial Two (Viewport ray)

Int. Tutorial Three (Query Mask)

Int. Tutorial Four (Volume selection)


Character Animation Source Code

RayQuery Source Code

Simple Selection Source Code

Simple Volume Selection Source Code

Mapping between screen and scene


Geometry for Games

Creation of mesh in Ogre3D

Ogre manual mesh ppt


Advanced Ogre Topics and Cg programming

Sample program

(Reference: Editable Terrain Manager)


Introduction to Game Development



Game System Analysis



Game Mathematics



Scene Management






Game AI - Path finding



Game AI - Steering behaviour

Example One (Constant force magnitude)

Example Two (Inverse distance)


Game AI - Finite State Machine



Game Physics - Particle system & Game Effect (FX)

Simple Net 1 (using springs)

Simple Net 2


Hero’s Journey /span>


skeleton demo source


Network Gaming



Introduction to MMOG



Non3D part and course summary



Project demo



Sample Demo (Written by me)

Simple OpenAL demo + Ogre3D (with source code)


Useful links

          OGRE3D main homepage, www.ogre3d.org/
Information on OGRE3D: http://www.ogre3d.org/wiki/index.php/Main_Page

          Tutorials: http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials

          OGRE3D on wiki: http://en.wikipedia.org/wiki/OGRE_Engine

          Editable terrain editor: http://www.oddbeat.de/wiki/etm

          Wiki, http://en.wikipedia.org/


          Doxygen: http://www.stack.nl/~dimitri/doxygen/



          A Free 3D manipulator program.


          GIMP (Image manipulation program): http://www.gimp.org/

      You can edit the terrain by using GIMP. Note that the final image should be flattened and stored as gray-level image.


          MeshLab: http://meshlab.sourceforge.net/

MeshLab is an open source, portable, and extensible system for the processing and editing of unstructured 3D triangular meshes. The system is aimed to help the processing of the typical not-so-small unstructured models arising in 3D scanning, providing a set of tools for editing, cleaning, healing, inspecting, rendering and converting this kind of meshes.


          Live for speed ( Online racing simulator ) : http://www.lfs.net/



Last updated: 13th Sep. 2020