Geeks With Blogs



Add to Technorati Favorites

An Archived Managed World This blog has moved to

[Crosspost from Managed World]

Now, for my first update. Let's get started shall we :).

This time around this project, I made one big change. Last time, the game was written in homegrown Managed DirectX code which required me to write a lot of the "engine" code that powered the game under the hood. To be able to focus on the game this time instead of the engine, I have decided to use an existing engine to power Tanks. Though this may come as a shock to some of you, I have decided to use the .NET wrapper for Irrlicht rather than write my own home grown engine on Managed DirectX.

Because of this decision, I will be emphasizing "Game Development With C#" rather than "Game Development With Managed DirectX". This decision will also allow me to not have to worry about the whole "Managed DirectX / XNA Framework" change until it has been released and baked out. Hopefully this will prevent me from having to write the articles over again because of an underlying technology change as big as this one might be. Another reason to do this is purely selfish I must admit. To be honest, I just want to get something done finally. I want to avoid this perpetually "starting again" cycle that I've gotten myself in by trying to learn something new every time something new is released :). Not only that, but I want to get to the point of diving into the "fun stuff" like integration of a scripting language, implementation of saved games and replay files, artificial intelligence programming, etc. You know, the fun stuff ;).

So, what progress have I made lately in this vein? Well, let's see....

Tonight I was able to port some of my Ruby-based automation scripts that I have for automatic generation of release notes based on svn commit comments and packaging of source code and binaries for release out onto this blog. Currently, the packager simply packages up the built binaries in one zip file and the source code and all necessities to build that source code in another zip file. I'm thinking that eventually I'll move to MSI install files for each. Until then, generated zip files will do the trick for me :).

I've also gotten a pseudo "tracer bullet" finished for the game. Basically, the GraphicsDriver, InputDriver, and StateManager are all working. I have created the various states that this game will have and have enabled the keyboard handling on each of them. You can now start the game and navigate through all the states using keys that show up on each screen. There is no art, per se, right now and all the "prompts" are just text written out to the screen using the default font in Irrlicht. The PlayState however does wire up the camera and adds a TestNode to the SceneManager to view.

My current train of thought is that the various states (implementing IState) will be responsible for hooking up the Model(s)/View(s)/Controller(s) that comprise that state. Basically, the state will facilitate a bootstrap process of sorts that will hook up all the individual components and then let them do their jobs. There are some issues that I will have to think through with this design. First of all, the current assumption is that only state is active at a time. Meaning, there is no pushing or popping of child states. That most likely will work for this game but it's not very scalable, in my opinion.

So here's the plan for tomorrow evening and this weekend (assuming I don't have to work):

- Going with my theme of not wanting to "reinvent the wheel" too much on this project, I won't be implementing a home grown logging component like I did on the last project. I figure I will just leverage Log4Net here and call it good.

- The CommandProcessor. I hope that I can largely just grab this component as it existed in the previous project and reuse it here as I won't be changing it that much. Once this is integrated (and unit tested), I can hopefully move on to wiring up a simple Console.

- The Console. One of the fun items, in my mind :). I hope to hook this up with a simple PrintCommand working. Now that I'm thinking about it more, I will probably take this opportunity to work on the State issue of not being able to "stack" states. It would cool if I could simply "push" this state on top of the current PlayState. Then again, maybe it is just the ConsoleController that I'm wanting to push. Hmm, that will be something to think about and dwell on.

The somewhat sad part is that once I get these three line items done, I will actually be further along than I was with the original articles I wrote. Because of that, I will probably take a break here to write the first set of articles and publish them. Hopefully then people will get their fix and get a better idea of what I'm trying to accomplish here.

Wow! I think that's one of the longest blog posts I've had in a while. I guess I sort of got out of rhythm with blogging as I started to take it in a direction that was not that personal and was very "detached". Well, I'm back, I guess (I don't know whether that is a good thing, or a bad thing. I guess I can say for sure that it is just "a thing" and call it a night :)).

So, until next time, feel free to shoot me an email and harass me as I consider this an opportunity to use you readers as "accountability partners" to help keep me on track this time :).

Posted on Friday, April 28, 2006 6:33 AM Game Development | Back to top

Comments on this post: Tanks - Engines and Source Files and Scripts, Oh My!

# re: Tanks - Engines and Source Files and Scripts, Oh My!
Requesting Gravatar...
Interresting work. I'll follow your progress with great interrest.
Left by Dag König on Apr 28, 2006 11:46 PM

# re: Tanks - Engines and Source Files and Scripts, Oh My!
Requesting Gravatar...
Thanks Dag. That means a lot :).
Left by Jason Olson on May 01, 2006 5:57 PM

Your comment:
 (will show your gravatar)

Copyright © Jason Olson | Powered by: