Lords of the Burning Hells


This year my regular work invigilating the school exam season coincided with the release of  one of my most nostalgically anticipated games; Diablo 3.  Suffice to say the combination of these two activities has kept me from much substantial development work for the past month, but bills gotta get paid (and Diablo gotta get played?).

I wonder sometimes if I might ever have got into game development if it wasn’t for the Diablo series, the original game and eventual it’s sequel introduced the barely teenage me for the first time to to the internet culture around games. I spent many hours engaged in crafting websites for guilds, getting involved in ridiculous guild politics and even knocking up micro fansites for speculating about Diablo 2 news and lore.

I recall that it was through a chat with an acquaintance of my Diablo era obsession that I first heard about some upcoming game called Half-Life that she thought might be the next big thing. Which for my convoluted path to proper  game development, via modding and QA, it definitely was. The atmospheric design of Diablo and it’s randomly generated levels were also a key design inspiration for Free Company. If I wanted to shorthand describe Free Company to someone  I might be tempted to say X-Com meets Diablo and Baldur’s Gate by way of HOMM (on acid).

So, Diablo 3 has a strange pull on me for those reasons even if for other, ethical and pure design reasons I have come to regard the core Diablo design as something to be slightly dubious of. Long term readers of this blog might recall me expounding on this a while back  but the short version is that the loot reward mechanic at the heart of most ARPG type games is uncomfortably similar to slot machines and inspires similar addictive behaviour that may or may not have a relationship with actual fun. Actually, Diablo 3 takes this slot machine analogy a step closer by allowing you to immediately and directly sell the items that pop out when you kill a monster for cold, hard cash.

I’ve been playing a lot of it regardless, and they have actually added a bunch of cool design things ontop of that core gambing mechanic that I’ve really liked. The best new thing is undoubtedly the deck building-alike skill system where you can have a ‘deck’ of six active skills  picked from a library of around a hundred possible individual skill variations (a smaller range of actual skills that are then each modified by a list of 6 so called ‘runes’, the modifications vary from tiny to dramatic). What this means is that instead of having to start a new character each time you want to try out a new skill as you had to in previous Diablos (and many other roguelikes) you can just hop over to a drag and drop menu and switch out the skill and have the best possible version of it without needing to spend hours carefully hoarding skill points or any other nonsense. It is a great change that allows you to creatively attack challenges when the game becomes too difficult or too stale.

There is some question as to whether or not all the available skills are equally balanced for the challenges of the endgame but there will be patches down the line and for most of the playtime you put into levelling up your character the skill system allows you plenty of freedom to experiment and just enjoy the full range of things your character type can do.

The other great improvement comes from the careful application of physics and animation to convey a feeling of solidity and power to your characters every movement. It’s hard not to enjoy the feeling of thwacking a zombie with such force that he flies across the terrain, smacking into obstacles as he goes, and Blizzard have got it just about perfect. Making every click as satisfying as possible is really important in a game where you are going to be doing a heck of a lot of it.

Anyway,  exam season is drawing to a close next week so this blog should resume it’s regular, irregular update cycle of progress updates on Free Company shortly. I totally programmed a function before writing this just to see if I still remembered how code works. Luckily, I did.

Improved Furnishing

warehouse storeroom

click to enlarge


Recent work on Free Company has been focusing on improving the look of the randomly generated rooms by subtly shaping the way the objects are laid out to conform to more human norms of laying out rooms. For example shelves in the game are now no longer empty instead they are filled up with appropriate small objects . The objects as redetermined by the procedural generator-wide tagging system. Objects have tags; levels, monsters and rooms have tags; the generator attempts to assign them to each other using probabilities based on how closely the tags of each align. The way the objects are placed on the shelves is determined by three different algorithmic approaches that attempt to mimic general human behaviour as regards shelves: filling up from the left hand side, from the right hand side and alternately from the left and right hand sides. The quantity of objects on each shelf is determined by a normal distribution linked roughly to the dimensions of the shelf to ensure that the average shelf is about 90% full .

That’s one example, other new strategies have been employed to shape the placement of the shelves themselves and other objects to create the hopefully more believably storeroom like rooms you see in the screen shots on this page. To support these new furnishing algorithms I’ve also been making a whole pile of new objects, almost doubling the number of them in the past week. Some of these can also be seen  in these two shots.


click to enlarge


The basic warehouse layout and furnishing algorithms are probably done about as far as I am going to take them for the first release all the rooms now look passable and I expect I can reuse the same algorithms for a few other environment variants like the crypt and a new library layout once I create a few more objects to support them. I still have plenty more ideas for algorithmic level generation though and I’d love to revisit this area to try and  make even more believable and varied layouts in the future.

The other new things I’ve done  recently are a few minor cosmetic buffs. From feedback to my last post (thanks Stian!) I’ve switched out the general game font for a more serif ridden fantasy one, I’ve fiddled with a few of the most frequently seen textures to try and make them a little less bland (still a work in progress) and I’ve implemented a more flexible system for testing out lighting changes quickly in game (hit a key to rebuild the lights from the theme data .xml files). The last thing (which just went in today) has allowed me to fiddle with small lighting changes and see the result in a couple of seconds rather than the many minutes it was taking before, so I updated a few of my lighting themes with some tweaks too.


Anyway, as usual let me know what you think about the Storerooms or anything else in the post in the comments below.

HUD improvements & Memory leaks

click to enlarge

This fortnight has been spent plugging all the memory leaks that had built up in the Free Company code base since the last time I went through and plugged them all. The work was considerably eased this time by the use of a new tool I discovered called Visual Leak Detector which makes the process of pinpointing where the leaks are happening fairly trivial by providing callstacks. It also runs fairly quickly in the background so I can leave it on permanently in debug builds to continue passively identifying new leaks as and when they spring up. VLD is super simple to integrate into any project as well so if you are still struggling along with C++ out there I recommend adding it to yours immediately. The only thing it doesn’t catch are Direct X memory leaks for which a more traditional approach, and the debug runtime, is still needed.

Once all leaks were deftly disposed of it was on to a HUD tune-up, something which is still ongoing and probably will be right up until the release. You can see some of the results of the changes in the screenshot above. I was aiming for less numbers & more visual ways of showing what is going on, as well as adding more widgets to give you better control over your whole party of mercenaries. The portraits added back in January now provide a handy way to select a particular mercenary and jump to his current position in the world, and they will  also soon contain a shrunken down overview of the bars on the main HUD for each merc. There are now special pointers for all of the various ways you can control the camera which possibly only I care about. Finally, I spent a bit of time tweaking the colours of various elements to tie the buttons into the HUD better, improve consistency between different elements and generally reduce the ‘primary’ nature of most of the colours I was using before. I’m still not very happy with the layout of the bottom HUD area ( a lot of spare/wasted space, the elements are a bit boring) nor the fairly crappy skill icons but it is coming along all the same.

click to enlarge

While I was fiddling with the HUD I also went through and ticked off a whole heaving heap of bugs with the skill system so that the handful of currently implemented skills now actually work properly all the time and give slightly better feedback when they are being used to boot. Implementing a host of new skills and improving their feedback is one of the big upcoming tasks so I wanted to have the ground prepared for when that is started. And as a final thing I’ve just now tweaked the post effects again to add a vignette.

To give a sort of general picture of where the game is at I have about a week or so’s more tasks listed on my current ‘polish’ to do list to get through before I start on one of the big three remaining tasks pre-alpha release. Those big tasks are; skills, AI & real-time play between combats. I’d welcome any feedback on the changes/look of the HUD in the comments. Or really, any comments at all. Speak your brains internet.