CS5243 3D Game Programming Technology
-2007/2008 Semester I, School of Computing, National University of Singapore

Instructor Course
Tan Tiow Seng

Email: tants@comp.nus.edu.sg 

Tel: 6516-6764 / 6516-6559 

S15-06-03 (Office), S15-06-18 (Lab)

Lecture every Friday, 6:30pm--8:30pm

C1/212A

Consultation: by appointment through email.              

Rationale
Many know 3D computer gaming is a huge industry with a tremendous amount of investments and revenues each year. On the other hand, many of us know very little about the technologies behind 3D games - these very technologies have been driving the advances in graphics processor units (GPU) in the recent years. We now enjoy about twice the GPU's performance (at the same cost) every six months - thanks to the huge gaming market and everlasting expectations (on, for example, realism and speed) of gamers. This trend is expected to continue for many years to come.

Objectives
This module focuses on techniques employed in 3D game engines to achieve real-time rendering. Major topics include game engine architecture; object representations and scene graph; level-of-details control; terrain processing; visibility computation; image-based rendering; collision detection; real-time shadowing; rendering effects and GPU programming; modeling; networked multi-player games; and AI techniques. (Topics that may not be discussed are: lighting and interactive control; animation and dynamic).

Upon completing the module, students will be able to design and build game engines from scratch (assuming a proper use of knowledge learnt in software engineering), and to research and develop new game engine techniques.  

Course Prerequisites
Data structures, basic graphics programming (such as using OpenGL or DirectX as one can learn in CS3241) and some familiarity with matrices, vectors, analytic geometry, and calculus. This course overlaps slightly in content with CS4213 - Game Development. As CS5243 is a graduate course, it emphasizes much more on research work in advanced game programming technology (rather than in the many facets on game building). 

Textbook and References
The following 4 books contain material that I will be discussing in lecture. I estimate that the books contain 80% or more of the topics (not material) that I will be covering. However, I may concentrate at time on the state-of-the-art issues on each topic and leave quite a bit of the general reading to you.  Additional references will be provided in due course. 

Our textbook and references are available in our Science Library. You are not required to own a copy of the textbook.

Textbook:
Alan Watt and Fabio Policarpo, 3D Games Real-time Rendering and Software Technology, (volume 1) ACM Press / Addison-Wesley, 2001.
 (QA76.76 Cga W 2001)

References:
(1) Tomas Akenine-Moller and Eric Haines, Real-time Rendering, A K Peters Ltd, 2002.
  (T385 Mol2002)
(2) Luebke, Reddy, Cohen, Varshney, Watson, Huebner and Brooks, Level of Detail for 3D Graphics, Elsevier Science, 2003.  ( T385 Lev 2003)
(3) Alan Watt and Fabio Policarpo, 3D Games Animation & Advanced Real-time Rendering, (volume 2) Addison-Wesley, 2003.
(QA76.76 Cga W 2003)
 Textbook: Reference #1:  Reference #2:
3D Games Real-time Rendering and Software Technology Real-Time Rendering (2nd Edition)

See also http://www.realtimerendering.com

 

Lectures
There will be 13 lectures. I will try to provide information on each lecture in advance so that you can do some reading to prepare for discussion during lectures.  Please be aware that lecture only summarize the main concepts of different topics, you are encourage to refer to textbook and references given in our course web-pages to better understand the course material. Please monitor our web regularly for important announcements too. There is no tutorial for this course, but you are most welcome to email me to arrange for a discussion on the course material.  

Assignments (40%) There will be 5 lab (programming assignments) to build up a game engine with various common features. You will be given two weeks each (effectively 1 week :) to complete the programming assignment. Skeleton codes may be given to build your game engine. Each programming assignment, on average, is expected to take 1 working day to complete. You are to submit the assignment to ivle workbin by the deadline - workbin will close on the deadline, i.e., late submission is not allowed. Please zip up all your programs, project files, .lib, .h, .dll, etc. to submit as 1 file -- I would expect that when I download your submission and unzip it in my machine, I can immediately compile and run it with no problem -- penalty will be imposed if this is not strictly followed. 

Quiz (20%) This will be a MCQ/short questions, closed book, in class test of 1 hour, on 16 November 2007 (Friday) - week #13.

Mini-project (40%)
There will be 1 project of your choice. You can build a game based on the game engine you will build from your assignments, or you can choose topics mentioned during lectures or others of relevance to this course. Types of work may be a comprehensive survey (lowest in level of difficulty), programming demonstration using state-of-the-art equipments in Graphics Lab (intermediate in level of difficulty), novel solutions to some game problems (highest in level of difficulty). A project proposal must be submitted by 14 September  2007 for approval. There may be a short presentation by you on 5 October 2007 to report your progress, and a final presentation will be conducted on the reading week (19 - 20 November 2007). Final report has to be submitted by 23 November 2007. Expected effort on you is 60 or more (productive) hours. 

Course Grading 
This course has no examination. The course grade is based on your continuous assessment that includes the above: assignments 40%, quiz 20%, and mini-project 40%.

 

Date: 4 July 2007