Concept art, etc.

The forest at night.

A distinguished gentleiguana.

Some other progress: a friend of mine is willing to do music for Platformer. I also implemented support for background music in the game via XACT, and I’m going to add support for normal sound FX as well soon.

Instantly distracted

So I haven’t worked on Platformer (directly) in a couple days. Spent the past several days working on a C# networking library (something like the basics of Twisted for handling TCP and UDP sockets in an event-based way, so I don’t have to think about threading.) ┬áThe plan is ultimately to make a fancy-pants networked debug console for Platformer or other future games.

It’s a somewhat vague idea, but the general concept is that the game could expose a tree of objects with associated properties and commands. The console would be a separate process that connects and lets you browse the tree, view and edit properties, execute commands, and present the game’s log. This would be a more comprehensive version of the debug menu that’s present in Platformer right now, and would allow me to have a richer UI like sliders, color pickers, etc.

Wow, that sounds completely vague and tangential. Way to get distracted, self.

Actually coding a little

Been doing some minor tweaks to get back into Platformer:

  • Coded the game over screen using the image from the previous post, including a nice rotozoom/mode 7 looking effect.
  • Added autorepeat support to the input manager.
  • Ported some of the easing functions from TweenLite (which are ultimately based on Robert Penner’s Actionscript easing functions) to C#. Most of them aren’t very complicated, but they’re useful for quickly adding polish.

I don’t think I’ve mentioned it before, but something else I did a few months ago was write a simple 2D scene graph in Platformer. It’s only used in menu screens so far, but it’s very helpful to be able to arrange sprites & text labels as objects instead of having to draw them in immediate mode. You generally don’t even have to write a Render() function for a screen any more, just a constructor & an Update() function. It’s fairly minimalist, but I’ve ported most of the code that does drawing (except for the game itself, because that’s more complex and is more performance sensitive) over to the new scene graph system, and it seems to be a win as far as ease-of-use.

This was all inspired by some Actionscript 2D game libraries that are popular right now, like Flixel and Flashpunk.



Other things I’ve done recently:

  • Added support for animated and alpha blended tiles.
  • Added parallax backgrounds.
  • Finally got around to fixing the FPS counter (not that it gets used much since a frame takes about a millisecond to update and render)
  • Added a notification flag in the corner of the screen to detect accidental runtime loads of resources.
  • Working on making some of the resource previewers (currently looking at the particle system one) support live reloading of the resource for quicker development. This currently requires rebuilding the content project, which is semi-annoying.

Resource cleanup

Rewrote a bunch of the resource management in Platformer so that each “screen” has its own ResourceManager (used for loading sprites/fonts/textures/etc.); this is more in keeping with how XNA intends the underlying ContentManager to be used and more correct in general.

Well hello there

Once again I have forgotten to update this blog in months. Some of you may have noticed that was entirely down for a couple months. What happened was that my web host decided to disappear off the face of the planet; luckily, I was able to get backups from the datacenter the host was using, LiquidWeb. They had my data back to me the night I asked. Classy service.


I have not done an awful lot more with Platformer. The Portal Turret project has been resurrected, and I spent this weekend making my own programmer for the dsPIC33f MCU I am going to use, rather than paying $60 or more for a programming device. I might publish the circuit schematics/Arduino sketch/Python program I made at some later date. I also reverse-engineered the audio-based level transfer system for Bangai-O Spirits for DS, and made a receiver program in C#. This could let people develop PC-based level editors, and also to pass around levels in binary format instead of as MP3′s or YouTube videos. So, some stuff has gotten done, although I want to get back to working on Platformer soon.