Pong
Pong is an old standby -- one of the first electronic games created. For your first project (which is essentially a warm-up, get
you used to Ogre), you will be creating a version of
Pong.
Getting Started
I have provided a skeleton project as a zip file which contains everything you need to get started:
This file contians source code, a visual studio solution to get you
started, and some sample content (materials, models, overlay scripts and the
like). Unzip this prety much anywhere you like and open up the solution file. Build and execute, and
you should see a coin spinning and some text on the screen. The coin can be moved left and
right using the arrow keys
A note on the project file
Ogre uses .dlls instead of statically linked libraries, so your project will
need to be able to find the appropriate .dll files to be able to execute
properly. I have added to the project, as a post-build step, commands to copy the appropriate
.dlls from the SDK to the output directory. You are more than welcome to pursue a
different solution for your project, see me if you have any questions.
But I'm using a Mac! (or Linux, or some other operating system)
All is not lost! You need to get your fingers a little dirty
creating the appropriate makefiles and/or xcode files. It will be
a little more work, as you won't have a premade project/solution to
start with, but it certainly can be done. Essentially, you need
to point the makefile at the ogre object files (and .h files), and make
sure that all the exeuctables are placed in the correct locations.
If you can't get it working on your own from the Ogre wikis, come
see me.
Complete Playable
For the first milesone, you need to have a basic version of Pong
working. That is, you need to have a 1 player game, with a basic
AI, simplistic physics, and scoring. All basic artwork (granted, it will be pretty
basic) needs to be done, and the game should be playable, and reasoably
fun (it's only pong, so the fun factor can be fairly limited). The camera can be
static. This is "Classic Pong".
Enhanced Pong
For the final submission, you need to have a more interesting version
of Pong. What is "interesting" is somewhat up to you.
Various enhancements could include:
- More interesting camera: a follow-cam, multiple viewports -- go crazy!
- Powerups / game modifiers. If the ball goes over a
powerup (or the paddle catches a powerup that "falls" to the left or
right) then something fun could happen, like:
- Change Paddle Size for one or more players
- Change Paddle Speed or Ball Speed
- Invert paddle controls for one or more players
- Making this do something interesting for the AI -- so that
the AI acts like a player with inverted controls -- is a bit of a
challange
- Multiple Balls
- Need to decide what happens when a ball goes out
- Modify Ball Speed
- Graphical Enhancements
- Improved physics
- Allow putting "English" on the ball -- if the ball hits a moving paddle, it adds spin, which affects the direction of bounces
- Change the playing field
- Add obstacle the ball can interact with,
- Add gravity (in such a way that the game is still fun)
- Add areas of the playing field with unusual physics (time speeds up or slows down, etc.)
- More extreme game modifications
- From pong to head-to-head breakout, where destroying more bricks causes bricks to be added to your opponent
- Something like Warlords
- Instead of paddles, shoot projectiles at the ball to modify its momentum
- ... something else crazy
It is recommended that you discuss your enhanced pong ideas with me, so
that I can guide you towards more approprate projects (changing the
color of the paddles, 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 Pong (technical): 55 points
- Correctly handles input
- Displays the models in the correct locations
- Game logic (physics, scoring, etc) is sound
- AI player works correctly
- Extreme Pong (technical): 40 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 extreme version of pong?
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 also submit all art required by your program. You should not include
any object files, executable files, Ogre .dlls, or .pdb files in your submission! The size
of your subversion directory should not be hundreds (or even dozens) of megabytes!
You will lose points for submitting object files!
Place a README file at the top level of your subversion hierarchy which
describes how to compile and run your game, along with all of the cool
features you want be to be sure to see
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!