Starship Builder is a technology and gameplay prototype that is perhaps best described as a cross between the game SimCity
and the TV show Battlestar Galactica. It is a networked-multiplayer spaceship simulator in which
players build spaceships SimCity-style by placing individual parts onto a square grid and then battle their friends online using the ships that they built.
As a prototype it's somewhat rough around the edges (and the art is all temporary programmer art), but it's fun to both build ships and battle other players,
and I believe that the idea holds a great deal of future promise.
As in SimCity and Battlestar Galactica, it's not the city or spaceship that is the true focus -- the people inside the ships are the players' most important concern
and are the true focus of Starship Builder. All weapons and engines on the ships must be crewed by one or more people. Additionally, supplies such as ammunition must be carried throughout
the ship, meaning that the player must be mindful of the ship's corridor layout and traffic patterns so that the crew don't get congested in tight corridors or have to travel too far.
Programming Starship Builder has proven to be a great challenge with several very significant programming hurdles:
- Since ships move with realistic physics and the player can place rocket engines anywhere he likes,
I invented an algorithm that intelligently determines the "activation level" of each rocket given the player's current and desired locations.
- I wanted parts of ships to be individually damaged and destroyed, meaning that it is very common for a heavily-damaged ship to break apart into multiple pieces. This meant that not only
did I have implement a localized damage system integrated into the physics system, but that this system needed to detect when a ship has split apart into what are essentially several smaller ships.
- Since ship crews are largely autonomous, a robust pathfinding system needed to be developed. Not only does the pathfinding need to gracefully handle changing ship layouts as parts
are destroyed, but it also needs to route around congested areas of the ship. The algorithm that handles routing around congestion is inspired partially by ant colonies in which
individual ants layer scented trails for other ants to follow. I turn this idea upside down by having people on board the ships lay down a "virtual scent" that dissuades others from
taking the same route.
- All of these systems need to work smoothly across a network of two or more computers, requiring extremely careful planning and ordering of game logic.