Introduction
This course provides an introduction to the principles and practice of computer game programming and design. This includes an introduction to game hardware and systems, the principals of game design, object and terrain modeling, game physics, AI for games, networking for games, rendering and animation, aural rendering.
Text
There is no required text. We will post copies of materials to the class Schedule Page as they become available.
Prerequisites
CMSC 427 (corequisite): Computer Graphics or permission of instructor. Knowedge of C or C++ programming.
Course Work
The final course grade will be based on three primary components:
- Programming Projects:
- There will be a small individual "start-up" programming assignment to test your knowledge of computer graphics, which will be followed by a major group assignment. The major programming project involving small groups and will span the entire semester. Each group will propose, design, and implement its own project. There will be intermediate milestones throughout the semester.
- Midterm exam:
- To be given in class. The date will be announced.
- Final exam:
- A comprehensie final exam will be given on Fri, Dec 15, 8:00-10:00am.
Tentative weights: Programming projects 50%, Midterm 20%, Final exam 30%.
Academic Dishonesty
As in all courses, students shall to abide by and uphold the University's Code of Academic Integrity. Violations of these policies will be dealt with harshly, and typically result in the assignment of a failing XF grade for the course. Please consult the Student honor council page for further information.
Students shall respect the intellectual property rights of others at all times, and shall not submit any resources, software, documents or other artifacts that are not their own, without explicit advanced approval from the course instructors.
Attempts to falsely represent the correctness of your work, or to delay other members of the class from completing an assignment, or to disrupt computing services for either students or faculty, or to have project deliverables derive from the efforts of others outside the class (except as explicitly arranged with the instructor) will be considered forms of academic dishonesty. If you are in doubt, please check with one of the instructors.
Topics
The following list of topics is very tentative. Depending on time, some topics may be added or dropped, and the order of topics may change.
- Introduction:
- History and evolution of games, current state of the art, and future prospects in entertainment, education, and training.
- Game Hardware:
- GPUs and PPUs, game consoles, mobile gaming, peripheral devices and displays.
- Game Design:
- Stylization vs. realism, accuracy and believability.
- Real-time Graphics:
- Review/survey of GLUT, OpenGL, event-driven programming, transformations, illumination, texturing. Efficiency issues. Programmable GPUs and shaders.
- Object Modeling:
- Shape representations and triangle meshes, level of detail, terrain modeling, articulated models and skinning, procedural and texture modeling, geometry synthesis.
- Game Physics:
- Newtonian dynamics, particle simulation, mass-spring models, collision detection and response, physics on GPUs.
- Game AI:
- Fuzzy Logic and AI, agent-based systems, goal-driven agents, finite-state machines, path planning, flocking and steering.
- Animation:
- Physics-based animation, AI-based animation, motion capture, articulated characters, stylized animation, scripting.
- Aural Rendering:
- 2D and 3D audio and HRTFs, audio acquisition and libraries, local and global aural rendering, aural game design.
- Networking:
- TCP/IP overview, sockets programming, broadband and wireless multiplayer gaming, latency hiding, distributed data consistency.
- Case Studies:
- Important milestones in game development.