Friday, June 09, 2006

Let us begin


This is my blog.
More specifically this is my blog about developing the Cosmic Game Engine.
Even more specifically, this is my journal about the process of developing the Java based Cosmic Game Engine as an independent game developer at Immediate Mode Interactive (IMI) while also teaching the course in Engine Development in the Game Developement degree program at Full Sail.

Ok, enough of that…

The reason I am making this blog is that often I go long periods of time without significant news to my associate developers as well as my virtual partners out on the ‘net while digging deep in the development pits. Unfortunately silence does not imply activity, and so often it can seem as though I am off doing nothing (or something else) when in fact I am STILL working on the same project, but probably just more so!

To begin with, I will make this post to bring everyone up to speed on what has been going on recently. I will not give a complete history (perhaps someday) here, but just cover basically what has been happening since GDC of this year as that was the last major time most everyone involved or interested got caught up on this project.

As a general warning, this blog will probably get fairly technical from time to time, but for the most part it should be digestible by most of the people with which I am in regular contact. It may at times also get “personal”, that is, I may need to explain some personal life activities/events since I am using some of that time developing this engine and sometimes THAT time will win out, for example weekends…

For this first post, instead of just blabbing about what’s going on which for me tends to run on and on, and divert to tangents often confusingly, I have decided to try a different style. I am going to write this in an interview format, that is, as if someone was interviewing me about the project. Since I AM that someone interviewing me, the questions will be contrived, “loaded” and probably leading, but then that’s how I converse much of the time (a skill I developed from being a Full Sail teacher for 8 years). One reason to do this is so that you can skip areas that aren’t of as much interest to you just by reading the question for that section. Another reason is, it just seemed easier to write it that way today since I have so much to tell and it needs to be very organized to get it all out clearly and as concisely as possible.

Ok with all that said let’s begin
So what have you been working on since the GDC demo this year?

Several different components needed to finalize the Cosmic engine for the Cosmic Birdie racing combat game as well as a bit of the game code itself in an effort to complete a full release in time for the IGF in September.

Can you expand on which components you’ve been working on?

In particular the networking has been my major effort since GDC although, there has been physics and collision work (mostly bug fixes and optimizations) as well as weapons fixes and allot of general refactoring hacky game objects into a better framework.

Ok then, what exactly is going on with the networking?

At GDC we showed our Cosmic Birdie demo running on the Sun Game Server (DarkStar). At that point it really was hacked into our game in no real scalable and/or extensible way. I basically got it working and that’s it. Since then I have completely replaced any networking code from that demo with a more (...i..n..h..a..l..e...) production ready object based network messaging layer built on top of DarkStar. Additionally, the core of this messaging system is local (not networked) and object based and is now used throughout the Cosmic engine code base. This was part of a larger effort of converting the original hierarchical game object system to a more component based system like so many other game engines have done. That was also done since GDC. That was the most entertaining part of this work because, basically when you make that kind of conversion it breaks everything for awhile, and it did (laughs).

Additionally, getting the networking working means several things. There are run-time game object communications (which get the focus allot of the time) but there is also the managing of the connections and player-game and entity creation. DarkStar does some amazing server side stuff for you, almost none of which Cosmic Birdie (being a more player to player style game in this incarnation) takes advantage of now. In fact in the latest build, CB runs against the public DarkStar release (using the MatchMaker, more on that later) with NO SERVER SIDE code added. In the GDC build, we had a small server-side class handing out some IDs for the game but it was just hacked in that way. After the refactoring and some development, I got the clients to operate as true P2P style clients, they just need the connection. In the end, I’m sure we will be using some of the server-side stuff because we would really like to do some of the game object simulations there, and move towards a more persistent level sometime. For this release though, we are not planning on that. The game is meant to be as simple and fun as possible, with as little “jump-in cost” as possible, whether that be in learning curve, time to play etc, the typical constraints of a causal game. I should say that althought this game is meant to be causal, the engine is being developed with the intent of much more complex and larger scale games. The engine is the major effort because it will be the core technology that IMI will use for all future game development.

Alright, then what is the current state of development?

Well, a complete report will be to long here and will have to come in pieces across several bogs. Focusing on the networking part, within the last 24hrs I got the example MatchMaker code provided by the DarkStar group integrated and working with CB. This was a major milestone and another reason I stopped to do this blog now. We have a development environment where we have a running and dedicated server that we can test on or off the ‘net as well as a network of test machines for the clients. For me, as a non-funded indie developer, that was a major accomplishment and this means several things that I will jot down in a bulleted form:

  • For the server:
    • We have the latest DarkStar configured and running on the server.
    • We have a working build environment for server development as well as having had great support from the DarkStar team.
  • For the clients:
    • We have our client working on the dedicated client machines.
    • We have a working build environment for client development.
      • The collection of Java APIs alone can be a real headache here sometimes (this is one of the reasons we decided to dump JOODE long ago), but the major ones, such as Java3D and DarkStar, are in good working order and stable.
      • Our in-house APIs have stabilized quite a bit, and for the scope of this game look to be nearing feature completeness with the exception of the animation system and sound f/x. It seems as though the animation system will never be done to my liking :-) and there is bascially no sound work done at this point, code or assests.
We have the MatchMaker client code hooked into the CB client. I say hooked in because it will need allot of work to get it to production but it does work properly as far as I have been able to test. After a little be more testing and such (I am hoping within a week) I should be able to set up a new release on the web site for beta testing among friends. This will be the first really serious beta test of the project as a whole. I imagine it will be pretty ugly, but I am still very much looking forward to it!

OK, well this has gone on long enough for now...

Yes, I agree, this was a good start but there is much more to tell, let’s continue this interview in our next post!



Post a Comment

<< Home