2. 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!
3. 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
4. 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
5. 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
6. 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
7. 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
8. 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
9. 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
12. 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?
13. 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)