Desktop Tuesday: Complex Rooms

This week, while the rest of the team wraps up water fixes on A22.5 and design officially starts on A23, let’s check back in on UX designer Nikki, Engineer Chris, and Engineer Justin’s prototypes for our new building editor!

Read More: DT: Complex Rooms – Stonehearth


I just saw the room experiments on Desktop Tuesday, and I am so thrilled! What a wonderful solution that will impact those like me that love building. I am so excited for when this will be released in future updates.


Very cool stuff!

I’m beyond curious as to what the final version is going to look like. It seems almost too freeform and i’m worried what issues will arise without some sort of gameplay boundaries involved.

For example: Oversized buildings seem super easy to make and new players may find themselves wondering why it’s taking them so long to build what seems like a simple house.

I’m sure the team will have a solid answer for this, but I don’t. haha.


Oh. My. Great Rabbit Maker.
Although it is still in the prototype stage, I already love this new editor.
There is one concern, however, that I’d like to share with @Sweet @jamiltron. It’s an issue that is tied to the mentioned “when wall ceases to be a wall” dilemma.
As far as I see, currently your prototype works only with “one-layer rooms”. What about the rooms where the floor has different “height” and/or holes in it? While interior walls may or may not have “manually cutted” holes (doorframes in its current philosophy do not “disrupt” the concept of a wall), holes in the floor are currently mandatory if you make stairs inside your house. Also, some existing templates already use “floor with different height” to make interior more interesting (namely, clay weaver’s house for Rayyas). Another typical example is a common “watchtower” which is usually hollow on the inside and includes several stairs with several landings (floors?) on potentially arbitrary height.
While I understand the templates would most probably require to be remade from scratch to accommodate for the new editor, I’d prefer to keep the ability to design such structures in the game. I understand it raises more problems: the same “when does floor with holes cease to be floor?” issue, for example. Hope you will find a way to deal with it in a balanced way.


Glad you’re excited for the new builder, we are too!

To ease some of your concerns: the builder will account for different wall heights and multi-level buildings. This is actually the prototype we’re working on now. How we handle multi-level will dictate a lot of what follows re: hollow buildings, how much floor constitutes a floor etc. We’re making good progress though I’m going to admit it’s not an easy problem to solve.

As for stairs these are going to be handled differently than they are now, guaranteed. We will be experimenting with and prototyping stairs that don’t require holes pre-made and instead cut space where they are placed. My understanding is that these sections would still read as “floors” even with stairs in place.

Overall the primary goal of the new builder is to allow players to build anything they want. If we run into something that causes problems with this philosophy we intend to re-design it or get as close as we can to that freedom.



Couple concerns I still have.

  1. When you’re using the wall tool to stretch out a room, it’s placing the floor on top of the terrain. Many of the templates now, and I assume a lot of our buildings, have the first floor’s floor at ground level. Is this something that will be corrected, as well as will the editor be able to tell when it’s being used on ground vs when it’s being used on a second floor?

  2. Have y’all addressed how angled walls and “round” buildings will be done? I know it was mentioned before, but I don’t remember a solution for them being discussed.


Would this work as a solution to the wall problem?

For a wall to be a wall, it must connect though its entire length. Of course, indoor walls do not need this, but indoor walls don’t need to be the borders of a room.


I was going to argue, then suddenly thought it made sense. I mean, a hearthling probably wouldn’t like to live in a “room” that has a floor-to-roof hole as he would consider it to be “living in the street”. Makes sense.

But I think Nikki meant indoor walls. If we get away from the old “walls and slabs are conceptually different entities” and try to treat them all as a set of voxels (something this new approach tries to achieve), for the new “wall-moving” tool to work it must distinguish between indoor walls that do make borders of a room (separating it from another room) and a pile of slabs. The same with floor - if we want to use “moving tool” on the floor, and the game treats the floor as a set of universal voxels, we need to decide just how much holes make it stop being a floor and turn it to some decorative set of slabs.

Simply put, in the old editor we explicitly told the game “this is a wall” or “this is floor”. As a trade-off, it couldn’t allow us freely shape them. The new editor strives to be more flexible by allowing us to freeshape buildings and treat all its voxels as equal, but to achieve that, for UI purposes and usability we need to teach the game to decide what is a wall and what is floor depending on the situation.

Another possible application for this could be upgraded indoor visibility and “building slices” for multi-storied buildings - in this case we will be potentially able to “slice” buildings in any way as we want it (something current editor struggles with).

PS. Another thought. While this distinction may be useful, do we really want to limit the moving tool to walls and floors only? I mean, what if we want to actually move a big pile of slabs (that will be too long to redo from scratch in a new place - like a column or a slab statue)? Do we need a selection tool and copy-and-paste tools for this case, or?

PPS. Dimensional imagination issues. At first I thought there were floor plans on the pictures.:merry:

PPPS. @nikosthefan How about this case? Do we want to treat that as a wall?


Referring to your last point, I would say yes, that would be a wall to me. It has an oddly shaped doorway and a few windows, but it would still divide the space up very firmly.

I think that the one which really provides an edge-case would be a wall which has a continuing line across the top side, but doesn’t touch the floor at any point. I suppose that would be equivalent to a freestanding partition rather than a true wall…

So I think that gives us a good rule we could use to define a wall: it has to connect to at least two other walls and the floor in order to be considered a “dividing wall” (i.e. to split the room into multiple rooms.)

On another note, I like the idea of a selection tool for movement purposes. Actually, it would be awesome to have a basic “group selection” system – so you can click one wall/floor to select it, click+drag to select an area, or hotkey+click to select/deselect multiple items at once. That gives us a lot of freedom in how we select multiple items for movement, and then yeah it would be awesome to have copy-and-paste functions.


So a simple one-block-thick U-shaped arch qualifies as a wall for this condition?
I feel the wall should also have some “substance” (does a one-block-thick “+” count as a wall?). However it is not easily put into a formula. Your example has a good point, though. Although I would reformulate is as “a wall should touch 2 walls and at least “floor” or “roof” to be considered a wall”. “Roof” here is defined as the “top” level of other walls in the room, not the actual roof - we can have inner walls cubicle-style, with the roof covering all of them at once while actually touching only the exterior shape.


I think interior archways should count as walls, but… wow, there’s a lot of edge-cases here.


What is a wall? How did it began to be a wall.

From my point of view MelOzone’s example wall would only be a wall that has been edited to look like that.
What I mean is, that you create a wall, which is now defined as a wall.
After that you take out all the voxels you do not want to be there or you use a preset pattern… , as example a ruin wall.
It is still a wall, with a lot of holes in it, since the first thing you did was to define it as a wall.

By the way, greate discussion :slight_smile:

1 Like

Hey SA,

Happy to try and address this with what we know now:

  1. We haven’t completely decided yet if buildings will be ground level i.e. replace the ground/grass layer requiring hearthlings to dig out the ground or if we are going to have it sit on top. We will however be able to tell when a building is used on the ground vs. the second floor.

  2. We won’t be supporting round buildings or angled walls with the builder’s tools. Basically this goes against the style of Stonehearth. To account for that though, we will be allowing a powerful level of freedom in the slab/single voxel tool if anyone wishes to create something different.


Wanted to reply to a specific item here, it might be a little further out than the new builder but we are going to experiment with a slice view that handles slab/hand-created buildings. ‘RPG’ mode is what we’re nicknaming it now but it’s going to require some very crafty camera work.


Lots of talk about walls, and nice to see it progressing along to a seemingly intuitive usage.

My primary thing is what of floors. Knowing the way that I build; foundations, and floor designs. Floor designs that are manual in a way. Wonder how those will work in the new way to design. As well how making a foundation would work.

In the past I would use slab to make the foundation with a custom border around it. Then lay atop a custom floor before I would even lay down the first wall.

Probably in the category of features, but interesting to wonder how certain features would affect or be affected with this. Just some thoughts to add. :slight_smile:


So from your responses, I’m not feeling this editor is going to be easier for new people, and so much more of a pain for the rest of us.

Why wouldn’t you make them ground level, as that’s the rule of thumb currently? Having to dig the ground out first, then designing the building AFTER manually mapping the land is going to make it that much more annoying. I know you say you haven’t decided yet, I just personally don’t understand why you wouldn’t be for it.

Currently, if I want to design an angled house or round building, I can auto-wall it and save time doing so. No, it’s not as pretty as if I did it by hand with the voxel tool, but none the less, it can save time. With what you’re saying and showing, it’s going to be so much more of a pain now to do anything that isn’t square. Even some of my buildings that have columns jetting out every so often will be a pain to make anymore.

So when does this game become about the player again? So what if round buildings or diagonals aren’t the styles of Stonehearth, is it the player’s style? I mean, at this rate, you guys might as well get rid of custom buildings.

Between @Brackhar wanting us to have to please individual Hearthling wants as far as materials and colors go (General Ideation: Beauty Mechanics) and now us players almost being forced to stay within Stonehearth’s “Style”, where is the room for what the player wants? To me, it seems like you guys are either trying to over simplify it or are pushing Stonehearth to basically become Community Inc or Banished.

But the voxel tool doesn’t know what it is. The voxel tool won’t know that I want to put a window or door in what I just made. Hell, as it stands, the voxel tool won’t even allow me to place things on it, such as lanterns. So how will this benefit people that don’t want perfectly square buildings? How will it know that the diagonal wall I just made is a wall and what side is in and out? I can do this with the current editor.


I have a couple of ideas, on the whole bissecting walls part, that I’d like to put up for you guys to discuss, or consider. I will write a bit, but is simply to explain the process of how I got to a possible consistent answer to your edge case questions on the video.

In a simplified manner, my idea is that a room is constituted by a space contained within a group of walls that completely close off access to the outside of it without using a door or a window (or potentially, in the future, the stairs, which I assume will be treated the same as doors and windows when it comes to room calculation).

That way, you remove those incomplete wall edge cases. like half walls not completely closing of two separate rooms and such. If a wall doesn’t completely cut a room from side to side, it does not create two rooms.

Now, touching on the more edge cases you mentioned, should a wall completely cutting a room side to side transform it into two rooms that should separate when it comes to moving them around?

In my opinion, yes. It’d be easy to understand, given the rules you seem to have established in your test cases. A room created on top of another creates a wall to separate them, and once separated, they act as completely separate rooms. If a wall is added to cut of a room, creating two, it makes sense to expect the same behavior, it adds consistency to the builder -> Once a room is created, it is treated as a separate entity.

Then, the same rule should apply to removing a wall, it should merge two (or x) rooms into one. Once more, it’s consistent with the model defined, and consistency is good. It makes it simple for anyone to understand the “rules of the game”, and allows you to later build on top of it.

For the last “outstanding” question of yours, when does poking a hole on a wall makes it stop being a wall?

Well, I’d like to address this asking first a simple question: what is the use of a wall? In my view, walls, and most importantly, the rooms they can create, are a means of defense, first and foremost, and a way of gaining privacy second.

If you start thinking about it this way, then I feel it becomes simpler to answer the question. Can your Hearthling go through the wall after you poke that hole, without a door or stairs? If yes, then it stops being a complete wall, and the room is broken. As simple as that in my view. If someone can’t traverse a wall directly to get to you, it fulfills the most basic design: protection from danger. Furthermore, it should, in at least some sense, keep some privacy.

Now, the privacy part is something that is a bit more… easy to poke holes at. Say you create a “wall” where, you simply mesh voxels and spaces, a checkered pattern, where the black is a voxel, and the white is open space:

Say you got that pattern. Would that constitute a wall? Well, according to the definition, your heartlings cannot reach the other side through it, so it should in theory fulfill the protection part, but the privacy part? That’s where the issue is.

However, the privacy part makes little sense mechanically in the game, at least at this point. Hearthlings don’t seem to have any notion of “privacy” like in Sims. And as such, it should not be a limiting factor. However, I feel like it’d probably harder for the code to recognize that pattern as a wall if you built it voxel by voxel.

But still, you could apply the traversing condition to the current code and make it recognize when a wall stops being a wall based on that condition. It’s simple, shouldn’t take too long to calculate (I think) and shouldn’t be too hard to code (once more, I think).

That’s it. Hope it can help to at least create some discussion. I’m glad to see all the improvements being made. I’d also like to add that, while I’m not an experienced programmer, I do code on my current job, did it at university, and I have a passion for games, so I do enjoy these discussions from a more structured side. Keep on giving us these videos, i find them particularly interesting.


IMO for a wall to still be considered a wall I would just use these simple rules:

  • If the wall is continuous on the lowest level AND
  • if the pathfinder cannot find a patch between the two sides of this wall for ANY possible mob/hearthling AND
  • if there is more than 50% blocks remaining

Than it is a wall. Any other situation, it’s modern art :wink:

Also, in terms of HOW the game should make the inner walls turn rooms into separate rooms - how about make it default to YES and make it just an option in the options menu? This and several other things could just sum up to make “editor” section of the options menu.

1 Like

I did consider the “moder art” part, whether it’s desirable to be included or not, and while I wouldn’t want something like that personally, there is something to be said about allowing it as another level of freedom. You never know if someone might create something interesting given that level of freedom.

But if the devs don’t want it as they find it to be outside of their vision for the game, then sure, you could apply the remaining blocks rule, with enough testing and tweaks for balance.

1 Like

Happy to respond and give some clarity :blush:

The idea is actually that you wouldn’t have to remove ground at all. There wouldn’t be any need for you to do it yourself beforehand, building just wouldn’t require digging down one level and we’d have a new way of handling it. Related to this: it’s okay for things to change. Throughout this process we aren’t making any assumptions around what is correct / incorrect based on what exists now.

We actually don’t support this in our tools outright now and we won’t in the future. That doesn’t mean you won’t be able to create them similarly to how you do now. I just want to be clear that it won’t be added to the tools such as: room tool won’t create diamonds or circles, the wall tool won’t make a diagonal when you drag it out etc. The specific case you mention of having columns jetting out will be possible so will cross shaped buildings, L shaped etc.

The team is working super hard to bring something to all players that is meaningful. It won’t please everyone, that’s the nature of creativity and creating anything. It will be polarizing in some ways and alienate some.

This forum is for constructive feedback, good banter and continued dialog between players and the team. We’d love to keep it in that spirit.

The voxel /slab tool will do a lot more in the new builder than it does now. If we limit ourselves to what is currently implemented we wouldn’t be able to make improvements.