Managed World

Techno-babble from yet another babbler RSS 2.0
# Thursday, May 18, 2006

Not much to report today. I had some family engagements so I was only able to spend 20 minutes or so on the game. I did get a new repository on my Subversion server created and a bare-bones project imported into it. I have the simple "Hello World" app per usual. Tomorrow evening I'll really get started on the sucker :).

Why Spaceballs? Well, I was feeling frisky and, frankly, _maybe_ just a tad bit drunk (those of you who know me may laugh now). I also wanted to give a bit of an homage (as we learned (that's Learn-Ed) people call it) to the great Mel Brooks, simply by the name though since the game has absolutely nothing to do with the movie by the same name.

This game that I'm creating for the GWB game coding contest is inspired by the XBox-great Geometry Wars Evolved. There are some changes I'm making though to hopefully give it a little BAM-WHIZ-BANG flavor to it. I'll go into those features at a later date though.

My renewed impressions of Visual C# Express? After being used to using Visual Studio 2005, it is truly striking just how much of the same functionality the Express Editions truly have. So far, I have yet to truly miss a single feature. With the work that Jamie Cansdale has done getting the TestDriven.NET add-in working with the Express Editions, I have nearly everything I need.

The one feature I kind of miss? The Class designer. To tell you the truth, it was basically the only reason I upgraded to Visual Studio 2005 for my hobby projects at home. However, at the time, it was simply because I wanted to start using the feature. In practice, I realized that I don't actually use that feature that much (at least not yet). I kind of expect to go along and not experience too many holes of missing features in the Express Editions for the hobbyist development I'm doing (which is great since they are now officially free forever).

I suppose I'll see you all next time around when I have a bit more information to share with you. Until then, I need to do some thinking about a project plan and how long I have to get a functional prototype so I can start messing around with actual gameplay. Mmmmmmm, gameplay!

 #       Comments [0]

Well, it turns out that someone is wanting to make a go of this game programming challenge for GWB. If I recall, the contest rules dictate that part of the winning total also comes from blogging your progress. I have one thing to say to Mr. Maximus in that regards: "You're In Deep Horsey Doo-Doo!!". I fully expect that Chris will be able to "step away from the methodology buffet and actually produce something that works" as he puts it (speaking of producing, how's that next release of HA! coming, monkey boy?), but as for writing about it? Ha, that's a funny one!

You see, the advantage I have is that I can actually write well and be understood. Sure, Chris looks pretty cool with all his "tattoos" and such, but there are proven side-effects from having so much ink in your blood (and by "proven", I mean that I'm like totally making this crap up). One of the medically known side effects is that you can't write code worth crap. It's true! It's proven medical fact! I have a strong feeling that on June 29th, he's still going to be trying to figure out why his code won't compile :). (Hey Chris, here's a hint, it's probably because you're trying to compile VB code in C# Express :P).

"GAME ONNNNNNNNNN!!!"

 #       Comments [0]

Looks like I have a reason now to get my butt in gear with game programming: http://geekswithblogs.net/jjulian/archive/2006/05/17/78737.aspx. I'm going to enter the contest. However, to make it fair, I'm going to start with a fresh code base since I've been working on my game for a bit (and I would _hope_ that Chris does the same thing and doesn't submit HA!).

Now for the debate, which game to base the game play on.... hmmmmm....

So, in the meantime, expect to see a new series of updates. I'll have it be a series with a title like "A game in 45 days - the journal" or something silly like that. You won't see any "Tanks" updates for now since I will be doing the game development journal instead.

Fun, fun, fun. I highly doubt I'll win, but it's worth a shot. My goal is to do this with high quality code to. I want my code to follow good coding standards. I want mine to be the highest unit tested, best architecture, etc. Now's the time to get started :).

 #       Comments [0]
# Tuesday, May 16, 2006

After talking last night about integrating a collaboration pattern I was working on at work with a coworker, I have decided to go a different route. I stubbed out the framework tonight for a Microkernel that will drive the game engine. The current version as it exists tonight is very simplistic. The only current functionality in this Microkernel is the ability to add a Task for per-frame processing.

This new Microkernel should help decouple my system a bit more and make it easier to enhance. For instance, instead of your "usual" game loop where you might actually see direct calls to game objects to update themselves, in this system you basically see one call to the TaskMaster within the Microkernel instead. So, if I have a GameStateManager and GraphicsDriver that both need to be updated once per frame, they would register tasks with the Microkernel. This means that when I am "boot-strapping" the game, I essentially am hooking up the components into the TaskMaster. In the case above, you would see something like "taskMaster.Attach(new CallbackTask(gameStateManager.OnUpdate));" and "taskMaster.Attach(new CallbackTask(graphicsDriver.OnUpdate));".

Where this tasking system really starts to shine is when you start doing animations. For instance, if I am implementing a 3-second respawn feature into my game, I can create a special task like "new WaitTask(TimeSpan.FromSeconds(3));" and then attach a SpawnTask as a child task to the WaitTask (so that it is automatically called when the wait time has elapsed). That's just one minor example. There's a whole slew of other examples if we go into the GUI world.

Eventually this TaskMaster will grow and probably have the ability to do "time sharing". I'm thinking of adding that feature in the future so that I can time slice the Tank AI since the AI will be implemented in scripts by the end user (yes, you programmers). This will ensure that a Tank doesn't hog too much time when updating itself and should ensure that every tank is on a level playing field when it comes to processing time.

Tomorrow I will probably start on a MessageProcessor to the Microkernel that will enable cross-sub-system communication within the engine. After that, the Microkernel will probably be done for a while. I might eventually expand the Microkernel to support a virtual file system as well for game files, but I don't want to put the cart in front of the horse here. The more I think about, the more I feel that this is almost like implementing a mini-OS in software that is specialized to running a game. Pretty fun stuff.

There are some other things I've been thinking about though. I've been thinking about introducing a service layer that would host services that would be stateful and would basically drive the underlying functionality in the engine. You might see a GraphicsService, a ScriptingService, a PersistenceService, a GameObjectService, etc. Then the various Message handlers would communicate with a ServiceLocator to get references to the different services in order to do their deeds. This pattern is an adaptation of the pattern I've said that I'm working on at work so hopefully being inspired by that won't take too long :). The ServiceLocator does seem to be quite Spring'ish after a while, but that should be fine. Heck, if I eventually want to power it off of Castle or Spring.NET I could do so if I choose to.

Anyways, off to bed for the night. As usual, I'll keep you updated on the latest happenings in the development of Tanks :). 'Til thenz, my friendz.

 #       Comments [0]
# Monday, May 15, 2006

In light of my recent purchase of a 360, I know that many of you out there thought that I would drop off the face of the planet for a while. Well, too bad, I'm back (well, still here actually). I've asked my wife to help me with my nearly-half-year-just-bought-a-360-and-don't-want-to-drop-off-the-face-of-the-planet resolution. This resolution is that I won't play the 360 during the week (or at least limit to one night or two), and that weekends are free game (no pun intended, of course). This should help me at least get _some_ work done on my other hobbies (like this game). So now that you know that, it's time for an update :).

I've decided to make one fairly major change. My first stab at this game will actually be in 2d. Now before all of you start yelling, there is a good reason for this. Frankly, I want to get to the game programming stuff that interests me: game playbacks, saved games, AI, programmable bots using a scripting language like Boo, etc. The quickest way to get there is to "prototype" the game using 2d. My goal is to code the game in such a way that I can "upgrade" the game to 3d at a later date.

In that vein, I have downloaded SDL.NET and am changing the application framework as it exists right now to use that. My hope is that I can finish this conversion by tomorrow evening and then be on my way again. That is at least my short-term goal for tonight and tomorrow night.

After that, I will be integrating a collaboration/eventing pattern that a coworker started putting together at work. I have started working on it myself and helping move the development of it forward and I am really loving it. It is not far from the event-driven pattern I was using in the Boom! engine before. My goal is to have that integrated and unit tested by sometime early next week. I would shoot for earlier (because it won't be too much work) but I have some prior engagements that will keep me busy several nights this week/weekend.

Anyways, back to work :).

 #       Comments [2]
# Monday, May 08, 2006

I am now XBox 360 bound :D. It was one hellish of an experience getting one (that, and an HDTV). I called around to at least six different GameStops and EBGames in the Portland area. Not a single one had a single 360 in stock (hell, at this point in time, I was willing to buy just a core system and buy the various pieces in the bundle even though I would be spending more money in the long run). At this point, I'm thinking that Microsoft must be _SOOOO_ rich that they don't even want my money in the first place. Luckily, the last GameStop I called said they didn't have any but they were sure some of the stores in Vancouver (the 'Couv as we yokels call it) did. The first GameStop I called in Vancouver had a couple of the Bundles, just what I was looking for! Yay!

So, off I go. I stop at the GameStop in da 'couv, pick up my 360 and then I'm on my way to Best Buy to pick up an HDTV (after all, isn't it sort of pointless to spend the cash on a 360 if you don't have an HDTV to run it on? (I mean, why push all those pixels and amazing graphics if you can't truly experience them, right?)). We (my wife and I) ended up buying a 27" slimfit so it would fit in our car and existing television cabinet at home (plus, anything larger than 27-29" is really too big for the size of room we have it in). I even found a great price on one that supported both 720p and 1080i so I don't have to worry about all that mumbo-jumbo (at least I think, but I'm sure there are others out there that could "educate" me on the situation and show that I still have a lot to worry about (like "native resolution/display", etc. but _whatever_)).

Now just to get the bad boy home. And that's when it starts. We get the tv out to the car and..... it doesn't fit. Boy am I feeling like a jack-arse at this point. So, we call up the good ol' father-in-law since he has a full size car. Luckily, he was footloose and could come help us out. So, we're sitting out in the parking lot with our tv sitting behind our car while he is on his way. Then it starts raining. GREAT. So, I rush back in and grab a cart, rush back out, put the tv on the cart, and haul it back inside. Whew! That was a close one.

My father-in-law then arrives on the scene. We go to put the tv in the trunk, doesn't fit. Crap! We go to put it in the back seat, doesn't fit. CRAP CRAP! Buuuutttt, it _almost_ fit in the back seat. With a bit of coaxing and box "reshaping" we were able to get it in the back seat. At this point, I'm utterly ecstatic since I'm close to getting my new toys home and I get to be in bless for an hour or so before some friends show up for dinner plans that we had made earlier.

I get home, take out the tv and go to place the tv in the entertainment center: doesn't fit! Crap, the opening for the tv is about two inches two small to accept the new television. Well, time to do some cabinet modding ::grins::. Since the entertainment center is one of those cheap Sauder-like cabinets, I have no qualms about doing some exploratory surgery on it. I go ahead and unscrew the top off and whack out _everything_ in the middle (the divider down the middle between the component shelves and the tv as well as all the shelves themselves). With how the tv is shaped, I can fit my components just behind the front of the tv and off to the side. Sweet! Everything fits now. On to the 360 :).

So, I take everything out, hook it all up and decide to clean up after myself since we have company coming over. After throwing all my trash away, I plug in the control and sit back on the couch (ready to have my socks knocked off). Then as soon as my first game boots up, DING DONG, guests are here. Damn! So close. We spent most of the evening with our friends so by the time they left, I was exhausted and had to go to bed in order to get some sleep for work today.

I can't tell you just how tempting it was to stay home from work today to give my 360 some much needed love. But seeing as my mommy didn't raise no fool, I know where my paycheck comes from (the thing that enabled me to get a 360 in the first place, I might add). So, here I am sitting at work doing "my thang" while my 360 sits at home gathering dust. Luckily I came into work quite early today so I can leave work quite early :). Then, it will be all-out 360 gaming bliss :D.

Posted in Personal
 #       Comments [2]

Contact

Email Me Send mail to the author(s)

Calendar

<May 2006>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

About this site

Jason Olson's thoughts on Programming, Games, Music and Life in General

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Jason Olson

Sign In
All Content © 2008, Jason Olson
Theme based on 'Business' created by Christoph De Baene (delarou)