Tuesday, July 3, 2007

Happy birthday

Happy birthday SteamWinter... Well, actually it was on the 1. july, but better late than never. So what have been accomplished so far: We have written an game server engine, and rewritten it again just for good measure. The second version of the engine is highly scriptable and can read scenes from a scene xml file. We can handle collisions, rigid bodies, triggers, timed events and everything can be extended or used in python scripts. A reliable network layer has been added on top of UDP, in order to only require a single port to be open in the players firewall. An auto-introspective RMI implementation has been created in order for scripts in both ends (client/server) to easily communicate. Special high performance requests can skip the RMI layer (e.g. server tick sent to clients). A simple client has been implemented with a minimal gui for connecting to the server. The client can render the state as told by the server and a few simple visual effects have been provided. Sound and music is also a part of the client, but is currently in a unknown state.

On the design part we've also accomplished a lot: The setting has been initially set to be below ground in an icey environment. A rough story has been suggested and a great deal of concept art draw. A single piece of concept art has been modeled in a 3D editor and integrated in the game (a tortoise). Various game mechanics has been though of and a few of them tested.

So, what have we learned so far...

First of all, it turned out to be much more difficult to keep people exited about the project or to take responsibility of some of the parts. I would have hoped to be much further right now and actually have a fully playable game. The lesson learned is that just because people like playing games, does not imply that they actually want to make them... well, they probably want to but they don't really want to. And you just have to really want it to stay motivated. Taking on a project like this is a huge task and the more I delve into it, the more impressed I am with some of the great games out there.

Second, we have been in need of content since day one. We do have some great concept art, but actually content such as sounds, models, backgrounds, stories, quests etc. has been hard to come by. We still need a hole lot of this in order to get an impressive game.

All in all it has been a great journey so far, and we can see the light at the end of the tunnel. But much work lies ahead before the first real beta version will get released.

So, what are the plan for the year to come you might ask. Some of the things I would like to do is:
  • Client up net handlers now that RMI can be utilized. This will bring great flexibility, since you will be able to customize messages between client and server using scripts.
  • Move scene loading to script. Currently all scene loading is done in C++, this remnants of the days of the pure C++ engine. Now it is just very awkward to use. Moving it to script world will make it very easy for game writers to insert their own custom xml in the scene files. Further more it will clean up the loading a lot.
  • Scripted Client GUI. Currently the gui is handled in C++, but since this is not very dependent on speed, it should be move into scripting. This will also make it easy to customize the GUI.
  • Enhanced scripting support on client. Currently the server is highly scriptable. The client lacks behind in this fashion. Delivering a bunch of common functionally to the scripting world on the client is the first and largest step. e.g. Easy dialog displaying, associate buttons with script actions, customized menues. When this is exposed to the client, we get it exposed to the server as well for free via the RMI (if allowed by engine security)
  • Sound and music
  • Effects on the client should be reviewed and improved
  • The server should drop the dependency on the OGRE library
  • Models: 2 bosses, 4 normal enemies and 20 gizmoes (barrel, pipe, plant etc.)
  • A well though out and tested game mechanic for cooperative playing
  • A nice and motivating story..
There is probably a lot of other stuff to get done, but this is from the top of my head.

Enough about the birthday...

Because Simon and Lasse are probably going to base a university project on the engine I've set the net stuff I told you about in the previous blog on hold. I've made a branch for it and will pick it up again as soon as possible.

Instead, I'll implement some kind of default intelligence into the non-rigid body actors that are collidable. Currently you will have to handle this all by yourself, meaning that if it is not handled an actor will go through walls. This is the first issue that I'll handle.

No comments: