Desktop Tuesday: Ornate Vision


Yay water! Time to flood my Hearthling’s town and make them survive Atlantis style. Thanks!


I personally dont like the gray filter. I don’t see why its necessary when you are already highlighting the appealing objects, I’d like an option to turn that off. and I would want to have an option to increase that vision area on the fly in a game if I find it too tedious to use being so small.

I couldn’t tell, but does the upper volume of water now not deplete when creating a waterfall or making a canal/river/pond below?

Where is my hype train dammit?

1 Like

Don’t worry, we’re just in the middle of building a system of reservoirs and filling tanks so that the hype train can refill its boiler along the way!

It does deplete, previously it was just very difficult to control the rate of flow – largely because you couldn’t change it once the opening was mined out. These changes obviously allow the flow to be shut off, so it’s easier to preserve the level of water in the top pool, but it will still eventually run out if you leave it to flow indefinitely. The changes also finally allow for aqueducts, which will allow us to level out the flow between multiple pools, or move water over long distances (e.g. drain a pond high up to fill a new river lower down, so the lake it’s attached to keeps its level.)

As for the appeal vision, I chuckled a fair bit at the temporary icon of “rose coloured glasses”. I agree with @genboom on having the ability to set the radius (at least as a config option, although I see no reason it couldn’t be in the options menu). I actually really like the grey filter though, and I can see it being used for more than just inspecting the appeal; I imagine that in tutorial videos/LPs it could be used to highlight important moments.

Actually, I was just thinking that it would be nice to be able to set the “attractive” and “unattractive” colours for people who have difficulty seeing certain ones; which made me realise that what I’d really love to see would be more overlays which work the same way but for different info. For example, one which shows “relative safety” (e.g. areas your town “covers” are lightly green, areas covered by turrets or traps are strongly green, enemy spawn areas are lightly red while enemy camps and active enemies are strongly red), one for movement speed (roads are one colour, any terrain which slows movement would be a contrasting colour), probably an overlay for town worth (you’d only need one colour there, unless you start adding negative value items), and so on – basically, visualisation filters to show certain information at a glance. Block’Hood has a similar feature and it’s really useful, although it’s able to render the whole 'hood at once since it’s waaaaaaay smaller than a Stonehearth world.


Yeah, my biggest complaint about the appeal vision is that it’s very much its own thing compared to the rest of Stonehearth, and that wouldn’t be as bad if there were other informational views. But does that make sense? Visualizing guest works in Parkitect as a stand-in for actually researching your theme park’s problems to make more profit, but what does viewing your town like a Hearthling say about what you’re doing in the game?

1 Like

I reckon it’s fitting that you can see the town’s issues or successes “from the hearthlings’ perspective”, given that Stonehearth has managing hearthling needs as a core feature the same as Parkitect has managing guest needs as a core feature (or for that matter, how Block’Hood makes managing inhabitant needs an important feature and part of the core puzzle-solving loop.)

The issue here, I think, is that Stonehearth is a “macro over micro” game, so it doesn’t fit so well with the rest of the game if you’re drilling down with this tool to look at a specific problem (whether it’s appeal, or a potential other view mode.) At the same time, it kinda feels like it does fit, since it’s a way for hopelessly lost players to see the problem without having to use an even more disruptive system. It’s like a question of balance – do you look at the town as a whole, or drill down on specific features?

Personally, I think it would work best if there was a button on the main bar which opened up a sub-menu for visualiser modes. That would at least hint to the player that they’re intended as a tool you can use, the same as the build or gather tools, and that they’re designed for certain situations rather than keeping one of the visualisers up the whole time.



rendering appeal for the whole town, across multiple levels of houses, is really really hard on performance

Do you mean showing the resulting appeal color everywhere, like a heat map, or do you mean showing the appeal color for each item?
I’m guessing the heat map. In that case, it would still be useful to see the color for the items all at once. Preferably with a stronger color for higher values (if that’s not already the case). To still clearly show which item’s affects the spot by the cursor they could get an outline.

1 Like

yeah allowing the highlight color of appeal to be changed for those that are colorblind is a good idea

it doesn’t just show the appeal of the item on the ground. it calculates the area of appeal within range of these objects. so if a hearthling walks into a new room with a lot of unappealing things it would make their mood change drastically. basically appeal is relative to the location the hearthing is standing at in relation to other appealing or unappealing objects. a heat map that is color coded for high and low appeal on each square would be usefull, I agree

I think its odd that it would show you the appeal on all levels of a house, thats one optimization that could be done right there. just do not search height at all. plug it into the topology thing that stonehearth already has?

1 Like

Heat map is already a thing:

Each yellow shade is an appeal level, the same for blue (negative appeal)


I believe that the hearthlings can “see” items above and below themselves too though, so only showing the cursor’s location could give inaccurate/misleading results – imagine you had put a stockpile (let’s say for argument’s sake it’s full of rotten food) in one of those dirt/clay depressions in the forest biome, and you put your cursor on/near a fancy table and chairs which are placed on the grass just nearby. If the heatmap only applied on the current level then it would show high aesthetics because the furniture, but a hearthling can still see all that rotten food so the area would really have a major negative impact.

