Spaceballs - Day 2

2 minutes read

Seeing that George is so willing to be open about his plans and progress, I've decided to follow you suit. After all, this should make it more enjoyable for you readers out there (is there anybody out there?). So, on to a progress report, shall we?

In order to help manage the scope of this project due to the time frame, I have decided that Spaceballs will be a 2d game instead of 3d. This should simplify many aspects of the coding by minimizing the sheer amount of code that needs to be written. The other thing that I am doing to help manage the scope is that I'm not writing my own "engine" code from scratch. That's right, you won't see a lick of Managed DirectX or OpenGL code out there (which some of you may find shocking).

So, if no Managed DirectX or OpenGL, what am I using? I'm actually using the .NET wrapper for SDL. Since I won't have to write much graphics or input code, I should be able to spend more time focusing on the game features and game play.

In the vein of controlling scope (aka preventing scope creep), there are several features that I was getting around to implementing in Tanks that I have decided to axe in Spaceballs. Mainly, I will not be writing a virtual in-game Console, and I won't be doing saved games or game replays.

To help me get from start to finish sooner, I have decided to adopt the "Tracer Bullet" paradigm from The Pragmatic Programmer. I will get my game fully functional through and through (with very few features) and then I will improve on that over time. As of tonight, I have actually made progress in this regard.

Where do I stand tonight? I have my MessageProcessor (the "nervous system" of the game) completed and hooked up. I have also created my GraphicsService and StateService classes and completed the ServiceLocator that will be able to lookup and retrieve these services at runtime. I will go into this pattern in a future post and explain how it will also make unit testing the game quite easy (well, at least easier than what it would be using other means).

I also have all my main game states (MenuState/PlayState/RecapState/HighScoreState) hooked up to the StateService. Not only that, but I have the keyboard handling working and pumping into the StateService. Currently, you can use keys to navigate through every state of the game. The "instructions" for how to navigate are printed on each state and state transitions are handled when the correct keys are pressed. I'm thinking that this weekend I'll probably add a ShipSelectionState and DirectionsState.

Sooooooo, to make a long story short, I have my "framework" set up and a good start to a tracer bullet working. Everything is also logging as expected by using log4net.

Sometime this weekend I will try to make a longer post on the patterns I am using to establish the architecture of my game code. If done properly, this should definitely easy the development process while cranking this game out the door. Until then, I'll see you all next time :).

P.S. I now officially have this coming Monday-Wednesday off of work (PTO), so expect me to make a serious push to getting this sucker playable :P.


Leave a Comment