My thoughts on the future of Terrarium as a learning game.

I'm completely third party with respect to the Terrarium. Yes I still help with the evangelism and coding of the application itself, but on a very limited role as the product goes towards maturity and new product ideas develop for future versions. That said, there are many things I can't talk about in regards to the application because I know about future features that I'm under NDA for, but there are equally many things on a conceptual level that I can talk about. That brings me to the Terrarium as a learning game. When I first started working on the Terrarium the concepts for the game were simple.

  1. Thoroughly test the .NET Framework from top to bottom in what I would call the ONLY enterprise sample. We tested the server, client, client/server interoperation, platform invocation, every level of security, and so many features it would make your head spin. Now it seems like not that much, but when we released, the .NET Terrarium was the most stressful application anyone had ever developed. In saying that, we still found issues as late as V1.1 that were only being exercised by the Terrarium and no other application in existence (unless they were quiet about it).
  2. Get a shitload of people running the application. That meant making a pretty screen saver that people could run and would want to run. Unfortunately technical requirements were that it run on a laptop with 2.5 megs of video memory. Come on, we got pretty damn cool for such small memory requirements. We never did whack the aquarium that shipped with the XP Plus! Pack, but we sure did get a lot of people running anyway.
  3. Educate users on the process of programming .NET applications and get them writing small samples in a friendly environment. The basic creature was only 15 or so lines of easily explained code, while the upper limits of coding the AI are still being established today. That is a pretty nicely designed learning infrastructure.

As far as I'm concerned those were the main goals and we accomplished all of them. We had a huge university outreach program that kind of fizzled out, but at least one group of students got a very interesting experience with the application. The technical outreach at various conferences was unparalleled with hundreds and hundreds of users playing and submitting creatures at each conference the Terrarium was used as a lab exercise program.

Now, that said, the Terrarium focuses on great features of the .NET Framework, but is is a partial game. It doesn't meet the requirements I have for a game engine, and for good reason, we simply didn't have the time or resources to make something of that magnitude when our primary goals were something entirely different (see goals 1 through 3 none of which cover making a demonstrable game engine). Moving forward some very big decisions have to be made. Based on some recent postings by Mitch, it appears he has ideas of going a mech warrior route. In my mind, I'm more focused on enabling the learning experience of getting up to speed on AI and .NET programming in general. You can start to see where the two sides of the equation diverge with different end goals being established. This isn't a bad thing and I'll describe why.

First and foremost the Terrarium is going to be a community project very soon. That means releasing some very nice community enhancements. From my standpoint this means releasing source code that I've had under my belt for almost two years now waiting for the source release to happen so I could push some changes that were never approved in the official release. It also means that the community goals can be easily resolved with some simple code-fixes. Users tend to say quite a few things but they boil down to the following items:

  1. The rules are inconsistent, don't work very well, or what boils down to not enough rules.
  2. Users have a hard time getting the Terrarium up and running for the first time.
  3. There is no publicly available mechanism for real competition.

For the first, there is some nice code available that allows a server module to change the basic engine settings dynamically. This can be used to simulate weather and a number of other unique conditions. The next step is increasing the variety of creatures without increasing the complexity, again, the code is ready to go for this feature as well. The second feature relies on things like TerrariumProxy or TerrariumIM in order to work properly. Both of these features will allow users to play without worrying about the NAT problems that are traditionally encountered by so many of the users.

For the third feature the TerrariumClusterServer will be made available. This last one I haven't talked about at all, but it basically allows a single machine to simulate any number of Terrariums and allows competitions to be run using a pluggable ranking system. Now, rather than using multiple trusted machines for a competition, we can have a single server located on the Internet capable of running competitions and determining the best users. After all, with the source release the public EcoSystem will be able to be taken advantage of quite easily and the threshold for overcoming an established population is very huge. The new feature set will rely on simulating trials between creatures and collecting statistics about the winner over a period of time. All creatures are inserted on an equal basis and pitted against one another. To avoid any cross-idea issues I will say that this feature set is based around spawning 10 or more concurrent Terrarium engines on the same box, hijacking the network, reporting and peer registration layers, and finally running all engines concurrently. There are no rule changes or other concepts that might create an intellectual property issue.

That means, what do I think of Boris as mentioned on Mitch's blog? Well, I think it is a very niche market. I think the community needs to reach out to those players that haven't joined up yet. I know the nerds, geeks, dweebs, dorks, and other misfits have already tried the game and love it, and these same people would dig the mechs, but I think the direction the game needs to head is a more general adoption. For me that means concentrating on things that interest children, teenagers, college students, and technical individuals. I think bringing the female gaming markets and child gaming markets into the fray is important. What kinds of features am I looking for?

  1. Everyone can play and be somewhat successful. That means even without a large amount of programming experience you should be able to make an effective creature. This feature works based on a creature designer that creates a creature with fairly decent survival statistics. I guess as the developer of this type of feature I'll have to keep up with all the rest of the programmers so that automatically generated creatures are only slightly worse than the best creatures in the environment.
  2. Everyone is interested in watching the game play out. Mechs aren't the coolest thing ever. They are pretty cool, I'll admit, but the classics of bugs and animals are much cooler. Children are especially interested in bugs and animals, as is the female gaming crowd (moreso animals than bugs at this stage). Guys that watch mechs, also watch vicious animal attacks, so I don't think any of the action will be missing here ;-)
  3. Code protection is a must and individuals that want to be competitive at the code level are able to safely release their creatures and battle them without worrying about having their code ripped off. I want to foster some of the best programmers to play the game and if intellectual property is at stake these best of the best simply won't play.
  4. Provide a challenge for good programmers. The base designed creatures will be good enough to provide a challenge, but so will the variety of coding a creature. Every niche of the scale will provide areas where people can play. The imbalance of the current game towards small, quickly reproducing creatures is nothing short of atrocious.
  5. Keep it on the P2P layer, get rid of the server, and call it a day. I think the ability to play the game cheaply is a must and running a Terrarium server can be a large expense. Focusing on this particular layer will be a must for any real adoption level. After all, the Terrarium server breaks down at 2500 users or so, we can theoretically hold 10000, and that is only if an admin is tweaking things every few days. Going beyond 10000 or even supporting 10000 currently requires a large operating budget.

This is by no means a complaint about how the current Terrarium is being run. I get insights into the direction of the game and I love where it is going as an application, but I can certainly disagree on design issues and other such nonsense. At this stage that is all I'm doing is disagreeing at some design level, and it may turn out that the insights I'm basing my opinion on are changed at a later date. Most of the above comes from my long term attachment to a project that I've been extremely close to, and I'm still extremely protective of.

Published Friday, July 16, 2004 11:49 PM by Justin Rogers
Filed under: ,

Comments

Monday, August 02, 2004 6:11 PM by TrackBack

# Allegiance

Tuesday, August 03, 2004 7:09 AM by TrackBack

# Allegiance

Leave a Comment

(required) 
(required) 
(optional)
(required)