Project 3: Final Project
For your third and final project, you have a fair amound of leeway to create a game that you think will be fun. You are encouraged to be creative, and come up with something fun, that also represents a solid technical achievement. As with Project 2, You will also be graded on your playtesting report of other team's projects -- as a way to encourage you to play each other's games.
Due Dates
There are 3 due dates for this project, for different aspects of the project, which are described in detail later in this document. They are:- Design Specification. Due 5/8/2013
- Feedback form to other team. Due 5/1/2013
- Final Project. Due 5/8/2013 (last day of class)
Possible Projects
What game you decide to create is up to you. You are free (and encouraged!) to come by my office and discuss potential projects. Some ideas are:
- Top-Down, 2D Racing game. You can go for straight-up racing like Sprint, add weapons like death rally, allow the player to upgrade their car (can be easy to do if you are using Data Driven Programming), or do something else of your choosing
- Real-Time Strategy Game. If you want to go this route, then I strongly recommend you start very small -- begin by creating the smallest possible subset of an RTS, and then expand you game as you have time.
- Puzzle Game. While just cloning your favorite puzzle game can be a non-trivial task, try to create something that is more your own. Synthesis counts as creativity for this -- feel free to combine ideas from different puzzle games to create something new.
- More complicated shooter. Have some great ideas on how you could make a really fun shooter, now that you have a little more experience? Of course, I'll want more than just a new coat of paint over project 1, but there are many ways you can extend a basic shooter into more of a full game. Everything from adding some strategy elements (a la Rescue Raiders), to bosses with some more impressive AI, to multiplayer (cooperative or competative, on the same machine or over the network), to larger, puzzle based levels -- there are tons of things you can do here.
- More complicated Platformer. Platform games are in vouge these days -- some of the most innovative gameplay ideas coming out these days are in platformers. Go crazy!
- Fighting game. Traditionally, the fighters are created using hand-drawn animations for all of the attacks, which may be a little much to ask of programmers in 6 weeks. However, you can be somewhat creative -- create your fighters out of polygons, for instance, and animate them by moving the polygons around. Creating a robust animation system would be an interesting challenge
- Strategy / tower defense game
- ... something else of your choosing
Required Elements
There are very few absolutely requried elements for this project. However, there are some required elements:- Data Driven Programming (like Project 2)
- At least 2 different "levels" (however a level makes sense for your game)
- A Menu system that allows players to start a new game, change various options (like controls), quit completley from the game, and so forth. When the game starts, it should start in the main menu, and when the game ends, it should end to this menu.
- Run on Xbox 360
Recommended Elements
In addition to the required elements, here are some recommended elements.- Parallel programming, to take advantage of the multiple cores on the xbox (and PC! Most newer PCs have multiple cores)
- Multi-Player gaming, either on on machine or over the network -- either cooperative or competitive. For an extra challenge, allow for both single and multi player gaming
- Physics, either your own simplified physics engine, or a 3rd party physics engine
- Robust AI system (what kind of AI is approprate depends upon the game you choose to create)
Part I: Design Phase
Before you can start coding, you need to know what you are going to code! The first step is to create a design document for the game. This document should contain:- Description of the game and how it is played
- Mockups of gameplay screens (can be hand drawn). Pictures can be worth 1000 words here -- a number of annotated screenshots can go quite a distance to communicating exactly what you game is
- List of basic features that will definitely be in your game
- List of Stretch features / elements that you would like to get into your game, but you may need to drop some (or all) of them to finish you game by the deadline
- Schedule of what you plan to accomplish each week
Part II: Implementation
Code, code, code! Make sure you are following your schedule, and update the schedule as necessary as you fall behind / get ahead. If it looks like you are not going to meet all of the requirements set out in your design document, be sure to see me for any help -- both help in getting back on track, and help in deciding what needs to be cut.
Playtesting
as with project 2, you are strongly encouraged to play each other's games. Give feedback, and get ideas for what you can do in your own game. In adition to informal feedback you give to other teams, each individual (not each team, but each individual) is requried to give formal feedback to at least one team. This formal feedback will be part of your grade for your project. Your formal feedback needs to include:
- Best feature of the game, that should be emphasized, built upon
- Any bugs found (with reproduction steps!)
- Suggested features to add / things to change
- Overall feedback -- how are the controls? The pacing? The difficulty? Was it fun? Were there any "wow" moments?
Grading
Since all of you will be creating different games, there will be less of a formalized grading metric.
- Technical: 80 points
- Compiles and runs
- Relatively bug-free
- Resonable complexity (to be negotiated with me during design phase)
- Code structure and program decomposition
- Data driven code
- Design: 15 points
- Do you use new / interesting ideas for your game
- Are the controls responsive / play well?
- Fun?
- Written reports: 5 points
- Formal Feedback. This the the feedback that you give to one of your fellow groups. How complete and helpful was your feedback?
Note that a project that does not compile, or compiles and does not run, will recieve very few points, regardless of how much code you submit.