One of the consumer selling points of randomly generated content is the infinite variety of potential situations it promises and that’s something I’m hoping to start to capture for the first alpha release of Free Company. Since last time I’ve been working on getting the existing content to be more data and randomly driven. The contract/mission generator now picks between available location layouts, picks a themed set of monster encounters to place there, then passes that information over to the renderer to load the correct tilesets and monsters needed for that mission. All of this is now almost completely data driven so I can dictate new tileset layouts and monster encounter setups with a couple of xml files and then they can just feed straight into the generator. Lovely.
It’s not all the way there yet though, while there is variety in the actors and the scenery so far the script for these martial plays is always following the same outline; namely ‘kill everyone’. I hope to gradually introduce the potential for new objectives by expanding what the mercenaries can do in the world and then have the generator setup more interesting situations than just indiscriminate murder.
At a lower level of the game I’ve also been introducing variety by the barebones of a generic skill system to the game with a few starter skills to test it out. I’m hoping that I can eventually give each of the monster types a couple of interesting and unique skills (and the wits to use them correctly). I started with the rats pictured above; giving them the ability to greatly improve their ‘to hit’ percentages by attacking en masse (this is actually a generic rule across the game now but the rats skill makes them extra good at exploiting it). I haven’t given them any special AI routines, but combined with using the new encounter system to increase the average number of rats spawning in a room they now present a formidable challenge if you let them surround you.
Those were the main tasks but I’ve also added a bunch more items into the game that I built, mainly for the new monsters, so that the mercenaries can use them as well and hopefully fixed a few niggling bugs that were interrupting the flow of the game.
Off on holiday next week so it’ll probably be two weeks until I blog again. Try to keep going without me.
Been a little unwell this week which has slowed my coding plans down considerably. However I have recovered enough to chuck the new monsters from the last few weeks into the game (albeit in the most basic way). I’ve also added a new item of furniture to the room layouts and improved the per room tagging (so it now actually works) this means that each room in a level can have it’s own set of descriptive tags to go along with the overall level ones which then feeds into how the generator chooses the objects to place in each room. Anyway, right now its mostly just making a fancier high backed chair more likely to appear in the warehouse office than in its kitchen.
I’m also including some random screenshots of the new monsters (and that desk) but now; in the game.
Here you are:
Another batch of monster previews today. They aren’t all quite finished yet but what the heck I already grabbed the screenshots. Demons is this weeks theme.
I’m calling this guy a Chained One. I imagine that some kind of demonic ritual gone horribly wrong results in this twisted hate fiend.
This guy is a Pusculus and he’s not very happy about it. You wouldn’t be happy either if you spent your days toiling in the infinite filth pits of Bagolometh.
This flying chappy is an Iphet. Expect mischief in inverse proportion to his diminished stature.
These chaps need a bit more animation attention and then they are pretty much ready to drop into the game. That’s all for today.
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.
Apologies things have been a little quiet here on the blog. Holidays, illness and a new kitten in the house had conspired to slow my rate of progress a little, but things are now back on track. I wanted to wait until I had gathered up some things things that were at least vaguely interesting to look at after a months absence so here we go:
First up the promised video of a door opening. Sadly, it is a bit of a failure as an exciting door related promo as the video shows the doors in their least beautiful light, opening right through a mercenary. Ah well, here it is anyway:
Next up is a new monster model, the fearsome skeleton model with spear and boshed together shield:
And what would a skelton be without his life long pal the zombie? Nothing much probably. So here he is too:
Clutching an improvised club.
There has also been some other, much less exciting to probe with ones eyes, progress on boosting AI performance, removing normal map bugs and clearing up a variety of fun bugs caused by the introduction of doors. The general plan short term plan right now is to boost the visual variety of enemies and then to work on making them all feel different tactically with different AI, skills and weapon setups. Hopefully, I should be back in the swing of the weekly-ish updates now so check back next time for some more monsters!
Look at that lovely pair of convex hulls!
Work on Free Company continues through the Summer Holidays down here in the shed. I’ve been learning about exciting topics like convex decomposition as I bring the game’s physics implementation up to scratch. It’s been tough going, mostly as I haven’t had any real experience fiddling about with physics in this kind of depth before. It seems that the moment you want to go beyond knocking over piles of boxes things get a little more complicated. Bah.
I’ve managed to wrap pretty much every object in the game in some kind of physics representation now, using a mix of hand crafted and auto-generated convex hulls. This means for a start that the ragdoll dead bodies now no longer clip embarrassingly through walls, it also means that I can click directly on the arch shaped doors in the game to interact with them. I wanted to have a some kind of video of me finally cracking open doors with wild abandon as the mercenaries wander freely about the levels. Unfortunately, I’ve run out of time this week to get the easier non-physicsy parts of it working properly yet so it’d probably just look a bit daft to the casual observer. Expect it next time instead.
It’s also been ludicrously hot here in London, so I’m amazed my brain even managed to do anything other than melt. Good work brain.
Upcoming (if it cools down a bit):
- Finally working useable doors!
- Super clever cover calculations using raytests!
- Stripping out old crappy physics code!
- Finally not having to think about physics for a while!
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.