Simple Shooter
For your first project, you will create a simple shooter -- think
Space
Invaders or
Galaxian.
This is mostly to get you started using XNA. Your project will be in
two stages:
- Complete Playable: This is the simpliest playable version of the
game -- you will be able to kill (and be killed) by enemies, and
keep track of a score, but otherwise the game will be very
simpe
- Enhanced Version: This is where you get to have fun -- adding
whatever enhancements that you like to make the game more interesting
Complete Playable
For the first milesone, you need to have a basic shooter working.
This version of the game needs to include:
- A player ship that the player can control, moving the ship along
at least one axis (up/down or left/right) using the 360 controller
- Some kind of weapon that the player ship can fire
- Enemies that move and attack the player in some way (firing,
ramming, etc)
- Simple collision detection (just AABBs (simple bounding boxes)
are OK)
- Either a number of lives, or a shield, or some other kind of
"health" for the player ship that the enemies can decrease until
the game is over
- Some kind of score
- Runnable on the 360
All the basic artwork (it can be pretty basic) will need to be done,
and the game should be playable, and reasoably fun (it does
not need
to be terribly complicated).
Creativity is Encouraged!
Want to do something less violent? Have a great idea that has similar
techincal requirements, but you find more interesting or innovative? Come by my
office and chat -- I am open to discussing other ideas for this
project, if you want to get your creative juices flowng right away.
Enhanced Shooter
For the final version of this project, you will need to do something
more interesting, by adding several enhancements to your game. What
is "interesting" is somewhat up to you. Some examples of things you
may add may include:
- More interesting enemies, with more intelligent behavior, and waves
of different kinds of enemies that are combined in interesting
ways
- Large-Scale "Boss" enemies (collision detection becomes more
interesting here)
- Two-Player Co-op or competitive play (on the same machine)
- Enhanced, per-pixel collision detection (with at least one
level of coarse collision detection as a first pass)
- Powerups / game modifiers.
- Different weapons -- bombs, lasers, grenades, boomerangs, freeze
rays, etc
- Slow time, speed time, reverse time (if you're really feeling
ambitious)
- Player (or enemy) invulnerability
- Added shields / Turrets / etc
- Ship motion in multiple directions (like
Asteroids or
Smash TV
- Scrollable play area (like
Defender
or 1943)
- Interesting control scheme (like Joust)
- Animation (player ship and/or enemies), or other intereting effects (parallax background,
etc)
- Simple physics -- Elastic Collisions (easiest if you are using
bounding circles, or at least don't allow items to rotate), gravity,
inertia
Note that I do no want you to try to create clones of any of the above
games, but feel free to use the ideas / mechanics from them.
It is recommended that you discuss your enhanced shooter ideas with me, so
that I can guide you towards more approprate projects (changing the
color of the enemies, for instance, would not get you many points)
Teams
You must work individually on this project. Don't worry -- for
projects 2 and 3, you will be allowed (and, in fact, encouraged) to
work in teams. This one you need to do on your own, however.
Grading
Your code will be graded on the following metric
- Basic Shooter (technical): 50 points
- Correctly handles input
- Displays sprites in the correct locations
- Displays score
- Game logic (collisions, scoring, etc) is sound
- Enhances Shooter (technical): 45 points
- Enhancements are sufficiently complicated
- Enhancements are well executed and (reasonably) bug-free
- Fun Factor: 5 points
- This is more of a subjective measure -- how fun is your
enhanced shooter?
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.
Submission
You should create a subversion directory that contains everything you
need to compile and run your code, under <your
username>/cs420/Project1/. Place all of your required
source files, project files, solution files, etc into this repository.
Be sure to preserve any necessary directory heirarchies.
You should not submit object files or executables, since I will be
recompiling your code.
Place a README file at the top level of your subversion hierarchy which
describes how to play your game, and anything unusual required to
compile and run your game.
It is strongly recommended that you keep all of your files in
subversion from the beginnng of the project -- do not use subversion as
a submit directory!