May 2018 update - Second breakfast

This month actually saw a lot more progress than I was expecting, but less visual progress than I was hoping! I'll get into that shortly, but first here's a look at the progress towards food production - kitchens have water barrels that are filled by hand and worktops which collect raw ingredients, but putting it all together is just a couple of days more work away.

I was (knowingly) a bit optimistic with the feature set I wanted to get implemented in time for the Kickstarter campaign - I've been hoping to have both food and drink production, along with the dwarves having new needs of hunger and thirst. As these are fairly hefty new systems with a lot of new art assets and other implementation details behind them, in order to still keep on track for a July launch of the crowdfunding campaign, I've decided to take out drink production (i.e. brewing beer) and thirst, and just aim to get food production and eating done in time.

This means I'm still aiming at a mid-July launch for the Kickstarter campaign (sign up to be notified here!), and unless something goes horribly wrong, I can now say the date will be Tuesday 17th July for the Kickstarter launch! There's a lot of new exciting stuff that should be in place I'll be able to share before that date: a new trailer acting as the Kickstarter video produced by M Joshua, a new music track by Jordan Chin (very exciting!), translations for other languages and perhaps of the most interest to readers of this post, a new freely available playable prototype!

So drink production and thirst has been pushed back out of the prototype (these features are still on course for alpha 1 though). I'm currently working on getting the first examples of food production into the game, which has so far required a lot of new features and under-the-hood coding to make work (one of the reasons the month of may has been a challenge!). Here's what's been done this month:

A placeholder smithy with a smelter to turn ore into metal ingots and a blacksmith station to craft metal items has been added. This was added out of necessity to let the player craft things out of metal (in particular barrel staves) which are required, but this is only a placeholder as the game design calls for a much more detailed and life-like production chain to turn ore into workable metal, approximating real historical smelting methods.

A carpenter's workshop has been (re)-added, there was an early version of carpentry in the playable prototype released last year which didn't do anything. Now it will automatically craft barrel staves, barrels and buckets to help support food production.

There is now a (currently hidden) "production manager" that keeps track of which items and products need producing in workshops. Eventually this will be viewable and editable by the player, so they can globally set how many of each item they want to produce (either as a set figure or per head). For now this means carpentry workshops and the smithy will produce enough items so there's a healthy stockpile of things which might be required, but they don't infinitely produce items as long as resources are available (which is how things have worked until now).

The game engine creates "zones" as places to collect water and any other liquids from (and there'll probably be other uses for zones in the future). As part of map generation, zones of a set size are assigned along the banks of the river (you can see a debug view of this at twitter.com/RocketJumpTech/status/999051572322676736). This is so the AI can pick the section of the river nearest to them, without having to check every single tile along the river to see which is nearest.

New items in the form of barrels and buckets, made out of intermediate products (barrel staves and hoops), have been added. This also necessitated a change to the item rendering so different layers can be swapped in or out - so a barrel can be shown as empty, containing a liquid, or with a lid on.

Liberally borrowing from the modding approach of Dwarf Fortress, string "tags" can be attached to the definitions of items, furniture and creatures to add behaviour or change something about them. This was already in place for specific assets, to make the miner's helmet act as a light source, but has been extended to let different types of furniture have their own AI behaviours. This is used to make kitchens include barrels to act as a water source, which creates jobs to fill the barrel by bucket from the river.

Also as part of the above, filling a container with liquid (and even having a definition of a liquid at all) meant a somewhat tricky change to settler AI to let them know how to find and collect a bucket, fill it up at the river, and go and dump it out into another container.

Finally, the first cooking recipe in the form of soup has been added (although this isn't completely implemented as of this blog post). Initially I was going to add recipes for different kinds of soup (i.e. "tomato soup" and "carrot soup") but I wanted to allow any combination of valid ingredients to make a dynamically-generated soup, and this is now done too! This means that if a chef decides to throw potatoes and carrots into a cauldron and heat it with some water, it'll (dynamically) produce "Potato and carrot soup". Several vegetables produces "Vegetable soup" and a single type of vegetable will produce, for example, "Tomato soup". The main challenge is making this work alongside multi-language translation support so we'll have to wait until the Kickstarter to get the new translations in place and see that in action.

Along with having to cut (for now) drink production, there's no concept of fuel or fire in the game yet (so there's still no use for all that coal you can find on the map). Producing and using fuel is going to be a major component of dwarven industry, so I just wanted to mention it's due to be in place, but it isn't going to be in the new playable prototype.

That's all for this month, and the dev blog is a bit later than usual as I really wanted to get food production finished off during this month, but as you can see by the list of features above it just wasn't feasible to get done in time properly. There'll be another update next month when I'm hoping food and the actual eating of food will be done, but it may be the last one before the Kickstarter launch in July. If you haven't already, please do sign up to the mailing list and I'll let you know as soon as the Kickstarter goes live!