Overview
The course project is to design an implement a racing game. You will work in groups of four to five students and will be expected to make frequent, but informal, presentations about your project in class. This page will include links to various documentation, code, and game assets that you may find helpful for your projects.
We will provide some basic infrastructure to get you started (although you are not required to use it). At minimum, your game should have the following features:
- it should be playable both by a single player or multiplayer (i.e., at least two players)
- to should have AI drivers in addition to human players (it might have other AI agents too)
- it should have a graphical interface with keyboard and/or mouse controls
Milestones
It is important that you work steadily on your project throughout the term. The help you gage your progress, here is a list of initial project milestones with target dates. There will also be regular group presentations, which are listed below.
Milestone 0: group formation (Tuesday; April 4)
By Tuesday of the second week, you should have formed your groups. You should also start thinking about breaking up the project into parts and assigning responsibilities.
Milestone 1: design document (Tuesday; April 11)
An important part of any large software project is a document that lays out the architecture of the application. For the first project milestone, each group should produce a design document that covers (at least) the following issues:
- project name and members
- an overview of the gameplay; i.e., controls, graphics, scoring, etc.
- major architectural components of the project (e.g., graphics engine, AI agents, networking, ...).
- for each of the architectural components, describe its responsibilities and sketch its interface.
- describe the interactions between components.
- determine dependencies between components and plan a schedule for when various milestones should be achieved. We recommend two milestones below, but you should extend these with more detail and additional targets as necessary.
- assign roles to the group members; it is recommended that you have at least two group members working on each major component so that your group does not have a single point of failure.
- coding style: naming conventions, source code organization, documentation conventions, etc.
You should view this document as a living document that will be refined as the term progresses.
Milestone 2: basic physics engine (Thursday; April 20)
By Thursday of 4th week, you should have a basic engine up and running that allows a player to drive a vehicle around a track. For this milestone, you do not need fancy graphics (a 2D view would work). The physics engine is the heart of game, since it manages the state of the player and AI vehicles.
Milestone 3: basic AI (Tuesday; May 2)
At this point, you should have enough physics and AI infrastructure implemented that your AI agents can navigate around the track without crashing into the walls, or each other.
Presentations
Over the course of the term, there will be four to five group presentations (including final demos).
Presentation 1: Game design (Thursday; April 13)
Groups will describe their game and their architecture.
Presentation 2: Status report (Tuesday; April 25)
Groups will describe the current status of their project; any issues that they have encountered; and give preliminary gameplay demos.
Presentation 3: Status report (Thursday; May 4)
Groups will describe the current status of their project; any issues that they have encountered; and give preliminary gameplay demos.
Presentation 4: Status report (Thursday; May 18)
Groups will describe the current status of their project; any issues that they have encountered; and give preliminary gameplay demos.
Final Presentation (Thursday; June 1)
Groups will give final demos of their games.
Specifications
- The track-file format (Version 3.0). A very simple example track can be found here.
Assets
Here are some assets that you can use in your game.- oval.trk
- A simple, hand-generated, oval track.
- barbell.trk
- A medium sized track with a barbell shape
- wide-barbell.trk
- A wider version of barbell.trk (20 units wide vs. 12) with four lanes (instead of 3).