Space Command

Space Command was a for-fun project I worked on with my friends [Dave][1], [Matt][2], and [Jason][3]. The game was a 2D space shooter that differentiated itself from the myriad of other top-down shooters by adding and enforcing co-operative play between four friends.

Inception

The project was the inevitable result of combining several factors: the four of us are all friends who played co-operative games together throughout university, we are all developers, and we found that working together on tough software assignments was really fun. [Jason][3] had the idea of creating a game together and named the proposal after the old television remote sitting in the guy’s living room. After a few hours of brainstorming and laying out some basic ideas, Space Command was born.

Project Organization

This was the first time any of us had dedicated themselves to working on a shared project; we each had worked on personal projects in the past but none of us had worked with a group of people outside of our co-op jobs. As such, we decided to lay down some initial rules and infrastructure so that we could collaborate as easily as possible.

The project source was placed in a private GitHub repository which the four of us have access to, art assets and design discussions went into a shared DropBox folder, and we decided to have weekly collaborate design sessions. The design sessions were either in-person meet-ups or Google Hangouts, depending on if we were all living in the same city or not (at the whim of our co-op schedule).

Despite all being developers, we each had varying levels of experience and different skills sets. We eventually drifted into our own familiar territory early on in the project: all of the art assets were created by [Jason][3], the networking was handled by [Matt][2], I worked on the AI, and [Dave][1] worked on the UI. This was initially a major boon for the project - we could quickly throw something together to demo it for each other - but it eventually led to the projects down-fall.

Issues

As was already mentioned, we started to silo very early into the project and it continued to get worse throughout the two years the project existed. It became very difficult to comment on the work of others because I had no or little experience with the work they had been doing. Eventually, major bugs or issues would arise and only one member of the team was equipped with the necessary experience to work on it. Had we dedicated some time to [lowering our bus factor][bus] we could have avoided a lot of the headache. [bus]: http://en.wikipedia.org/wiki/Bus_factor

A major issue on our project was the fact that we were only a collocated team for half the year; we would only have four months to work together before we were all taken away to our separate co-op jobs, forcing us to work together over voice chat. This separation only solidified the siloing we had been creating and led to a major drift in direction for all members of the project.

In our initial brainstorming session we all agreed upon a few basic ideas: there would be co-op, space ships, and guns. As time passed and the project grew it became obvious that we all had very different ideas about the details. Some of us assumed there would be a single player option, others thought the whole experience was centred on multi-player. A couple of us wanted to customize our ships prior to the game while others wanted basic ship models with in-game item pick-ups. These differences in opinion started to show in our art assets and design decisions and eventually led to us creating many parts for many different games that did not fit together.

Project End & Reflection

The project died with a whimper; some of us began to work on other side projects and the repository became pretty stale. Eventually, our weekly meetings just stopped. Two years after our initial brainstorm meeting we had an impressive amount of code: tools and assets which could have been used to create a truly amazing game. But in the end we produced a game with a single ship which would shoot at infinite waves of strafing, buggy AI controlled enemies while acquiring weapon pick-ups. There was little more objective than “survive” and that was easily done by hiding in one of the corners. The co-operative mode was a shadow of the single-player and did not have any of the team-work-enforcing ideas we had created during our brainstorming session.

I would say the project was wonderfully fun and a massive learning experience for all of us. That said, had we been more clear about what we wanted to create, had a way to steer ourselves back on track, and had shared responsibility for the whole code-base and art-assets, I believe we could have created something truly amazing. [1]: https://github.com/dtlinley [2]: https://github.com/mc3ander [3]: https://github.com/JasonMurrayCole