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:
- Team Project:
- There will be a major programming project, spanning the entire semester, involving small teams. Each team 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 14, 8:00-10:00am.
Tentative weights: Programming project 50%, Midterm 20%, Final exam 30%.
More about the Team Project: Team members will work together to come up with their own game concept. Each team will decide how to divide the work fairly among its members. Teams will meet periodic benchmarks, which will be announced. The final projects will be presented to the class at the end of the semester.
Team members will be asked to rate the other members according to the their contribution. Each team member will receive a separate grade according to their contributions to the project and final presentation. Grades will be based on technical game requirements as well as game design, playability, documentation, and presentation.
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.