Home
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
Iteration 6
Group #1
The Adventures of Jeff
Jeff Cheng, Emily DiDonato, Jeff Orthober, Michael Vecchiollo

Overview

Vision Statement
Our goal is to create a single-player, 2D, side-scrolling platformer with obstacles, enemies, levels, and items. Our inspiration has been derived from Mario.

Features List
Overall Features (From Iteration 1)

  • The game will be played in a window as a desktop application. It will have a scrollable screen that moves from left to right along with some up and down scrolling. Additionally the player can save/load a game.
  • The player controls a character, Jeff, who can walk/run, jump over obstacles, attack enemies, and colect items.
  • The goal is to get to the end of each level
  • The score will be tallied as the game is played. Score increases with killed enemies and collected items.
  • Jeff has "hit points" which are lost when he is attacked by an enemy or when he is hit by falling objects.
  • When an enemy is killed (hit points reduced to zero), it stays killed.
  • The physics of when Jeff jumps off of a moving platform will include momentum.
  • The level is designed with the objects placed on a grid, the characters and objects can move independent of the grid.
  • Sounds/music will also be included
Jeff's Controls Features
  • Jeff can crouch
  • Jeff can shoot while crouched
  • Jeff cannot jump while crouched
  • Jeff cannot crouch while in mid-air
  • Jeff can climb ladders
  • Jeff can shoot while on a ladder
  • Jeff can more horizontally in mid air (but only a little bit)
  • Jeff can unlock a double jump feature which allows jeff to jump a second time while in mid-air
Jeff's Upgrading
  • At the end of each level, a shop menu appears. Here the user can spend the score gathered while playing the level to upgrade some of Jeff's features.
  • You can upgrade Jeff's Hit Points, Speed, Weapon Damage, more..
Other Game Features
  • Jeff uses 4 different weapons (katana, fireball, tomahawk, and laser gun)
  • The weapons are unlocked after a set number of completed levels
  • Jeff can switch between the weapons during game play
  • If Jeff is killed during a level, you start over at the begining of the level
  • Jeff becomes temperarily invincible when damaged
  • Some levels will have impeading terrain (like slippery ice)
  • Enemies will have weakness and resistances to different weapon damage types

GUI Sketches




Key Features
  • The game will be played in a window as a desktop application. It will have a scrollable screen that scrolls from left to right.
  • The player controls a character, Jeff, who can walk/run, jump over obstacles, and attack enemies.
  • The goal is to get to the end of each level.
  • Jeff has "hit points" which are lost when he is attacked by an enemy or when he is hit by falling objects.
  • The level is designed with the objects placed on a grid, the characters and objects can move independent of the grid.
  • If Jeff is killed during a level, you start over at the begining of the level.
  • Jeff becomes temperarily invincible when damaged.

Architecture
For our architecture we plan on Swing using Java2D with a customized platformer back-end that represents the bulk of our coding work.

Use Cases

UML Sequence Diagram (required)
Use case: Jeff moves right


Class Design Proposal
/**
 * ObjRegion
 *
 * This class is a small region of an object that has its own properties. 
 * Such as shape, tangibility, and whether or not it gives damage.
 */

/**
 * Tangible
 *
 * This interface determines whether or not another object is able to pass
 * through it. 
 */

/**
 * HasTerrainEffect
 *
 * This interface will set the terrain that affects Jeff's movement.
 */

/**
 * GiveDamage
 *
 * This interface determines if whether or not an object gives damage. 
 */

/**
 * TakeDamage
 *
 * This interface determines if an object takes damage.
 */

/**
 * Environment
 *
 * This area contains many objects. Is what the user sees while playing.
 * It essentially represents the levels and handles hit detection.
 */

/**
 * Game
 *
 * Enables a user to start, load, pause, or save a game. 
 */

/**
 * GameObj
 *
 * Any physical object in the environment.
 */

/**
 * Enemy
 *
 * Has a set movement and VERY limited AI. Can attack Jeff and have its hit
 * points reduced until killed. 
 */

/**
 * Terrain
 *
 * An unmoving object that characters can walk on, with different effects on 
 * the character's movement. 
 */

/**
 * Obstacle
 *
 * An object which may move and may cause damage.  
 */

/**
 * Item
 *
 * An object that when touched by Jeff has some sort of beneficial or possibly
 * negative effect.
 *
 * Ex: Increase his size, increase his HP, or decrease size or HP. 
 */

/**
 * Jeff
 *
 * The hero of the game. He is able to move and jump based on the user's
 * commands. He has HP and can take damage or attack. 
 */

/**
 * Projectile
 *
 * A weapon thrown by Jeff or an enemy that decreases the HP of the target if
 * struck.
 */


UML Class Diagram(s)
NOTE: If clicking the link below displays a mostly black picture, then try saving the image to the desktop to correct the problem and see the arrows.
UML Class Diagram

Resources
  • Mario games (for inspiration)
  • Java
  • Swing
  • Subversion