Unusually on schedule, welcome to the January 2020 development update for King under the Mountain!
Alpha 3 Release – Mod Support
At long last, the game now fully supports user-created mods to change and add to the base content pack.
In short, everything in the “mods/base” directory forms the data-driven part of the game (compared to the code that loads and uses it), so hopefully you can go and see how this works to be able to add your own additions or modifications. For (surprisingly?) the first time, I’ve recorded and narrated a video to help better explain this, which ends with me implementing a simple mod to replace the game’s default font with the OpenDyslexic font.
I was very keen to get this release out as soon as possible for those interested to be able to start trying out their own mods, and help me to discover what features are missing when it comes to modding. Although this is released as “Alpha 3”, this isn’t yet covering everything that I plan to release as part of Alpha 3 – most importantly the integration to mod.io to act as a central place for people to upload and browse mods for the game. This will be coming in the near future, but in the meantime please do join the game’s Discord server and hop into the #modding channel with any questions you may have. No doubt I’ll have an FAQ up before too long.
Community Translation Support
One of the “mods” that the game now comes with is the “Community Translations” mod. While King under the Mountain is in active development, the text in the game is constantly being added to. Until release, it would not be feasible to produce a complete translation into the main languages as they would quickly fall out of date with each new release of the game. The intention for this mod is that the translations will be kept up to date with contributions from the game’s developer and community (as in, I’ll add to it as new translation strings are added to the game, and if anyone wants to keep it up to date in a different language from time to time, that would be amazing!). You can find the Github repository here. If you’d like to contribute but don’t know how to use Git or Github, you can download the .csv files, edit them in most spreadsheet software (remembering to save back as .csv) and email it to me at email@example.com
Most of the languages have had an attempt at translation using Amazon’s translate service, so they’re probably very poor machine translations that could do with a human touch.
Following the earlier experiment with East Asian character sets, I’m very happy to say that the game does now support translation into Japanese, Chinese and Korean!
EGX Rezzed 2020
Finally I’m happy to say I’m going back to EGX Rezzed to exhibit King under the Mountain at the end of March! I previously exhibited at Rezzed 3 years ago(!) to coincide with the launch of the original Kickstarter campaign and the first public pre-alpha. The game has come on a long way since then and it’ll be great to be at an expo with more of a game than that early tech demo. If you’re going to be attending Rezzed yourself, please do come and say hi! It’s always an encouragement to hear from and meet part of the small following this game and dev update has. I plan to have the brewing and drinking of beer in the game in time for Rezzed so even if you won’t be there, I’ll be bringing forward that feature from the roadmap a little to add to the game. Also if you are attending, there’ll probably some kind of King under the Mountain-branded freebies to grab, but they are still to be confirmed at this point so tune in to next month’s update to find out more!
Welcome to the King under the Mountain monthly update! A little late (again) though I hope you’ll forgive me what with it being the Christmas holidays.
At the end of last month’s update I was all set on finally moving on to mod support, or at least initially different translations. After the update, on 19th November, Alpha 2.8 was released which introduced the new Kickstarter-backer-specified resources. This brought a reasonable amount of traffic from players old and new, including highlighting several bugs and other problems, most of which had been around a while but I hadn’t been able to recreate myself.
In the end, I spent late November and most of December rewriting the item allocations system. That is, whenever something needs to be crafted, or some furniture constructed, or a settler needs a tool, or basically for any use of an item, the game has to keep track of which items/resources are available and which are free to be used. Up to this point, each item entity had a simple pair of integer counters, one for the quantity of the item and one to say how many of that quantity are currently allocated to be in use somewhere. Say a piece of furniture requires 10 stone blocks to be created. It’ll ask for stone blocks to be assigned, and perhaps there are two piles of 6 stone blocks that are available. All of the first and 4 of the second would become “assigned”, leaving 2 of 6 stone blocks available in the second pile. Something might then go “wrong” though, the stone blocks could be being carried by a settler just as a cave-in happens overhead crushing the settler and the items, or the player might decide to cancel the construction. This should then de-allocate the items assigned to the construction, setting the allocated amount for both piles back to 0 (specifically, decrementing the first by 6 and the second by 4). In almost all situations this worked fine, but there was a very hard to track down problem where sometimes items were not de-allocated properly, leaving them stuck as allocated forever even though the original use for the allocation had since been cancelled or completed.
The above was a very tricky problem to recreate – I could never quite figure out under what circumstances this happened, and when helpful members of the community sent me save files that included occurences of the issue, it had already happened in the past and I had no information to look at to see what had led to this point, just a number saying a certain quantity of some items was allocated somewhere and I had no idea where.
I ended up biting the bullet and spending a lot of time rewriting this system, so that instead of a simple number, each item allocation is now a small group of data detailing the purpose of the allocation (such as for hauling, being used in inventory, etc.), who requested it, the intended destination and so on. I couldn’t otherwise figure out the root cause of the problem so at least changing all the item allocations over to this new system would give me enough information to look deeper into the problem and narrow down where it was coming from.
As is often the case with massive changes to a system, having to touch many parts of the codebase led me to discover and fix some existing issues (hopefully including the one that caused me to do this large piece of work in the first place), and of course, inevitably, introduce new problems 🙂 Still, I think the item allocation overhaul has been a big success and was very much worth doing, just a shame it’s delayed the implementation of the modding system for another month or so. It wasn’t just item allocations that were rewritten either, the way stockpiles manage and keep track of their contents was also overhauled, having been one of the earliest parts of the codebase and something else that wasn’t really fit for purpose any longer.
Additionally, I ended up also changing over how liquid allocations work, as that was also a bit of a hack previously. Until now, units of liquids like water and soup were also stored as integers (whole numbers). A barrel can hold 6 units, a bucket moves 2 units of liquid, and so on. This didn’t really work for drinking barrels, as I wanted a single bucket of water (2 units) brought to a barrel to suffice for many settlers to drink from. If the 2-unit bucket of water only supplied enough for 2 drinks, the settlements would spend even longer moving water around than they currently do! The original solution was that instead of removing 1 unit when a settler had a drink from a barrel, there was a random dice roll which determined if a unit of water was removed (I think it was a 15% chance). This way, a bucket of water would last several drinks, it would vary in amounts quite a bit, but overall on average it would balance out. Not a great solution but it did work.
However there was also an assignment problem with water barrels. There would be an issue if dozens of dwarves went to drink from the same barrel with only a small amount of water in (say 1 unit). The first dwarf on the scene might end up emptying the barrel, then all the others would get there, get slightly annoyed the barrel was empty, and have to go in search of another, probably all going in a big horde to the next barrel that would probably get emptied to. To avoid this, each 1 unit of water in a barrel was reserved (allocated) by a dwarf wanting to drink there, and unreserved/deallocated when they finished drinking (if they did not end up randomly using up that unit of water). Much like the item allocations, there was also a bug here that I could never quite track down, where some of these allocations would also get stuck and live forever, resulting in the water barrels eventually becoming unusable as their entire contents were incorrectly allocated (a number of people had encountered this one).
So as well as the item allocation overhaul, I finally did the obvious thing and move liquids to using floating point (decimal) numbers for their quantities and allocations. Now a settler reserves 0.15 units of a barrel, and always removes 0.15 units when drinking. A bucket still brings 2.0 units of water to the barrel so each bucket provides enough for 13 and a bit drinks. There’s still a lot of legwork for the dwarves to do to get drinks available in water barrels, but do not fear, water pipes and pumps are coming in the future to automate this!
In the same way that overhauling item allocations seemed to fix the problem I was looking for, I believe the new liquid allocations (which get tracked with more info in the same way as item allocations now do) do not have the problem I was looking to solve anymore. Good news!
Helpful members of the community (especially SirRockstar who’s been a fantastic help with detailing problems) have been sending me details and savegames for issues in the current versions so there’s also been quite a lot of bugfixing going on. A nice one to finally figure out was that bridges didn’t always get constructed (I think it depended which side they were “dragged” from by the player) so that’s now sorted, and a major quality of life improvement in that constructions now use the nearest available resources rather than what was effectively any (random) available resources.
Sorry it’s been a very plain, media-free update this time around. I said it last time but now I will be going on to the first part of modding with language support so look out for that! There’s also some semi-exciting news to share but I’ll leave it until next month when I have more details nailed down, so see you then!
Hello! Sorry for the big delay on this month’s dev update. In fact it’s been so long that I’ve decided to bundle up both the late October update and the upcoming November recap into one bumper issue! Since the last update I’ve been exclusively working on adding natural resources to King under the Mountain chosen by Kickstarter backers as part of their rewards. At least, that’s what I’ve been doing in terms of gamedev, it’s been another super busy month otherwise!
Thankfully, this task is now complete so I’m going to spend this month’s dev update going through what has been added with some of my thinking or future planning for each one. Those eligible for the reward were asked to pick a real-world type of rock, ore, gemstone or tree to be added to the game, and I also ended up adding the option of a type of mushroom which didn’t have to be constrained to a “real world” choice for some more fantastical elements in the game. Here’s what people came up with!
Some of the resources that have been added (in more detail below) tend to necessitate other new additions, such as metallic ores that can be smelted (or not) into new metals. This is not the case for gems, particularly when jewellery and decoration has not been implemented yet. That makes the list of new gems uncontroversial and simple enough, so I’ll simply list them here with their in-game tooltip descriptions (anything in italics is an explanation for this dev update only):
Morganite – A rose-coloured variety of beryl. It was named after being popularised by a particularly wealthy merchant in the age of myth. The particularly wealthy merchant is a reference to the real-world naming of Morganite, which is named for the banker J P Morgan.
Ammolite – An opal-like gemstone which has a red to green iridescence. It is known as the “hunting stone” and amulets made from it are meant to bring good luck to a hunt. This description is in reference to the following from wikipedia: The Blackfeet tribe know ammolite as iniskim, meaning “buffalo stone”, and have long believed it to possess amuletic powers; specifically, the gem is believed to aid in the buffalo hunt, and to draw the buffalo within tracking distance.
Painite – A very rare gemstone which is often identified as an off-colour sapphire. The crystals are naturally hexagonal in shape and a favourite of tacticians. The “favourite of tacticians” was an addition of my own as a reference to hex-based strategy games.
Rhodochrosite – Found in varying shades of red to pink. It is not as hard as most gemstones making it a poor choice for rings and other high-impact jewellery.
Bixbite – Also known as red beryl, it is a very rare gemstone. It is often confused for a red-coloured emerald.
Opal – A form of silica infused with the magic of the oceans, which makes this a favourite of sailors and fishermen.
Lapis Lazuli – A rock with a brilliant deep blue hue which is used as a precious stone.
Amethyst – A violet-hued variety of quartz. Ancient humans believed it could magically protect them from becoming too drunk. For this reason it is not very popular in dwarven culture. The name “Amethyst” itself comes from the Koine Greek for “intoxicate” as it was indeed believed to prevent people from becoming drunk.
Labradorite – A rock which shines with a typically light-blue iridescence. Rarer specimens can reflect a wide range of colours.
Sapphire – Often believed to protect the wearer from the attention of daemons, sapphires are much sought-after by mages for use in sky and air-based magic.
Quartz (Rock crystal) – The purest form of quartz. Rock crystals often feature in magical artefacts as they are a condensed form of the element of ice.
Adding new trees was a surprisingly popular choice, I’m assuming for backers to include some of their favourite (local?) species based on what was chosen. Currently, each woodland area on the map has 1 or 2 randomly chosen species. I’m hoping that later in development, tree placement will be based on the biome of the map, perhaps taking into account the latitude of the map location and local climate. At the moment there is no rarity to any type of tree which should be addressed when different types of wood are worth more or are otherwise superior to “standard” wood types.
Tree & wood graphics
This is Diospyros crassiflora (aka African ebony) which has extremely dark heartwood, and much like in real life, is extremely valuable due to its appearance and durability.
Bull-oak (or buloke) is a species of ironwood tree from Australia. It was only upon implementing this that I realised/remembered that trees in King under the Mountain are currently only described as "(name of wood) tree", and the wood material harvested from this is listed as "Ironwood". This means that in-game this is currently labelled an "Ironwood tree" which is acceptable, although I realise now it would be better to have individual tree descriptions rather than relying on the wood material name. This would also allow trees to have their own tooltips, which is one major type of entity in the game that do not currently have tooltips.
The request for this tree was for the Spruce tree. As you can see from the image, I've opted to lean into the blue spruce (AKA Colorado blue spruce) for the blue-green colouration to distinguish it from other evergreens.
This is the Australian Christmas tree, also known locally as moodjar. Uniquely, it blooms into a bright yellow/orange colour over summer, unlike most deciduous tree types in-game which turn green to yellow to red during autumn.
This is much more commonly known as Norfolk Island pine, although I'm aiming to avoid names that use real-world locations so they can fit better into the lore of King under the Mountain, despite these backer rewards requiring the selection of a real-world species. As with most of the items in this list, ideally this would use more unique graphics than the existing pine sprites, and hopefully there comes a point where that can be added (or even modded) in!
Ideally this tree would drop or at least have harvestable pecans (the nut), but in the interest of getting this much-delayed update out, extras for backer rewards such as this have been put on a future to-do list.
Rosewood can refer to several types of tree, but simply "Rosewood" was requested and as the tree description uses the name of the wood material, "Rosewood" it is!
A tree from eastern North America, "Eastern Juniper" is what was requested however this is currently listed in-game as "Red cedar" due to the material of the wood harvested as described above.
Out of all the trees listed here, this is probably the one most in need of unique graphics to convey the iconic African baobab - particular the giant baobab. I've based this on the Suarez baobab. The baobab also really highlights the issues that come from just randomly mixing different trees together on a map, this should probably only show up on maps that have a biome similar to the real world locations it is found.
Again, the name here can refer to several types of trees but it's simplified to just sycamore for the moment.
And again, aspen covers several tree species, usually defined by the area of the world they are found in, so this continues the interest of removing real-world locations from names.
The request here was for the Japanese maple, which is also known as the Red Emperor maple which feels ambiguous enough to me that it can fit into the world of King under the Mountain.
Also, bamboo was requested as a new type of tree to be added. While most others can get away with some re-use of the existing assets, bamboo is definitely too distinctive to do the same so this will be added at a later point.
Adding new ores to the game was interesting, because it usually ends up implying that there’s a new metal that can be smelted from it. Here I’ll go through the ores that have been added and any extra resources that they have led to, or any plans for the future.
A metallic ore which complicates the smelting of tin. It has too high a melting point to be smelted with normal processes.
Tungsten/Wolfram - not yet implemented
Tungsten has a melting point of 3422 °C (the highest of all discovered elements!) so it is not feasible to smelt ingots from it. Perhaps it may be of use when alloys are added (as it is often produced in reality by forming an alloy with nickel), or perhaps dragonfire or magic can be used to produce tungsten. For now though, Wolframite is effectively useless so it is also marked as being very rare so you won't be left with many useless ores on your map.
A mineral which can be polished into beads for use in jewellery. These beads can by dyed into many different colours.
Magnesite can be burned to produce magnesium oxide which is used as a lining in blast furnaces, and this may be an in-game use in the future. Magnesite was requested (quite correctly) as an ore, but as it is also used for jewellery, right now it's been added as a new type of gemstone as that is how it will be used (when jewellery is added).
A silvery metallic ore which turns black when exposed to air. It is strangely warm to the touch.
The "strangely warm to the touch" is a reference to the fact thorium is weakly radioactive. I've not yet planned any uses for thorium, and in the real world it is very rare. Let me know if you can think of any uses which would be appropriate to King under the Mountain!
Often confused with turquoise, it is actually an ore of copper.
This is a simple one, being an ore of copper, it is much the same as malachite, but in a more pleasing colour!
Naturally-occuring platinum which must be smelted before use.
Joining native copper, silver and gold, expect this to be particularly valuable once trading is implemented!
Fool's gold (pyrite)
Also known as Pyrite, its pale-yellow appearance causes some to mistake it for gold. It has several uses when crushed, but care must be taken as it sparks when struck.
Green vitriol (iron sulphate)
Look out when fire is added as this may be an explosion risk! Green vitriol (an archaic name for iron sulphate) has several real world uses, which should be reflected in game as a soil supplement, and perhaps an addition to leatherworking and medicine.
Pollucite is an ore of Caesium, which is currently too dangerous to produce. Particularly crazy dwarven metalsmiths are currently trying to find a reliable method of production.
Caesium - not yet implemented
Caesium ignites spontaneously in air and explosively when in contact with water, so if and when that applies, it will be a very dangerous material to produce! I would like to introduce some method of producing caesium from pollucite, it feels like it would have some fun uses in traps and mechanisms.
An ore of mercury which is often used in jewellery due to its deep-red hue. It is also used to produce the dye known as vermillion.
Mercury - not yet implemented / gemstones
As the tooltip states, this is an ore of mercury. As mercury probably won't be implemented (unless we find a good use for it?), it'll stay as a gemstone for use in jewellery.
Ilmenite is the primary ore of titanium. Unfortunately, a means of titanium production is yet to be discovered.
Titanium - not yet implemented
An ore of titanium, which requires slightly more advanced processes than the dwarves currently have available to them to produce. Surely something can be figure out though, perhaps with the aid of magic?
Bauxite is the primary ore of aluminium. Unfortunately, a means of aluminium production is yet to be discovered.
Aluminium - not yet implemented
As with ilmenite, this is an ore of a metal which requires more advanced processes to produce. There will be a way of doing this in the future though!
It should be pointed out that the less useful of these new ores will be very rare in-game until they have a use, at which point they’ll be a little more common. Dwarves in titanium plate armour would be quite something!
Unlike the other resources added by backers which were constrained to real-world examples, I also added the option for backers to invent their own fantasy mushrooms leading to some interesting additions.
A mushroom with a pink-red cap bearing white spots. It has hallucinogenic properties which warriors sometimes use in preparation for battle.
This is the iconic "toadstool" species of mushroom. It is technically poisonous and a hallucinogen. It is thought that viking berserkers would ingest these mushrooms to send them into the classic trance-like fury depicted of barbarians in fantasy. As dwarves are from Norse mythology, I wanted to keep this link, so as well as the descriptive text, these are labelled as "Berserker mushrooms" in-game.
A bright yellow mushroom which glows with the appearance of sunlight. It loses this glow the moment it is harvested.
As the tooltip suggests, this mushroom glows and literally acts as a yellowish light source in the game world, illuminating the deep, dark caves it is found within.
A round orange/yellow mushroom with a white underside. It is said to have been used by mages long ago, but for what purpose, nobody knows.
Requested as "Syrup's powder" in reference to the magic powder produced by the witch Syrup in The Legend of Zelda in exchange for a magic mushroom, which usually has a bright yellow/orange appearance that this mushroom is an homage to.
A magic-infused mushroom that gives off light and changes colour with the seasons.
The backer that requested this actually let his kids choose what would be added to the game. Specifically that it has "changing colors of the rainbow (Red Orange Yellow Green Blue Purple Pink, according to my daughter)". This inspired me to extend the way certain items can act as a light source, and I'm happy to announce that this mushroom does indeed cycle through all the colours of the rainbow (across a year) and gives off light in-game according to that colour. You can see this in action in the video below.
A white and black spotted mushroom. It has been known to affect the appearance of those who ingest it.
I don't know where the name of this comes from so there's not much I can say on this one! The backer requested that it could have a harmless cosmetic effect which hasn't been implemented yet, but has been added to the to-do list and is something I'd like to get around to eventually.
Once thought to exist only in the Hudds region, it is now found throughout the world.
I believe this is a reference to Huddersfield, at least the colour scheme being based on the football kit, although I don't know what the significance of the name is.
A black-blue mushroom with a metallic taste. It is named for a group of bards from the age of darkness.
This is a reference to a heavy metal band, with the description tied a bit more to the lore of the game world.
The glow mushroom is a bit special in that it cycles through many colours, each of which it also applies as a light source. Here’s a video of it in action (with days and seasons shortened so everything is very sped up, normally the transition would be much more gradual):
Only one backer decided to nominate a new type of rock to be added to the game – Icelandite! I’ve been trying to avoid direct references to real-world locations and names from things in the world of King under the Mountain (although if you’re very picky about it this is impossible as names of things are deeply rooted in their real world history). Icelandite is named for Iceland and there’s not much information on it, not many other names that I could swap out instead, so I had a look at alternative names for Iceland itself.
Dwarves, at least the dwarves in King under the Mountain and most fantasy settings, owe a huge amount to Norse mythology and history. “Frón” is apparently the old Norse word for land or Iceland, and so Icelandite has been named “Frónite”, which I suppose means “mineral of land” which is appropriate if a little vague.
It’s quite rare compared to the other rock types (so it will be a bit more valuable too), keep an eye out for its pleasing blue appearance in your maps!
New alpha released!
There’s a new alpha build with these resources out… now! As always it’s available from rocketjumptechnology.itch.io/king-under-the-mountain which all Kickstarter backers and pre-orders should have access to. Please get in touch if you’re a Kickstarter backer but think you don’t have your game key yet.
This update actually removes a small number of the existing resources which unfortunately means it is not backwards-compatible with saves from the current version (Alpha 2.7), except on the off-chance your save’s map does not have any of those resources.
Onto the next update
Finally, with all these in place, it’s finally time to move on to opening up mod support. Now that these new resources, their tooltips, and the many hundreds of words in other tooltips that were added in the last update are in place, I also think the time has come where the main body of text is ready for translation. I didn’t want to get people involved with translating the game while I knew I had quite a large number of words to be added in the short term. Now this is done, I think it makes sense to allow for translations to be the first types of mods to support before going on to more general content-type mods that should be possible. I might even be creating a few tools to help with translation support. A number of wonderful people have already contacted me offering their help with translation to their native language, but if there’s more of you out there in the community it would be great to have you on board! The best place to start is to join up to the King under the Mountain Discord server and either drop me a message directly or say hello in the #translations channel.
Until then, see you next month for the December update!
Welcome to the September update! A bit of a short one this month because A) August was late so it’s not been quite as long since the last update, and B) it’s been one of those months where there isn’t any particularly visual or even interesting progress! So what has been happening? The main body of work has been adding new resources to the game – those chosen by Kickstarter backers as part of their rewards. Although there was an email survey sent out several months ago, only around 50% of backers eligible for this reward have responded, so if you’re in the other half who have not got back to me yet, search your email inbox for “Claim your pick a resource reward for King under the Mountain” and get that response in soon to avoid missing out!
Past that, I’m still laying the (huge piles of) groundwork for mod support. It’s the kind of task that requires lot of fairly dull legwork until the big bang at the end when everything comes together.
In other news, this month saw the release of Overland (at least on consoles) which is a game I’ve enjoyed following the progress of although I’ve not yet found the time to play the thing. I mention this because there were several news stories around the fact that it includes the OpenDyslexic font as an option to replace the game’s default font, and coming off the back of last month’s update all about fonts it really stood out to me.
Until these news articles appeared I had no idea that there was such a thing as a font that can be more legible to people who suffer with dyslexia and it quite rightly garnered some praise. Having just swapped out the font in King under the Mountain, it occurred to me that this will make a perfect test case for an example mod that could come supplied with the base game.
So when mod support does finally drop, you can look forward to this as an example of a simple mod coming bundled with the game, with the bonus of including the OpenDyslexic font for those who prefer it!
Finally there’s some very good news on the horizon – I’m in a position where I’m going to be able to change from trying to fit game development around a full-time 5-days-a-week day job, and instead I’m going to move to a 4-day working week, simply cutting down on the contract work that keeps the lights on to be able to dedicate a full day a week to development of King under the Mountain. Progress has been pretty slow for the last few months, which I’m deeply sorry for and is a source of much personal frustration. Fortunately, you can expect to see things kick up a notch in the near future and bring us closer to release!
Welcome to the (late) August update for King under the Mountain! Apologies for the lateness of this, August was a crazily busy month personally, but I thought it still worth putting out a delayed dev update rather than nothing at all until the end of September.
The good news is that tooltips for nearly everything in the game have now all been implemented (thousands of words in total!) and there’s a new alpha build (Alpha 2.6) available on the Itch.io page for all current and future owners to get hold of with these tooltips in. As well as providing some super useful information to the player (especially to explain what a pillar actually does), this is also the start of background lore in the world of King under the Mountain with references to the magic system and the world at large. Read more
Welcome to the monthly update! With Alpha 2 effectively out of the way (though as always there’s some small bugs still to look into), the focus now is on Alpha 3, which means mod support! As a precursor to this though, I’ve been working on a tooltip system. I think this is going to really improve the new player experience by explaining how things work which is a bit of a sticking point without a tutorial (I’d rather add a tutorial later in development when more of the base gameplay is in place). It’s also the first time we’re getting some background fluff added to the game! You can see it in action here:
A tutorial is often requested as the game is not as easy to understand as it could be. I’m hoping tooltips on practically everything will work as a bit of a sticking plaster until there actually is a tutorial. I decided to get the tooltip system done now as it is massively increasing the amount of text in the game which leads into… multi-language support (AKA internationalisation).
The first big feature I want to enable through modding is to add translations to the game. While King under the Mountain is in development, it doesn’t make sense to get a translation company to translate all the text in the game as it is constantly being added to – as soon as a set of translations was finished it would be incomplete in the next update and not usable by any players who don’t read English. I think the best approach, for now at least, is to support and encourage translation mods while the game is in development, and potentially pull these and/or “professional” translations into the base game (not as a mod) once it hits version 1.0 (i.e. after beta). The game can even warn you if a translation is incomplete for the version you are playing – it’s a problem that needs addressing if not solving while development is active.
To this end, I’m going to be creating tools to help the community with translation mods – probably a small command line executable which initialises or updates a spreadsheet to be filled in with translated text, even including computer-generated translation text as a start pointing. Translations provided by a computer are often poor because they’re missing enough context to know exactly how something should be translated, but having them as a base to work on top of should make things easier.
I’m also looking at swapping out the font currently used in the game (Google’s Roboto), or perhaps even the entire UI skin, as the kerning (the spacing between letters) is terrible with the current font sprites that have been generated. As with everything else, this will be open to modders to change and improve, so I’m hoping that one day someone comes up with a usable font and set of UI widgets that blows everything else out of the water! Part of the problem is that fonts often have restrictive licensing considerations so it’s not quite as simple as deciding “that font looks good, lets use that one”, as well as generating a spritesheet for the font which is what LibGDX uses rather than rendering text directly from font files.
If you’d like to help out the early community with translation support into practically any language (I’m aiming to support languages with a large number of characters like Japanese, Chinese and Korean, but I will probably not be able to support right-to-left languages like Arabic) then please head on over to the discord server and the newly created #translations channel where I’ll be organising things in the not too distant future!
An ever-so-slightly late update this month (oh no it’s July already!), and we’re celebrating that Alpha 2.2 has been released. The main feature in this version is that you can now discover giant mushrooms (they’re rare, they prefer to hang out in the larger caverns that you can discover in the middle of the mountainous regions) and harvest them as an alternative to lumber/logs from trees.
For now this is mostly just an unusual colour alternative to the kinds of wood you’re used to, but in the future as the economy is added, giant mushrooms are very rare and much-prized by the dwarven community, so this will be a particularly valuable resource to export or craft with. Also, different materials will have different properties – perhaps giant mushrooms are softer/springier than normal wood and you might be able to find a use for this (a better material for a bow, perhaps?).
Alpha 2.2 also includes quite a number of small bug fixes and quality of life improvements. Bugs in systems-driven games like this tend to be darkly amusing and one that I quite liked is that previously, dwarves would jump up out of bed the moment they’re starving or critically dehydrated. A change in Alpha 2.1 allows dwarves to sleep at least for a while with a life-threatening unmet need like this. The unintended consequence of this was that dwarves could now die while asleep in bed which they wouldn’t do before. As this wasn’t noticed during development, it’s been possible for dwarves to die while in bed and quite literally stay in that bed forever, decaying away to a skeleton as each dwarf is responsible for getting itself out of bed (i.e. there’s no job to go and pull a dead body out of a bed). Instead of the grisly task of removing bodies from beds like that, dwarves now fall out of bed when they die as shown in this dev mode video:
The main changes in Alpha 2.2 are those behind the scenes – I’ve implemented the artifact-based mod loading and parsing as described in last month’s dev update. This massively speeds up the time to add and process new assets that make up the base mod, as well as being a future improvement for modders to make use of.
The other main improvement is that until now, when adding sprites to the game I would manually trim the PNG images down to eliminate unneccessary padding/whitespace from the edges and calculate how this would affect the offset of the sprite being rendered in-game. That was an extremely laborious, time-consuming process which I’m sorry to say I spent quite so long on sometimes. Now that I have a good understanding of that process, I’ve been able to write a simple automated tool which performs the same job, but taking milliseconds rather than minutes of manual effort! This will also form part of a suite of tools modders will be able to use to make it easier to add assets to the game.
The next milestone, Alpha 3, is the modding release. First I’ll be tidying up the existing data structures and mod files so there’s better (or at least some) consistency in the data files for modders to expect, as well as a general cleanup of unused or incomplete asset files and data. Part of this includes adding the Kickstarter-backer-specified natural resources to the game! I’ve only received about half of the possible responses to the email for that reward so please do get in touch if you haven’t already and you were a Kickstarter or Backerkit backer who had “Add a natural resource” as one of your rewards.
Otherwise, see you next month and thanks for reading this update!
Welcome to the update! I had been hoping to show you giant mushrooms (which can be used as an alternate source of lumber) in this update, but it’s still not quite ready, though I don’t think it can be far away now.
Most of the work accomplished this month has been preparing the way for mod support, which is due to make up almost the entirety of Alpha 3. For this monthly dev update, I’m going to go into some detail on what mods in King under the Mountain actually are and how I expect them to work.
One of the design goals of King under the Mountain is that it is data-driven, which is that most of the stuff in the game (i.e. items, terrain, jobs, professions, even some AI decision-making) are not “hard-coded” into the game engine but instead loaded in from data files. That could mean binary data like .wav sound effects, .png sprites for characters, items and furniture or, in most cases, a machine-readable text file which provides data to the game but is also easily understoo-editable by humans. In our case we use JSON as it’s a bit shorter and more readable then XML, although you lose the safety net of having a strict structure that you get with XML.
If you want to take a look in the /assets directory wherever King under the Mountain is installed, this is where all the game’s data files (except player-specific data like saved games) are stored and loaded when the game is launched. You’ll find a large selection of .json files containing all sorts of data for the game, music and sound effects, and perhaps most importantly, spritesheets in the “tilesets” directory. The largest and most important is diffuse-entities.png and here’s how it looks as of today:
There’s a few points of interest in this image. “Diffuse” refers to the fact there’s a matching normal-entities.png with the normal-mapped versions of the same set of sprites. You can think of the diffuse images as the colour version, and the normal is alternatively called bump-mapping to make the lighting system work. “Entities” is the term I’m using for things in the game, currently categorised into items, furniture, humanoids and plants (with animals likely to also be part of this list). You can see that some (mostly the different outfits currently in the game) are coloured, while the rest are in greyscale. This is because a lot of the entities are coloured in “on the fly” by the game engine, usually depending on which material they’re made out of – the different materials and which colours they are drawn as is specified in the JSON files.
2D games use spritesheets like this, which are all the images in a single image/texture, so that it can be loaded into the memory of the graphics card once and then accessed many, many times to draw different regions to different parts of the screen. Separately loading each sprite as a new texture, drawing it, unloading it from the graphics card and repeating the whole process would just be too slow in most cases.
The above hopefully explains what the assets used by King under the Mountain are. Most computer games ship with assets exactly like this, and a lot of the time they’re compressed and/or obfuscated, meaning they’re difficult to modify by the player. Usually this is to prevent cheating (particularly for multiplayer games where the integrity of the game’s files will be checked by an anti-cheat tool) or just to help protect the developer’s artwork and media from those who would copy and distribute it illegally. Still, that usually doesn’t deter some fans, who modified (or “modded”) game files to change how a game looks or plays, and its out of this that the modding scene was born.
Most games now embrace modding and provide guides, tools and engine support for mods, and King under the Mountain will be no exception!
Armed with the above knowledge, you could go into the /assets directory and change things to modify the game, and this would indeed work. Modifying the spritesheets would be awkward but possible, while the JSON files are relatively easy to manipulate. One or two members of the community have already done this in fact. To share their mods with others though, they need to keep and distribute the changes in the assets directory with others.
This works relatively well for when a single person has modded the game, but what if you wanted to add several mods to the game from different sources? You’d have to keep track of which files each mod changes, and attempt to put them all together without causing any conflicts – mods might want to change the same file, say one of the spritesheets, and at that point you’d have to pick one or the other to apply and lose some of the changes from the other, which might have poor or even disastrous results.
This is where mod support comes in. Alongside the /assets directory, there’s also a /mods directory in the game location. Currently this will only contain a single directory, “base”, which is effectively the source files for what gets processed into /assets. Looking in the “entities” directory, you’ll see JSON files defining what types of entities there are, several .png sprites for each of them, and asset descriptors (more JSON files) which describe how the entity sprites should be used.
The different item types and other entity types are processed, and the image files are combined into the relevant spritesheet – coloured sprites into the diffuse spritesheet and the _NORMALS versions into the normals spritesheet. Similar processing happens for everything else in this base mod directory to produce the contents of the assets directory.
The important point here is that the game’s data files, everything under /mods/base is treated as a mod itself. The upcoming work is to then allow for other mods to live alongside this which can be layered “on top” of the base mod to add new assets and behaviour, change existing assets or adjust settings and constant variables used by the game. This also solves the problem that would come from directly modifying the assets directory – multiple mods can be used at once and the mod system defines how they interact with each other – either additively providing more content or replacing the settings of previous mods.
Until recently, every time a change was made to the game’s base mod – that is, whenever I’ve been adding more assets to the game – the entire /assets directory was deleted and re-created. It was a quick and dirty solution that was perfectly “good enough” throughout the early stages of development. Now that the entities spritesheet is getting quite large (see above) and complex, this has been taking more and more time, eventually becoming a bit of a drain on gamedev time, just waiting for the assets to be processed between minor changes.
The main progress this month has been designing and implementing a much better solution – mod “artifacts”. Simply put, an artifact is a single file or group of related files in the assets directory. Each set of entity type descriptors is one artifact, the entity spritesheets are another artifact, the terrain spritesheets yet another artifact and so on. Now, instead of deleting and recreating the entire assets directory, the mod processor checks for any changes in the “source” files (the files in the mods directory which feed in to each particular artifact) and only recreates the artifact if any changes are detected (by running a quick checksum on the contents of all the input files and checking them against what was last processed.
This also extends perfectly into layering mods on top of each other. As new mods are added to an installation of the game, a mod may only be made up of certain artifacts rather than all of them. The mod processor then knows it only needs to process these artifacts, massively speeding up the process of swapping mods in and out of the game. Here’s an example of how a mod which only changes the entity and terrain sprites would be applied:
And that’s how mods work in King under the Mountain! As I continue development of mod support, I’ll go into detail on how the mods will be packaged and distributed from modders to the larger playerbase. Of course there will also be much more in-depth guides and documentation covering how to add and change game assets. Most likely a wiki site will be launched soon. I’ll also be covering the current plans for code mods, in addition to data files as described above, which will allow for all-new in-game functionality.
If modding isn’t your thing, then don’t worry! There’s still a fairly big update coming as part of Alpha 2, wrapping up a lot of player-requested features and some new content additions. I’d hoped to have this released in May but as always, it’s been a very busy month! Finally, if you’re interested in modding the game or just want to get involved with the community, the best thing to do would be to join the Discord server. See you next month!
Alpha 2 is upon us! The main feature is that the placeholder production of metal (which was simply and easily turning raw ore into metal ingots) has been replaced by a more in-depth production chain. Raw, mined metallic ore needs crushing down to remove the useless stone and get to the usable ore. This is then smelted at a bloomery furnace into a “bloom”, following how iron was historically produced before modern mass-production. The bloom is then hammered by a smith into usable metal, which can be worked into its final form. This update also introduces fuel in the form of coke (refined from coal) and charcoal (produced at a charcoal clamp using wooden logs).
Alpha 2 also includes the most-requested feature by players – a screen to view and manage all of your dwarves! This was teased in last month’s update but it has now been released, head on over to rocketjumptechnology.itch.io/king-under-the-mountain to download Alpha 2 if you already have a copy of the game, or purchase it if not! It’s still early days for the user interface (I’m treating the whole thing as a placeholder) but this work solved some of the problems of dealing with the UI (most importantly a way to draw entities like the settlers as interface components) so expect more to follow – perhaps most importantly a screen to manually organise crafting and production so that the player has direct control of what is being created!
Following the “add a natural resource” reward emails which were sent out previously (please do get back to me if you’ve received one and not responded yet, or if you think you should receive one and don’t remember seeing anything), more recently emails have been sent out for the “Add an animal species” and “Design a farmable crop” rewards. In the end there were only 8 of the former and 4 of the latter, with two super-backers covering both! Unlike the “add a natural resource” these will all require custom artwork to be created so I look forward to sharing these in the future.
As it had been so long since the Alpha 1 release, Alpha 2 was actually released early while there was still more content intended for part of this release milestone. First of all, metal plates are to be added as a new intermediate product so that constructing furniture out of metal is a bit more sensible – rather than hammering a few metal ingots together to form an elaborate construction, instead plates will be forged by a blacksmith which are then put together along with other mechanisms to produce some of the machines used by the dwarves (such as the ore crushing station). Expect this to feature more heavily when brewing is added due to the number of metal tanks needed as part of the brewing production chain.
Also on the topic of working with metal – dwarves in King under the Mountain are the only race to know the secrets of producing steel, superior in strength and quality to iron which will be important when different materials have different in-game effects, particularly in combat! Central to this is the crucible furnace, which will be the largest piece of furniture in the game so far, used to convert iron to steel in sizeable quantities.
Long-rumoured to the world of King under the Mountain are giant mushrooms – mushrooms so large, tall and tough that they can be used as an equivalent to trees! A later update will see a visual rework of the game’s funghi, but I wanted to have using-giant-mushrooms-as-trees in one of the earlier updates.
With those features added the next major milestone (Alpha 3) will be all about mod support. Modding is an absolutely central pillar to the design of the game and I can’t want to see what people are able to come up with once the ability to mod the game is thrown wide open. It’s these early days of modding which will shape exactly how mods work and what they look like, so if this is something you’re interested in, please get involved (ideally via the Discord server) and help me to add what it is you want to be able to support mods.
It’s not released quite yet, but here’s a sneak peek at the much-requested Settler Management screen/feature coming in Alpha 2 of King under the Mountain:
Alpha 2 is on the horizon now, potentially including a resource management screen as well as this settler management one. It’s taken a lot longer than I’d have liked to be able to go from Alpha 1 to 2 but there’s some good news there – I’ve secured several days in April for development of King under the Mountain and I’m sure we’ll see a big jump in progress, and with a pinch of luck, some form of Alpha 2 being released in April.
I forgot to mention that last month saw the start of gathering information for Kickstarter rewards (other than copies of the game), specifically emailing those backers who had one or more natural resources to add to the game. If you think you should have a “pick a natural resource” Kickstarter (or BackerKit pre-order) reward, you should have received an email asking you for the details of this. Try searching for the subject “Claim your pick a resource reward for King under the Mountain” in your inbox or spam folder. It’s now over a month since these were sent out but only 47 resources out of a total 169 have been received so far, so please get in touch with me at firstname.lastname@example.org if you think you should have this and can’t find it.
After Alpha 2 is released, the big focus for Alpha 3 will be to enable modding in King under the Mountain. Since the early days of the project, making as much of the game data-driven has been a key goal. This means that things like items, plants, resources and so on are all defined in (JSON format) data files that are loaded and used by the game. The majority of these reference .PNG image files which are also loaded and used to make up what you see when you play the game, or .wav or .ogg audio files for sound effects. Most games combine these “assets” into compressed or obfuscated packages to make the download size of the game smaller but also so they can’t be easily modified by users. Instead, King under the Mountain plainly exposes its assets (take a look in /mods/base in the game directory if you’re curious) so modders can see how things work to add their own.
The way the AI works is heavily inspired by this post by the Starmancer devs, where I have a system of Goals made up of Actions. The Goals are JSON files (look in /mods/base/ai/goals) which are made up of a set of selectors to determine when a settler chooses to select the goal to complete, and a set of Actions which are Java classes used to fulfil a certain, well, action, with a success or failure state. Until now it would only have been possible to add mods implementing new Goals using only the existing Actions. As a test case I had the game load in a new Action from a mod and use this instead, which proved modders will be able to add their own AI steps to the game as well as overall goals. The same can be implemented for basically anything that has a range of different implementations rather than just data values, such as different job types and their effect on the world, and hopefully going as far as new UI screens and views possible in mods. I’m really excited to see what people will be able to come up with in mods and I’ll have a lot more to say on this (and guides!) in the near future. I’m sure it’ll be an evolving process as some things that I’ve not really considered might not be possible to mod yet, but I’d be able to open it up as the modding community makes requests.
So it’s another relatively short update for the month. Again, I’m very sorry at the lack of tangible progress since Alpha 1 was released but I’m fully committed to breaking through that wall and getting the next major build to you guys soon. If you’re already playing the game and haven’t joined already, we have a friendly discord server at discord.gg/M57GrFp and if you’re just discovering this game for the first time now, you should head on over to rocketjumptechnology.itch.io/king-under-the-mountain and grab a copy of the game while its still in earliest access! Itch purchases will include a Steam key when the game is ready to move on to Steam.