I like @Agon’s suggestion of having items be coloured to show their influence, and only calculate the heatmaps close to the cursor. I think that’s the best of both worlds, since the player will be able to roughly tell at a glance the relative beauty of an area, and the heatmap will be available if they want to know more detail about the numbers.

Again, with multiple view modes, this could become a really useful toolset. Being able to see at-a-glance some of the information, e.g. which furniture is frequently visited/used by hearthlings, or which entities are friendly vs which are harmful (obviously that’s not a major issue now, but later if we get more NPCs and factions and things like trading partners, neutral camps, etc. it could become extremely important/useful to quickly highlight threats), which jobs are progressing or stuck, etc. would teach players what to look out for. They can then use the heat map function to really inspect/investigate problems or edge-cases, giving a better understanding of how to deal with them. But I reckon that a lot of the time, a simple check of the visualiser will hilghight areas of concern, without needing to “mouse over” to inspect the issue more closely.

1 Like

as long as its not searching the max height of the world and its a like a limited cone of view, then yeah I guess thats as good as can be done. I forget decorations could be hanging from the ceilings so height would probably be hard to limit, especially when outdoors.

I imagine like a piano hanging out of the side of a window on the second story of a building would have negative appeal for example and without the height they would ignore it. so it makes sense, I just had to think about it a bit

1 Like

(Long reply. It’s not all directed at you @genboom.)
I get how it’s calculated. Just sum up the appeal of the objects within a radius from the spot that’s evaluated. Probably with line of sight. Maybe from the eye level of a hearthling standing in that spot. Maybe there is or will also be some more advanced stuff, like a type of item loosing appeal if there is too many of them in the area. Either way, to make a heat map it needs to check the surroundings for each square, which will be heavy on performance.
If the world was flat (like rimworld) or if it at least didn’t have layers (multiple floors in buildings and mines) the heat map could be saved as a texture and only get minor updates as objects are moved. This gets a lot harder with an arbitrary number of layers and I think this is what she’s referring to when saying “across multiple levels of houses”, not that the heat map on the ground level of a house would scan the appeal for all the floors above it (if that’s how you interpreted it @genboom).
If they could add an appeal score to each ground/floor voxel (or at least the once that are not zero) then that would probably solve it. I’m guessing however that they don’t store individual voxels in memory but simplify it to larger chunks of one color. They might still be able to save a heat map for each chunk (or part of chunk) that is affected by appeal, but it’s a bit more work.

Another benefit of saving appeal values to some kind of heat map is that you can more effectively handle objects with different appeal radius. Big objects could affect a larger area. A statue at the top of a building could be seen from further away. A noisy machine or a soothing wind chime could be heard at a distance. Flowers and rotten food could change their area of smell depending on wind direction. To do the same with the current method you would always have to search an area as big as the largest area of effect.

My suggestion was to color all objects with their appeal color. Not just around the cursor. It’s not as exact as a heat map but it would still be a good hint. This probably shouldn’t be hard on performance since the object already knows its appeal.

Thanks for the image @BrunoSupremo. I missed that in the video.
One thing that could get confusing about showing the heat map around the cursor is that is sort of suggests that the heat map affects the appeal at the cursor, as if it’s the sum of the surrounding heat map instead of the sum of the surrounding objects. Not sure how to make it more clear though. I’d still like to see both.


Good changes!

I’d still like to see just a bit more flexibility with the color of specific items (particularly clothy items like rugs, comfy chairs, curtains, banners), but this is much better than the old fine and normal item system.


@Agon, you’ve summed it all up accurately in your post. Appeal calculations are on demand rather than stored in memory partly to keep system complexity minimal, but that does mean that coloring every surface voxel in the world at once is expensive. For the items, one of the reasons we color items around the cursor rather than all items is that it shows exactly which items are affecting the spot you are pointing at, which can help you detect weird cases like a very appealing item being blocked by a wall or such.


I agree

And speaking about other colours fir clothed items i made mod icluding just that. Currently with the colours red, brown, grey and yellow and more are to come!

1 Like

So there is a limited number of voxels you can do this calculation on and it would be really different on newer / older hardware because in 3D we are talking about 20x20 = 400 (2D) x 20 blocks which is 8000 blocks to search and update every tick.
I’m just saying to me that sounds like a place to put some user settings options to change the range of the search.

I also think it would be neat to have an option to sort of bake a heatmap in the background while playing or on demand and have it just store the values of last time it was baked.
I could see a system then where you take the on demand areas you have calculated and just storing that as a low-res texture with like a single pixel representing a block with different color coded values, as a map is rather large.
Over time and normal on-demand use this would sort of stitch together a rough heat map of the town you are playing on. if you want to keep track of different levels of houses just simply add another image.
If the heat map was height based then it could skip searching empty voxels and secondary stories of buildings and higher would be much faster to map.

The water developments were enough to get me to dig up my login for this forum after a lapse of about a year =). Great to hear that progress is being made on that front.

I hope that water origin points (rivers from off-map or springs) are next, so we can have persistently flowing water.

Get persistently flowing water and waterwheel/windmill type mechanics, on top of this update, and you’ll finally have most of the core DF gameplay elements implemented. Really happy to see this progress. Good work!