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, and aural rendering.
Text
There is no required text. We will post copies of materials to the class Lectures Page as they become available.
Prerequisites
CMSC 420 with a B or better or CMSC 427. Knowledge of C or C++ programming.
Course Work
The final course grade will be based on three primary components:
- Project:
- There is a major programming project, spanning the entire semester. Work can be done individually or in teams. The project may be implemented on whatever platform using whatever tools desired. There will be intermediate milestones throughout the semester. At the end of the semester, each project will be demoed to the class.
- In-class Presentations:
- Each student will present a few short "tech-tutorials", describing some useful technology related to game programming. Each short tutorial will provide (hopefully) useful information to other students in the class regarding how to use/apply some existing game software technology. This might include tutorials on existing software tools or SDKs, an overview of content-design tools such as sound editing systems or geometric modelers, use of game design engines and physics engines, or useful programming tricks and gems for game design. Each talk should run about 10 minutes. Each talk should be accompanied by written reference material for posting on the class web page.
- Exams:
- There will be a midterm exam and a comprehensive final exam. The final exam will be given on Thu, May 12, 8:00-10:00am.
Tentative weights: Programming project 40%, Talks 10%, Midterm 20%, Final exam 30%.
More about the 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 regularly with the instructor and there will be periodic demos to the rest of the class. At the end of the semester, all the projects will be demoed. Each team should prepare a presentation explaining the game's elements and features. A web page for the game should also be prepared, providing game information and screen shots.
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, game engines.
- 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:
- Casual games, story design, important milestones in game development.
|