Just wanted to post a quick update on some game development stuff I’ve been working on the past couple of months. Farseer Physics is just one of the few projects I’m working on. By the way, I’m still slowly working on Farseer physics, but don’t expect an update on it for a while. I’ve mainly been giving support to those who are using it through e-mail. So if you’re having issues with it or can’t figure something out let me know and I can help you there. I also figured it was finally time to do some aesthetic work on the site. I like the way it turned out :). All in all, things are doing great but I’m ever so busy! Over the last few months I’ve been neck deep in either Blitzmax, C#, C++, php, or mySQL.
In Blitzmax news, I’m still working on my little framework that sits on top of Blitzmax. It’s going along pretty smoothly and I have basic functionality already implemented to create simple prototype games. It’s using a component-based architecture, which I came to learn about when I first started using XNA and read more about through some game dev books and blogs. So far it’s been working out great in terms of flexibility. It’s been pretty easy to add new systems with minimal changes to the core code. I’ll just run down some of the things that are implemented or planned for the framework
This is fully functional at the moment and is resolution independent, which is handy. This is kind of the bread and butter of the system and what most of the game code interacts with. I’ve designed the scene graph so that it’s independent of actual art assets. This’ll make it easier to create dedicated servers in the future that will use the scenegraph to manipulate networked objects…
This one has been tricky. Initially, it was simple to just manage textures, sounds, and bitmap fonts in a single ‘resource manager’ that would make sure duplicates aren’t loaded into memory. Recently, it’s gotten more complex as I’ve created a new type of ‘resource’ that represents a 2D Model. This allows me to create character and object sprites with moving parts and animations. I wanted to be able to just load a model and then use it with minimal hassle. It works nicely now on the game code level where you just state:
model = Game.GetResourceManager().LoadModel(“myModel”)
but the underlying code has to do a lot of trickery to get that to work to allow you to load multiple model instances. So in the end, I’ve found the resource manager to be rather difficult to ‘extend’ to more complex data-types. But I wonder if that’s just the nature of the beast, as many other engines and systems seem to have rather complicated sub-systems in place to manage things like these (XNA has a whole ‘content pipeline’ just for this purpose).
The GUI is rather bare-bones at the moment. This system is what wraps the game elements into a set of screens. Each screen has widgets you can attach to it where the screen can manage on it’s own. For example, the whole 2D scenegraph system is a widget so you simply add it to a screen to view the scenegraph. I’ve implemented only buttons and labels so far, so it still needs lots of development. Transitions are inheritenly part of the gui system as each screen and widget has an API you can extend to manipulate how they get onto the screen and off the screen.
This right now is in the early planning stages with some proof of concepts and prototypes in development. From the beginning I’ve wanted my framework to incorporate networking but in a modular way. So if you wish to create a non-networked single player game, then it’s no hassle for you to continue coding as you usually do. Ideally, it’d be nice to just add a ‘network component’ to any object you wish to network, but from the looks of it, there may be some other house keeping that just has to be required in order to get the performance needed for a game. Simplicity is what I’m shooting for here. It’s probably going to take several attempts and prototypes to get this to be easy to manage.
C++ & C4 Engine
So over the summer I worked on a fishing game with a friend for a game design course. It turned out pretty neat for our first foray into 3D and C++. It was a 2 player networked game where two fishermen move their boats around a waterworld fishing for unique fish. The gameplay centered around the fishing mechanic, which was a simple rythm mini-game. The waterworld had beacons of different color lights that burst out from the water signifying the difficulty of the rythm game you’d have to complete in order to catch that fish.
Then there was the ‘multiplayer’ aspect to it. When you caught a fish, the weight was deteremined by how accurate you were at the mini-game. Now all your fish go into a shared inventory where the oponent can see which fish have been caught, how heavy, and by who. If your opponent catches the same fish but heavier, he ‘steals’ the credit for catching that fish. Anyway, originally we wanted to just make it an exploration and cooperative game where both work together to catch all the fish, but in the end the added competitive features helped make it a bit more exciting. These are some pictures of the game in it’s two main modes: fishing and viewing the inventory.
Oh, XNA how I love/hate thee! On one hand you give us some of the most productive game production tools with Visual C#, TorqueX, and the XNA framework. On the other hand, you trap us eternally onto a platform they call the Xbox 360. With that said, I’m still developing for it. In fact, my current major project is in XNA and my Blitzmax framework is just a weekend thing. I’ve currently been working on a new version of Wildboarders for the Xbox 360. It’s been in development for about 2 months now. I can’t say much else about it not because I’m trying to be ‘hush hush’, but because there isn’t much else to say at the moment. In the coming months I’ll be sure to post some more info on game. Now I need to go figure out why my Xbox live account no longer works and why I can’t access billing.microsoft.com anymore :(. While I’m in a ranting mood:
I find it rather silly that I have to ‘check in’ with MS whenever I deploy a build to the machine by requiring a connection to XBL. I guess that’s what we’re all willing to put up with since Xbox360 is a ‘closed’ platform. This certainly wouldn’t fly with developers on the PC…using Windows…Vista.