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.
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.
This week I have been mostly adding; various hats.
I had a lovely holiday wandering (and wondering) about the Cotswolds entirely disconnected from computers and the internet. Those times are past now though so its back into the rat race of game development which as everybody now knows is 50-75% based on the creation of hats. You can see a couple of the new hats above, they don’t do that much in the game really, maybe add a little bit of protection here and there, but mainly they are just to add a bit of individual style to your little squad of mercenaries. I’ve made six different hats so far adding a tricorn, wizard hat and another hornless half helm to the three you can see above. I’d like to make it to a nice round number of hats and helms (like say 10) so if you have any hat suggestions that I’ve not already covered then feel free to slide those slices of brain genius into the letterbox of this posts comment box below.
I fiddled about with the UI a little bit too, but its been pretty much hats all through the week. Hat code, hat inventory icons, hat models, hat textures, wearing hats, looking at pictures of hats and striking the soft gently yielding fabric of hats. Hats, hats, hats, HAAAAAAAAAAATS.
This week has been largely spent conceiving, modelling, texturing, boning and animating some new monster models. I’m hoping to hit nine models + the more variable human models for the first alpha. The beauty of the algorithmically generated tactical battles is that it’s incredibly easy to insert new monster types into the generator (and thus the game) once you have all their details set down in data.
So this week we have the bloated giant rat:
He will gorge on your entrails and gnaw on your bones.
Then we have a giant spider too. A lot of people don’t like spiders so I’m plotting to include a ‘Cobbet mode’ in the game options that will exclude them from the generator.
This guy looks quite friendly though. Probably should work on that.
And finally we have the cowled and insubstantial Shadow wielding a giant two handed sword with preternatural ease.
Another undead beast to grapple with alongside the skeletons and zombies from last week.
I’ve also started poking around in the rusty old bad guy data code to better support the variety of behaviours and characteristics of these varied villains. Shortly skeletons will no longer bleed with ruby red blood.
That’s all for now.
Click to enlarge
So this week, I’ve created some new walls, floors and their related structural tiles to form a second architectural tileset for Free Company’s mission generator to make use of. This one, as you can see above, looks less of a dungeon and more like a moderately well appointed house. I was getting a little tired of staring at those stone walls all of the time. The ’tile’ based structure of the game makes it pretty easy to drop new sets of walls into the existing mission generator and have them ‘just work’. Hopefully, once the game is out, the relative ease of adding new tiles might inspire some enterprising modders to do just that. I started out making games through modding and love how modders can take a game and extend it’s lifespan for years. As a result I have been trying to make the game’s systems as open to modification as I have time for and I plan to make some of my dev tools available at around the same time as the game as well.
Other than tiles, I’ve been working to replace my old physics library with a new one and improve the game’s use of physics along the way. The plan is this will eventually;
- Stop ragdoll enemies falling through walls and other objects.
- Make for much better ray-casted cover calculations.
- Allow more natural interaction with doors and any other interactive objects.
- Improve performance & reduce bloaty code
- Make physics objects fit much better to their objects & make it much easier to debug them
- Added a really simple blood splat almost decal-like effect. Doing these properly looks like a lot of work for little return, at least when viewed from an isometric perspective.
- Fixed a bunch of bugs & performance problems interfering with playtesting.
- Created a fireplace object.
- Read A Dance with Dragons.
That last one was definitely important research. Definitely. There were mercenaries in it.
Click to enlarge
The development of Free Company continues this week with the addition of lighting themes to the procedural tactical battle generator. In the shot above you can see my first stab at the ubiquitous ‘orange & teal’ theme that has become so popular in Hollywood. The basic principle is to help increase the variation that players see between levels in a simple, asset cheap, way. As the generator progresses I’m intending to tie the lighting colour theme to other aspects of the contract to help enhance whatever mood suits that particular contract. Right now though it’s just a completely random pick.
I grabbed a couple more shots of it in action so you can better see to what I am referring:
I call them "Sandy" and "Red-ish"
I also spent some time since the last update finishing the first pass on the ‘overgame’ campaign code and UI. A player can now successfully navigate between the overgame layer and a series of tactical battles while retaining the same set of mercenaries. Right now the main tie between the two layers is whether the mercenaries died, whether they completed the contract and what weapons they bought from the campaign shop. As development progresses I’m going to try and increase the amount of interdependency between the two game states to help keep them feeling like a cohesive whole. Exactly how is going to depend on playtesting.
Finally I added a really big hammer.
Thor would be proud
Thank Cliff for the title.
Since the last update on the game I’ve mostly been busy working on trying to furnish my algorithmically generated level layouts with, well furniture. I’ve bashed together one set of xml files that attempts to roughly outline what kind of rooms a type of location might have in it. Then I conjured up a second set that describes, for each type of room, what kind of furniture might be in it.
Of course to have any furniture to place in the levels meant I had to model and texture some up at last. So Free Company got a whole bunch of exciting new furniture assets recently; like plates and clay pots! The furniture models have to be all tagged up with meta data in a shiny new tool that I think I mentioned I was starting work on last time. It’s forked from the model viewer and is still evolving as I think of more useful ways to describe furniture to the game. Right now it looks like this:
That’s the ghostly Table O’ Doom asset you can see there.
The whole furnishing system is still pretty primitive, and still has some very obvious bugs but it’s coming along. Here is what it thinks a ‘dining room’ might look like right now:
If you peer closely into the gloom you can probably make out the bug where chairs/stools are completely ignored by the placement system.
Other than that I also managed to fit in some time to fiddle about with Bullet Physics, which is something I’m now looking to to replace ODE with to better cater for Free Company’s physics needs. As you might have guessed from the title I was experimenting with ragdolls and after lots of brain teasing work I was able to get something that is just about acceptable or at least doesn’t feature the model warping all over the screen or shrinking into nightmarish ball. Of course it’s impossible to demonstrate physics in a screen shot so I’ve just wrestled with Fraps and Windows Movie Maker and you this delightful film:
It’s probably worth watching just to hear a nice little bit of music from that all round good guy and friend of the Shed; Sam.