(Click on the thumbnail for the full image)
As your character picks up an item, the item is automatically added to the status panel, including a real-time updating ammo count (or whatever status is meaningful for that item type). Ironically, while people have said for ages that the most immersive interfaces are invisible, I've found just having this little status panel makes the game world feel more alive for some reason. Just watching the ammo tick down as you fire the gun feels really solid.
The current graphics for the panel itself aren't the best - but as part of my "get to game" push, I'm trying really hard not to tinker and polish every little thing to death (as I spent much of last year doing this and didn't really get any closer to having a game).
In less visible progress, a lot of the work this week has been working out the difference between a map and a save game. Up until this week, the two have been pretty much the same thing: a simple serlialisation of the root node of the world. This approach has been fine for knocking up the little test arenas that I've posted up here in the past, but now that I'm starting to think about a real game, it falls apart in two pretty serious ways. Firstly, you really don't want your game characters in your level data (as you really want the player to be able to take his current character into any level). Secondly, there's a whole bunch of non-game-world data that a given game might want to be able to save (like player data, the screen layout, the current camera position, game preferences, the total play time, etc).
To address this, I've spent the bulk of the week centralising all the game state (camera, players, characters, world, etc) inside the Game object, and then cleaning up the tangled web of object initialisation dependencies to allow you to just drop in a new Game object and have all the moving parts (camera, camera controllers, input handlers, world graph, etc) hit the ground in a working state. It turned into a huge amount of work - especially when I tripped over a long standing reference counting bug that meant the game was never actually deleting the game world, even when you loaded a new one in.
Once that was working, I set about separating the player characters from the world, and adding support for logical game nodes that can be used to add things like spawn points to maps. The game will now happily persist your character(s) across new maps, starting them at the first spawn point it finds.
With all this plumbing done, I'm almost ready to add damage to the game.