
Computer gaming is a vibrant multi-billion dollar industry that offers exciting career opportunities for computer scientists as well as visual artists. The Rice Computer Science department and Pi Studios, a local computer game company (best known for their work on the Call of Duty series) are offering a full-year program designed to expose Rice students to the theory and practice of computer game creation. This first class, Comp 160, is designed to provide a hands-on introduction to the basic math and programming skills necessary to build computer games. In the last part of Comp 160, student groups will have the opportunity to construct a prototype of an Xbox 360 game of their own design and pitch their game concept to a fall jury consisting of the instructor and two members of Pi Studios.

Finally, at the discretion of the spring jury, some student groups may then be invited to continue work on their games, mentored by members of PI Studios during the following summer. This mentoring may lead to the game being eventually submitted to an independent games festival such as the IGF, an internship for the students at PI Studios or, in a few cases, the game being pitched by PI Studios to Microsoft for release on Xbox Live Arcade.
Prerequisites: Working knowledge of object-oriented programming as demonstrated by
Students who do not have this basic background and wish to major in CS are urged to take Comp 140.

Lab: M 4:30-6:00, Symonds II Lab
Class materials: USB-compatible wired Xbox controller. (Xbox Live account is required for testing a game on an Xbox; testing on a PC does not require one)
Comp 160 meets TTh afternoons in Symonds II lab on the ground floor exterior of Duncan Hall. There is also a weekly one-hour afternoon lab session on C# and XNA. Since much of the class instruction involves working in groups with hands-on demonstrations on concepts, regular class and lab attendance is essential.
The first two weeks of class will consists of a quick introduction to Mathematica and C#. The next eight weeks will provide an introduction to 2D game programming in both Mathematica and C# (using XNA). Mathematica will be primarily used to demonstrate mathematical concepts and facilitate fast prototyping of games while C# and XNA will be the final production environment for Xbox-compatible games. The next two weeks will consists of a brief introduction in the basic mathematical concepts of 3D graphics while the students focus on completing the main C# project for the semester, an arcade game. In the last three weeks of class, students will break into small teams and develop their own game concept. Working with Visual Arts students, each group will generate a one-page pitch sheet for their game and construction a simple prototype version of their game in either Mathematica or C#. Students group will present their pitch sheet and game prototype to a jury consisting of Professor Warren and two members of Pi Studios.
Grades for the class will breakdown as follows:
| Mathematica module exercises | 40% | |
| Lab exercises | 10% | |
| Arcade game | 35% | |
| Jury evaluation of game proposal | 15% |
Note that there is no final exam for the course.
| Week # | Date | Topic | |||
|---|---|---|---|---|---|
| 1 | Mon | Aug | 24 | Organizational meeting, Assignment for those without AP credit | |
| Tue | Aug | 25 | Class overview, Xbox demos, Why should you use Mathematica? | ||
| Th | Aug | 27 | Getting started in Mathematica | ||
| 2 | Mon | Aug | 31 | Introduction to C#, C# vs. Java syntax, review simple C# programs, Last week's lab assignment due | |
| Tue | Sep | 1 | Towards programming in Mathematica | ||
| Th | Sep | 3 | Visualizing your solutions with Mathematica | ||
| 3 | Mon | Sep | 7 | Labor Day | |
| Tue | Sep | 8 | Dynamic visualization in Mathematica | ||
| Th | Sep | 10 | Coordinates systems, vectors, and transformations in Mathematica | ||
| 4 | Mon | Sep | 14 | Sprites | |
| Tue | Sep | 15 | Creating user-interfaces in Mathematica | ||
| Th | Sep | 17 | Cancelled due to dead Mathematica license server | ||
| 5 | Mon | Sep | 21 | Keyboard and mouse input in C# | |
| Tue | Sep | 22 | Keyboard and mouse input in Mathematica | ||
| Th | Sep | 24 | GamePad input in Mathematica | ||
| 6 | Mon | Sep | 28 | GamePad input in C# | |
| Tue | Sep | 29 | Networking in Mathematica — Server, Client | ||
| Th | Oct | 1 | Networking in Mathematica — Server, Client (continued) | ||
| 7 | Mon | Oct | 5 | Simple physics and collision detection | |
| Tue | Oct | 6 |
Continuation computation using Dynamic
|
||
| Th | Oct | 8 | Modeling Physics | ||
| 8 | Mon | Oct | 12 | Midterm recess | |
| Tue | Oct | 13 | Midterm recess | ||
| Th | Oct | 15 |
Arcade game specification due Computing Distances, Collisions, and Reflections |
||
| 9 | Mon | Oct | 19 | Particle systems | |
| Tue | Oct | 20 | Visual and audio effects in Mathematica | ||
| Th | Oct | 22 | Visual and audio effects in Mathematica (continued) | ||
| 10 | Mon | Oct | 26 |
Arcade game main control scheme due Time to work on arcade game Arcade game ideas for enemy behavior & GUI |
|
| Tue | Oct | 27 | Time to work on arcade game | ||
| Th | Oct | 29 | Time to work on arcade game | ||
| 11 | Mon | Nov | 2 | Sound and Text in C# | |
| Tue | Nov | 3 | The basics of 3D graphics in Mathematica | ||
| Th | Nov | 5 | The basics of 3D graphics in Mathematica (continued) | ||
| 12 | Mon | Nov | 9 |
Arcade game basic interactivity due Time to work on arcade game |
|
| Tue | Nov | 10 | Time to work on arcade game | ||
| Th | Nov | 12 | Time to work on arcade game | ||
| 13 | Mon | Nov | 16 | Arcade game demonstrations | |
| Tue | Nov | 17 | Final game group formation and concept discussion | ||
| Th | Nov | 19 | Continue game concept discussion | ||
| 14 | Mon | Nov | 23 | Begin game prototype construction | |
| Tue | Nov | 24 | Draft of pitch sheet due, continue prototype construction | ||
| Th | Nov | 26 | Thanksgiving Recess | ||
| 15 | Mon | Nov | 30 | Continue game prototype construction | |
| Tue | Dec | 1 | Pitch sheet feedback, continue prototype construction | ||
| Th | Dec | 3 | Prototype demo and feedback | ||
| 16 | Jury evaluation of pitch sheet and game prototype | ||||
Below are some tools you can use with your XNA games. None of these are required for the course, but you may find them useful on your project, or just wish to play around with them. All tools below come from the XNA Content Catalog.