CSE 786: Capstone design course on Game Design and Development Project

The game industry is a multi-billion dollar industry, with many complex and challenging computational and user-interaction problems. Many students are interested in working in this field. Many other just students enjoy working on projects which provide a challenging set of design and programming problems. This capstone course provides the opportunities for students to work on a challenging and fast paced project.

CSE 786 provides a culminating design experience for these students. It requires students to apply the knowledge and skills gained in CSE 541, 560, 581, 630, and 601 to develop fully functional computer games in a team-based, quarter-long design and implementation project. CSE 541 provides essential ideas in numerical techniques. CSE 560 not only develops key technical skills needed in working on large software projects but also soft skills such as team-working and communication. CSE 601 further develops oral and written communication skills and equips students with an understanding of social, professional and ethical issues. CSE 581 provides the essential foundation in computer graphics including in the use of standard tools such as OpenGL that are used widely in industry. CSE 786 specializes all of this to the problem of video game production and introduces additional industry-standard toolkits for graphics, C#/XNA and Ogre3D; for sound FMod, and/or OpenAL; for Game Physics, Havok, Newton, PhysX, and others; for networking, ReplicateNet, etc; as well as additional open source toolkits for character animation, AI and input controllers.

Students have developed a number of games in different genre over the past few years. Examples include a marble maze, a car simulator, ninja battles, stealth games and RPG games. Students are organized into teams, typically four to five students per team. The course is organized to gently push these teams towards a complete game. An Agile development approach is employed with new iterations of the game due every two weeks. For the first iteration, a skeletal menu system is developed for starting the game, ending the game, selecting options and playing the game. A splash screen is created to allow the students to highlight the game and themselves. This allows the teams to get organized, develop and refine their ideas for a game while still making progress towards completion. For the second iteration, the students are asked to focus on core components (e.g., resource management, key interfaces, event handling or message passing, etc.) of the game development and basic user interaction. The graphics should be minimal at this stage using boxes and spheres. During this stage the students start to take over the objectives for the following iterations. In total there are five iterations or drops of the game during this ten week course.

Each team is required to make a total of five oral presentations spread out over the quarter; the presentations are devoted respectively to a preliminary proposal for the game, and successive iterations of game. Students are asked to not only present results, but indicate technical challenges achieved the challenges that they are most concerned about to enable successful completion and the scope of work for the next iteration. Individual team members may specialize on different aspects of the game. One student typically coordinates the inclusion of sound and sound effects in the game, another may handle all of the physics and another handle any artificial intelligence. Some students may migrate to a more leadership role, a quality assurance / testing role or a scrum master.

In addition to developing the game, the work is organized so that all students get to explore the various technologies that come into play in video game development. Each student is assigned to a separate team, called a technology team, where they explore the latest technology in a chosen area. We try to get a member from each game group on each team, fostering a network of communication that enable group members from one game group to help another group as they find resources and learn to use various tools and toolkits. Each of these technology teams researches the latest use of an area, the current set of open source and commercial tools available to aid in game development and some basic theory behind these technologies. An area might be a standard game area like sound, AI, or physics. It may also be other technologies that are of interest to the students, like gesture or video-based input, GPU-based physics acceleration or particle systems. These findings are presented to the course, providing both another opportunity to work on written and oral communications as well as developing some life-long learning skills. A written game design document is developed throughout the quarter and graded twice during the quarter. There is no individual writing samples.

In addition to the Agile method, students use subversion for their source code control and develop a web site to highlight their work and keep track of their progress. The demands on the student's time and effort are considerable. However by the end of the course, students have gained a comprehensive experience in design and implementation of video games.