Friday, August 21, 2009

Success and Failure

“I have not failed. I’ve just found 10,000 ways that won’t work.” –Thomas Edison

I've failed at creating this project countless times. Okay, not countless but certainly more than a dozen. I've been working on and off on this game since around the turn of the century and it's gone through many iterations. It's always been a multi-player game but it started as a game where you created your race in prehistoric times and raised them to a technological level high enough to reach space while conquering your world, then in space you tried to conquer your neighbors. I had a problem with this, though; this type of game is easy to work-out if you are playing by yourself (i.e. vs machine) however when you involve other players how do you resolve the timeline?

Let me explain better; technological advancement in early history took place on a scale of centuries. In modern times it takes place in decades or even sooner. How do you scale this with other players? One player may have spent all of their time being aggressive with their planetary neighbors and could be centuries behind the other players. I had two solutions to this but neither seemed 'good' enough ... I could reward the player whom first reached space, then have the entire game change to a 'modern' mode. I could also ignore the time scale and let the slow pokes be rewarded by being conquered by astronauts while they're still learning how to properly wear a business suit. The first solution sucks because I would basically be creating two games! May as well just skip the entire prehistoric period then. Ultimately I did exactly this. The second solution sucks players would be abandoning their game positions once they found out someone got into space.

I also initially had a very complex alien race creator system - you could choose what kind of vision your race had, sensory enhancements, how many legs and arms they had as well as where they were positioned ... etc. Once I actually started turning my ideas into numbers and specific aspects of gameplay were worked out I realized that much of how you created your character had no impact on gameplay. For example, _where_ the races arms weren't as important as how many or what type they were. Some ideas stayed around as 'specializations' you can pick at the end of race creation but for the most part what you choose will directly impact the game. I may add a paper-cutout system later so players can assemble an appearance for their race but for now players will have to use their imagination or upload their own picture.

Where did the failures come in? From the very beginning I've tried to get the game from my notes to software but a constantly changing design document has foiled it. I guess maybe they're not failures as much as their just revisions forced upon me by reality. Initially my design document was enormous, probably forty or fifty pages of descriptions of gameplay and lists of abilities and such. As soon as I tried to turn it into code I ran into my first wall - a lot of my descriptions were pretty vague. I eventually settled upon a system in which I rewrote the entire game, pretending I was targeting the board game market. This helped enormously as it forced me to quantize every aspect of gameplay and determine the order in which events happened. This did take over two years, though.

The second major failure was my inability to choose a language or platform to run it upon. I've gone from C# to Perl to Java and finally settled upon AJAX and python as the back end. In the process I've learned a lot about program architecture and the game has gone from a bunch of C# asp pages to a javascript/AJAX client and python back end. I'm going to write an API for communicating with the game and assume from the get-go that the client cant' be trusted. I'll let anyone write a client for the game, though, and it's conceivable that someone could write a windows application for it or automate some of their gameplay and it won't bother me; assuming scripting and automation from the get-go makes me think harder about how gameplay will actually work out. It's a good thing.

It's taken a long time but I'm happy with how the whole process has gone and my current results. Hell, it's improved my office work as well as my personal life; I think more about what is essential and think ahead further about what the results of my action will be for both myself and others.

No comments:

Post a Comment