It&aposs been a while since I last posted (I believe its been about 8 months), but I&aposve been incredibly busy. I&aposve been recently working on a game, due out on WiiWare and PC something in Q1 2010, called Super Meat Boy. For those interested, you can find a trailer here:
I just recently got back from an event in London showcasing Super Meat Boy at a Nintendo WiiWare event. It was great fun, the game went over well and we are very excited. But blah blah blah lets talk some tech about this meaty game (get it?).
The engine for Super Meat Boy has very much been a labor of love. The game is being developed mainly on two machines, an Intel Core 2 Duo 2.16Ghz housed in my (seemingly soon to be dead) laptop and a Intel Core 2 Quad 2.4Ghz desktop. 100% of the development is being done on these two PCs with the engine constructed in such a way that I link in drivers for different renders, input, core, and audio functionality. So far this method of engine design has worked out perfectly. Each module is abstracted out away from engine and game code and is placed in a seperate library. When I need a Wii Build, I link in my Wii libraries and poof, I have a Wii Build. Same with Xbox, PC, etc, etc, etc. This isn&apost that special really, its actually pretty standard. The specialness of this is due to the threading library I originally wrote for Goo!. Super Meat Boy runs on the second generation Goo! engine that features a self detecting threaded renderer…which is just fancy talk for a threaded renderer that does a little bit of a system test on your machine to determine if A. If it can thread it (i.e. is the processor multicore) and B. If it should thread it (i.e. Is the processor fast enough, is the processing power required by the renderer worth threading the rendering). So far it works very well….it even runs well on my little Acer Aspire One with a little Intel GMA 950 and a 1.6Ghz Atom Processor. It threads the renderer on that little thing and it does surprisingly well…I was impressed. On a machine where it should run a threaded renderer (My Core 2 Quad or Duo or the Xbox 360) it sets up the render threads on its own and goes to town, where on lower end PCs and the Wii, it doesn&apost need to thread the renderer so it doesn&apost. It makes my life easier and it utilizes the processors in a users machine, be it console or PC, to provide a nice, smooth gaming experience. The game runs beautifully at 1920×1440…which again, isn&apost saying too much for a game like Super Meat Boy, as it is a 2D platformer with some pretty lights and replays…but its scalable and that&aposs what makes it special.
Right now, on the Wii in particular, I&aposm working on doing some threaded level loading, because I&aposm not a fan of load times, and neither are gamers. With a game like Super Meat Boy, you die often and you beat levels often, so even the slightest amount of wait is just a pain for gamers. Right now, the load time between levels is I believe is less than half a second, but I don&apost like that it pauses. So, what I&aposm doing is loading level A and when level A is loaded, I&aposll fire up a thread that starts the loading of Level B in the background on a very very low priority thread. Since the average level for a pro (like myself) takes anywhere between 5 and 10 seconds (again, I&aposm very pro, most new players will spend between 10 to 20 seconds on easy levels, and probably about 10 minutes on harder levels…this is how it happened in London anyway:)) to play through, this huge amount of time in between levels will allow plenty of processor time for a low priority thread to load the level in and be able to instantly switch to the new level in between level transitions, while then firing up another thread to load the next level. The system will work just fine, and we&aposll be blessed with the gift of little to no load times…that&aposs something that we haven&apost had since the days of cartridge based games:)
That&aposs it for me now, I must sleep, then get back to work. If you&aposre interested in more game engine threading and design, shoot me an email. If you want to keep up with Super Meat Boy, follow us on twitter: http://twitter.com/SuperMeatBoy.