October 3, 2013

Space War Clone Jam: Postmortem

(Note: this post was made for a Networking for Online Games course.  It serves as a short postmortem for a SpaceWar clone game jam.)

On September 27, we were tasked with creating a clone of SpaceWar in a few hours.  I partnered up with Robert Bethune.  We started with the game I made for the previous assignment and made short work of the game jam, almost completely finishing within those few hours.

What we did right: Starting with base framework.  Thanks to the framework I established for my earlier assignments, we didn't have to fiddle with network code too often.  It was simple to add new packet types and send important information from the host to the clients.

Biggest difficulty: Bullets.  Bullets are currently handled by the host as a table of IDs to bullet objects.  This worked just fine with my previous assignment, but here, the jam required we delete old bullets if too many were present.  It's not necessarily the oldest bullet that gets destroyed, but the one with the lowest ID number.  This is not an ideal solution by any means.

What we could improve: Authoritative host controls.  The host currently updates host-specific code during the network code rather than the world code.  This seems logical, but it results in many issues absent from the other approach.  Important world code is not run before the host checks for collisions, for example.  This led to a bullet collision problem.  Bullets take two health off of players instead of one.  Despite all attempts to fix this, we were only able to implement a hack to display what the health should be (half the real health).

Professor Pile's Blog
Robert Bethune's Blog

No comments: