3D Game Programming

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

General information

Office Hour: Monady: 09:00: 10:00

Office: Room 706

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

#ext. 56626


Teaching Assistants:

Name <Email>


Office hour

曾義鈞 <kilaonlylove@gmail.com>

電資大樓 707



電資大樓 707

陳萱 <hsuanchen.18@gmail.com>

電資大樓 707

楊翔宇 <suapys@gmail.com>

電資大樓 707

張家浩 <kahogeoff@gmail.com>

電資大樓 707


電資大樓 707

Microelectronics &

Information Systems

Research Building

Room 707

Tel. x59274

Course time schedule:

Monday: 13:20 15:10. Thursday: 09:00 09:50.

Room: ED102

Book: No book

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.

Score List (2017/10/08)


Final Project


What to do?

1. Submit your hardcopy final project report

2. Present and demo your work.

3. Presentation time: 15-20 minutes


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.



Due date: 23th October, in class. 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):

1. 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.

2. OGRE3D : OgreSDK_vc9_v1-7-1.exe or up


The version used in the course:


2010-04-25 52.3 MB




.NET2010 package with one example 3DGameCourse_Ogre_vc10_v1-7-1_NET2010.7z [NEW]


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

4. 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.

Course Evaluation

Three Programming Assignments and Reports: 35%

-First assignment: 10%

-Second assignment: 10%

-Third assignment: 15%

Programming Quizzes: 15%

Midterm (on-site programming tests): 10%

Final Project (Presentation + (Content+Demo) + Report): 10%+ (20%)+10%

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

New: 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


Heros Journey


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/


Blender: https://www.blender.org/

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: 14th Feb. 2016