penn siggraph games development game
DESCRIPTION
Presentation slides for a cell phone game currently in development.TRANSCRIPT
Presenting “Unnamed Game”
Basic Mechanics Overhead space shooter
Control ship with arrow keys
Press fire button to fire all of your guns at once
Cells
break off as a ship takes damage
enemies are built from cells
must be directly hit to be destroyed
You must protect your brain cell – if it takes 3 hits, you’re dead!
Cell Types Basic Cell Does not shoot
Provides cover for other cells
Gun Cell Shoots a fast projectile in one direction
Missile Cell Shoots a seeking missile
Short lifespan
Melee Cell Sword-like cell that must touch a cell to kill it
Behind the Scenes Multiple Child tree structure for ship
Brain Cell is the root
Hitting a cell destroys it, but releases children cells back into environment
Can be retrieved by you or enemy
Traversal used for most cell operations
Drawing
Shooting
Collision detection
Rotation and translation
Behind the Scenes Collision Detection
Every bullet from every ship can collide with every other ship
Time-based collision needed with high projectile speeds and small cell sizes
Bounding circles used to minimize collision checks
Challenges Faced Mobile Game Development
Pros:
Easy to get started
Java-based
Netbeans Game Development tools
Cons:
Little memory (~1-4 MB heap size)
Small screen
Awkward controls
Not completely portable among J2ME phones
Challenges Faced No floating point arithmetic
Floating point math is not on all J2ME phones
Used an open-source fixed-point library
We use 64-bit fixed-point longs
With 32-bit we did not have enough precision or range
Memory Use of the new keyword was expressly forbidden
without a good reason to back it up
Operations on vectors to avoid allocating memory
Pair a plus with a minus
Pair a multiply with a divide
Minimize vector normalization (slow)
Garbage collection is actually reasonably fast, but we still want to avoid using it
Challenges Faced Management Team members have other priorities (school work, jobs,
etc.) Long term goals are ineffective
Members come and go Code in small pieces to avoid losing work when a member
leaves
Short jamming sessions more effective Declare goals to reach at the end of a 5 – 10 hour session
Fosters team atmosphere
Peer coding helps members become familiar with code
Bugs and Hax
Bugs Can keep up with your
own bullets
Phantom ship
Hax The fixed-point arctan2 function has a bug
Good solution – do some math and checks to compensate
Bad solution – reorder the sprite rotation array so that the rotation works anyway
Guess which one we did?
Future Plans Improve collision detection (esp. for melee cells)
Work on single-player experience
Tighten up the graphics on level 3…I mean, import the rest of the sprites and get a background
Multiplayer over Bluetooth
Port to Flash (better graphics, online multiplayer)