Welcome to the Dwarfveloper log #34 – Items and crafting!
Today we are going to discuss:
Items Items, items, items. Any game with extensive crafting really does revolve around them, and it is therefore of the essence that the underlying systems governing and presenting them to the player rest on solid foundations. Ours, we like to think, do.
Items in Hammerting are defined primarily in two ways, through their “Modifiers”, and through their “Classifications”. Rather than being hard welded into some monolithic data structure, items carry very little information in and of themselves, and rather act primarily as container objects for “Modifiers” — effectively a set of values with a type — which the crafting system passes on through the various crafting stages, modifying, translating or otherwise using their values along the way. “Modifiers”, in turn, can have “Classifications”, which are string and hash tags which can have hierarchical inheritance from other “Classifications”, and which are used to provide “Modifiers”, carried by items, with identity. So what does that mean?
Axe Example An axe, is made from two components, an “Axe Head”, and a “Handle”, and those are both, in turn, made from the various metals available in the depths of the Mountain. One of the requirements we had on the system when we did our extensive rewrite of it back in September, was that we wanted end products, like the axe, to individually reflect the metals they and their components were made from, and thus the system has to preserve that kind of information, as well as the typology of the various axe heads and handles used. So, for example, you could have a Butcher’s Axe made with a Copper Cleaver Axe Head and a Curved Iron Handle, or a Woodsman’s Axe made from a Mithril Hawk Axe Head and a Straight Gold Handle. Powerful stuff.
Under the new regime, we use a translation scheme, by which a particular crafting recipe translates “Modifiers” in the incoming crafting material to its own outgoing values, and through such sequences the raw inputs from the base of the crafting trees can be propagated to the eventual leaf-node end products, end products which will then effectively carry their entire crafting history with them. An “Axe Head”, for example, has a “Sharpness” modifier, which it creates by looking at “Hardness” and “Malleability” modifiers in the incoming metal, and which all metals then have to some degree or another. The finished axe, in turn, can do whatever it wishes with the incoming “Sharpness” value, and this varies per axe type, but usually it propagates by some factor into the various damage types, for example “Slashing Damage”, or “Piercing Damage”. The beauty of this is that, rather than adding in an axe head per metal type, we only have to add the axe head type (e.g. “Cleaver Axe Head”) once, and then have its actual values qua “Golden Cleaver Axe Head”, calculated from the metal that was used in the concrete crafting instance.
So, for example, a Hawk Axe Head made from Copper would be lighter and sharper than one made from Gold, which could increase the “Slashing Damage” of the axe made from Copper, but at the same time the axe made from Gold would have a higher “Crushing Damage”, as “Crushing Damage” is heavily dependent upon the weight of the weapon, making your optimal choice of axe heavily dependent on the enemies you plan on encountering. Not all enemy encounters are planned affairs, so perhaps a more balanced axe type could be the go-to choice? Then there are the considerations of the peaceful application of axes as crafting tools, so other dimensions would also come into play when considering what best to put in the hands of your stout little wards.
More than Weapons The system permeates all crafting interactions in the game, and, in another example, Food uses a similar layout as Weapons, in which various base “Tastes” — e.g. “Salty”, “Bitter”, “Sweet” — in the primary cooking ingredients, like Tubers and Mushrooms which can be found and cultivated in the Mountain, can be propagated upwards through the crafting tree, to finished food products, which will then by their respective types have various taste preferences. Beer, for example, is best made from “Bitter” tasting foods, whereas “Bitter” foods wreck any good cake, as cakes usually prefer “Sweet” tastes. Except the Bitter Cake, of course.
There’s a lot going on, and little by little, these types of interactions and dependencies will make their way into pretty much every aspect of crafting and building in Hammerting — Perhaps making a solid Gold foundry isn’t the best idea when the magma eventually comes slushing through it? — and provide ample design space for emergent behaviours, ideally providing a fun and varied experience with each play-through of the game.
Balancing these heavily intertwined systems is another matter, but we have done a fair bit of thinking on that as well. Stay tuned!
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper log #33 – The War Above!
Hello everyone!
Welcome to the Dwarfveloper log #33 – The War Above!
Do dwarves bathe? The winter is long and cold, we think they could appreciate a bath? Maybe if they had hot springs down in the mountain? Or would they not risk making the beard soft and fluffy? Just what we're pondering at the moment! Let us know if you all have any suggestions!
On that serious note - WAR!
Content
Overworld Crisis
Significant progress has been made on overworld crisis missions:
Locations can be taken over, and fall.
UI work. War progress meter, alerts, map locations, & more.
Work on crisis spawning algorithm.
10 crisis/war missions.
Here's an example of an overworld city normal and razed.
Other
Added several dependencies to crafting recipes to improve content progression.
Readded "New Recipe" alert on unseen recipes.
Unlock system supports mission unlocks.
Bacon now restores Energy.
Implemented new UI for crafting rooms.
Bricks can be mined away.
Unlocking Ball Peen Hammer Head after Sledge Hammer Head.
A dwarf in misery will now get a flashing icon by the portrait to warn the player. A bit too discreet, yes, we’ll add a more in-your-face notification too.
An icon is now shown in the missions list to indicate that there are available overworld missions.
Code
Grottos will now light up and provide extra visibility to dwarves who wander near them.
Dwarves will now walk around inside buildings when crafting, rather than just standing outside.
Dwarves can now issue the “Place block” order to fill up missing pieces of the map.
Lowered priority for hauling stuff to storages.
Orders on the map now have icons.
Even the most stubborn of dwarves will no longer try to enter an elevator and pass through the cave wall.
A notification is now shown when the game auto saves.
A dwarf standing on top of a map block would under certain circumstances refuse to move anywhere else. Perhaps because of the good view. Well, it is no longer so.
Art
Tweaked with various UI elements (such as the build UI and an alert notification)
Polishing on Overworld locations and background.
Razed versions of the overworld locations
And some images that belong:
A dwarf in misery:
The War Meter:
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper log #32 – Hungry Dwarves!
Hello everyone!
Welcome to the Dwarfveloper log #32 – Hungry Dwarves!
We’re implementing the feature that plagues all us mortals - death! For now we have added in starvation as one of the tickets to the underground graveyard but there are others planned. We would love your feedback! How resilient should dwarves be? How often should a dwarf die? If you have input on how you'd like to see this balanced, please let us know on Discord, Steam or Twitter - links are at the bottom of this post!
Onto the patch notes:
Content
Added room "Storage".
Significantly reduced likelihood of iron and coal being present in Dawnlit Caverns.
Implemented unlock support by recipe type to provide better content progression.
Changed building dependencies to provide better content progression.
Statusbars are now woven together in that Greed affects Morale which affects Energy which affects Health. Failing to maintain the dwarves' statuses should ultimately be detrimental to his health.
Mission indicators placed accurately relative to locations on the overworld map.
Increased vision ranges for the dwarves by factor 1.5
Lowered Required Skill on Straight and Curved handles.
Started to rework crafting UI, separating the art from each crafting station.
Made a bulletin board model (to be used to access the overworld map).
Made new icons for the overworld map that indicates if a location is under siege from either allies or enemies.
New Biome still in progress.
Code
Added highlight effect to things that are interactable (metals, different crops, world loot etc)
Started to reworked how basic commands are used for interaction
Adding some coloring to the dwarfs’ armor and hair. Their armor will be colored in their clan’s colors.
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper log #31 – Ice Mines!
Hello everyone!
Welcome to the Dwarfveloper log #31 – Ice Mines!
This month we are focused on making the game really FUN to play. Most systems are in place, we have a lot of content, now we need to tie the pieces together. This is when the magic happens!
Art
Reworked some UI (like the build UI).
Made a bunch of new icons. Some examples are generic food, granite and vegetables.
Begun working on a new biome: Frozen Waste.
Code
The tile highlights when placing dig/mine/build room/build other are now much more visible(visible in fog of war, for example), and support custom textures.
There’s now a tooltip that shows the “hotkey” for all buttons with hotkeys assigned.
More bug fixes
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper log #30 – The Overworld Expands!
Hello everyone and a Happy New Year!
Welcome to the Dwarfveloper log #30 – The Overworld Expands!
A lot of the past two weeks were lost in a haze of Yuletide, so today's report from the mines might be a bit more meager than usual. We’ll try to make it up to you in the update for next week!
Content
Added "Goblin Standard", loot.
Added "Goblin Yurt", loot.
Added "A Feast of Boar", loot.
Added "Goblin Spear Banner", loot.
Added Stonemasonry skill to Miner's Pickaxe.
Room "Dwelling" has proper icon.
UI
We now have a gloriously wide overworld map to show you more of the holdings and the bigger world outside of the mines. Not that we’d ever GO there.
Art
Made 7 individual ingot models.
Made art for a new location in the world map.
Reworked the art for various overworld locations.
Made more loot models, such as crabshell, scroll, bones and most importantly - beer stein.
Code
Fixed some hitbox issues, so weapons on dwarves are clickable now, not just the dwarf body.
Added support for autosaves.
Crash fixes.
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper log #29 – Custom Dwarf!
Hello everyone and happy holidays!
Welcome to the Dwarfveloper log #29 – Custom Dwarf!
Most of us are off from the 20th. Next week our devlog will be short, but like being short will be full of dwarven spirit, but enjoy a big dev log for now!
Content
Added the Sly Fox.
Added mushroom icons.
Added more lootable items.
Added descriptive texts to several buildings.
Significant internal work on cleaning up and redefining data. Not the shadow of a pixel’s worth of visible difference.
UI
The world is too small - so we made the Overworld map bigger and added a new nation!
Code
We’ve added a “dna”-system that can give each dwarf a unique look by selecting different bodies, heads, hairstyles, and beards. The dwarfs’ armors can also get some custom coloring for even more variety!
Minor pathfinding optimizations.
Inventory system refactored.
Many small animation/movement fixes.
Fixed bug where dwarves would sometimes target innocent granite blocks as combat targets. Also fixed where they’d target enemies in the deepest depths rather than the one gnawing at their feet.
Increased base vision range for dwarves. (Temporarily larger than what they will have in the end, but at least they’re not all nearly blind!)
Many small bug fixes.
Rendering speed improvements.
Misc code fixes for Overworld map.
Art
Improving Dawnlit Caverns biome with grottos and new vegetation
Happy holidays again from the team, we hope you will all have a great festive time above ground! :)
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper log #28 – The Overworld!
Hello everyone!
Welcome to the Dwarfveloper log #28 – The Overworld!
The save feature is one of the last big systems we need to implement, after this is done, we can focus more on making the game more fun, get rid of bugs, fix UX issues, fill up with content and more. Wait aren't we supposed to be roleplaying a Dwarf? Ahem - ah yes the mines have had a bountiful harvest this year and we need a way to stockpile it, our Dwarfvelopers have been hard at work creating this very stockpile!
We chose to make an in-house engine we get a lot of flexibility, but the game takes a bit longer to get off the ground! We firmly believe it will be worth it, especially with the kind of skillsets we have in the team!
Code
Continued work on save/load, now almost complete.
UI
Continued work on the Overworld map plus it is now fullscreen!
Mission window now fits into a small-ish laptop screen.
Dwarf states got some new icons (for example melee combat, moving towards combat etc.)
Art
Finished a new splash art / loading screen.
Updated the base UI (Actionbars, Top bar, Log, scrollbar).
Made concept art for props found in the Dire Tunnels Biome.
Finalized Verdant Grotto biome.
Happy holidays from the team, we hope you will all have a great festive time above ground! :)
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper log #27 – The Snowdwarf
Hello everyone!
Welcome to the Dwarfveloper log #27 – The Snowdwarf! Welcome back Anders/Srekel from his month-long absence from the mines! We are also beginning to feel festive, here’s a concept of our ice biome - look out for the frosty mountain dweller!
Content Added lore text to enemy lairs. Added several lootable props and spawning logic for them. Reworked internal reference components for graphics.
Art Fountain god room almost finished, started with jackpot mine. Two troglodyte sculpts finished. Created Concept art for a new frosty biome. New biome Verdant Grottos in a presentable state. Returning to older biomes to add improvements and optimizations.
UI A new notification window instead of having notification over half the screen. Updated build menu to fit the notification window. Now also with buttons that look…like buttons.
Code Continued work on save/load function.
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper Log #26 - Verdant Grotto
Hello everyone!
Welcome to the Dwarfveloper log #26 - Verdant Caves!
It’s cold in the mines this week. We keep the fires burning, but still, our hands grow cold and our fingers blue. Send us warm thoughts please!
(Just like this warm dwarven room!)
Art
New biome in the making - Verdant Grottos.
Finished creature concept art for Verdant Grotto.
Made icons for mushrooms.
Started making models for food, hide, machine parts and lumber loot.
Dwarf god grotto added, with first room fountain god.
Added storage room building.
UI
A “Load Game” menu, for all your saves!
Top bar now shows total amount of Mountainhome gold.
Load/save/pause menu now in-game.
Code
Continued work on save/load.
Optimized attachment system to scale better for large worlds.
Users can now select “Return to Main Menu” from in-game, and start new games/load old save games.
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!
Dwarveloper Log #25 - The Great Forge
Hello everyone!
Welcome to the Dwarfveloper log #25!
This week we've sharpened our pickaxes and have been hard at work in the coding mines. One of our dwarves has also been lecturing at a university above ground!
Here's everything we have crafted this week:
Code
Added a new system for spawning entities in the caves. This will allow us to create areas with a bit more personality than before, and make sure that you find some nice loot while you explore!
Continued work on save & load systems
(We're not sure if you'll dare open this chest!)
UI
Added a proper top bar with time management and room for resource tracking etc.
Content
Added several new missions
Added several new loot drops from enemies
Added crafting recipes
Art
Added art to the main menu and loading screen.
Concept art created for new creatures in the Verdant Grotto Biome.
Began work on a new biome
Join us in the great hall next week for another Dwarfveloper log by the hearth where we’ll have more exciting news to share on what’s to come!