New Feature! Room Mechanic - Handling goods in storage rooms
#1
Handling goods in storage rooms


I know there have been a lot of requests of being able to store certain items in certain storage rooms. Now I have finally buckled down and started working on it. When clicking room info in a storage room you will get this now:

[IMG]replace_photbucket_link/Storage.jpg[/IMG]

Under the headline storage you will see all items that can be stored in this storage room, you will also get a nice overlook over how many items of each type there is stored in the room.

If clicking on one of the item types they will toggle between three states:

State 1 - Store

This state works just as it does now, nothing new about this one.

State 2 - Take out of storage room

This state will stop storing this particular item type and deliver it forward to other storage rooms that have room for it and that have a different state on this item type than "Take out of storage room". There is one thing to watch out for when using this state, it is that if there are rooms connected to this storage room that needs flour for example and that flour is marked with this state, then these rooms will never get any flour. First I thought that I could make it so that it didn't took away all items if a room connected to it needs it, but I don't think the player would put a item in this state in a situation like this.

A side note. If a storage room don't want flour for example, it will still allow transportation of flour between storage rooms if it is centred in the middle.

State 3 - Take in too storage room

This state will deliver all items not reserved by other storage rooms to this storage room. All rocks for example that are not used for anything other than buildingsites will get transported to this storage room. If several storage room has this option available the items will get split between them when they are being delivered. A storage room that already has all the rocks will hold on to them if this state is selected, even if other storage rooms has this state selected as well.

Storage rooms that has rooms connected to them that needs items like flour for example will override this state. They will get flour delivered to them, but only the lowest amount possible.

Additional buttons

As you can see in the screenshot there are three buttons in the bottom right of the corner as well, clicking these will set all items to the selected state.
Reply
#2
Sounds like a good incentive to play more with the distribution and linking of storage rooms, I like it Smile

One question though: Wouldn't you accomplish the same thing with just 2 states, Store and Don't Store?

Situation 1:
  • You build a storage room (all items allowed by default).
  • Imps start filling it with varied items.
  • You mark roots as not allowed, storage worker starts taking it away to mother or other storages that does allow it.

Situation 2:
  • A storage room has 20 rocks in it.
  • You build a second storage room that allows rocks.
  • All new rocks go to the new storage until they reach 20, then imps alternate between the two storages, maintaining balance.

Situation 3:
  • Two storage rooms, one with beer in them, allowed, one without, disallowed.
  • You change both states so now it's not allowed in the first one, but allowed on the second one.
  • Imps start moving the items from one storage to the other.
Reply
#3
Not exactly, by using the "store" state, then it is just like it is now, normal so to speak.
When using "not store", then no item of that type will be stored in the room.

I understand that these two could be enough. But the "store" state is more like a neutral state.
When choosing "store all here" / "Take in too storage room" all items that aren't reserved will get transported to that room, this can't be accomplished by using "store" and "not store", well it can, but imagine 10 storage rooms and the player having to choose "not store" on 9 of them to get the items transported into the ninth. Besides "Take in too storage room" will not stop other buildings from storing items to such extent like the "not store" will.

I see your point, but having a third state will make it less messy for the player to control the storage.
Reply
#4
I like it and want test it asap:-)
Reply
#5
Just have to fix the bugs, I have been prioritising making features like this for the game. But now I am finished with it for this version. Tonight many bugs will be solved Smile
Reply
#6
Really looking forward to this new storage system!!
Reply
#7
I love this system, it's a huge improvement on the no control whatsoever system we've got now. Another thing I'm thinking of that could be added in as well would be having a minimum number of items to store, and a maximum number of items to store settings for each item. For example, you have a cookery room connected to Store Room 1 and want to make sure it always has enough antrootsto keep the the brewing vats operating. You could set that store room to keep a minimum of 5 antroots, so whenever the supply of antroots falls below 5 it will automatically get a store all items here type of priority to antroots until it has at least 5 of them stored again. On the other hand, if you also don't want it to get plugged full of nothing but antroots, leaving room for other supplies the cookery room also needs, such as buckets of water, you could also set a maximum to store value for antroots, say 15. If it gets more then 15 antroots it would act like a remove all items from this store room automatically, until the number stored is back down to 15 or less. This way you could automatically have the store rooms maintain a certain level of inventory. The 3 options you already have could still be used as a manual override for special occasions, such as having a bunch of stone temporarily moved to store room 1 by selecting store all stone here and the min/max settings would be ignored if they conflict with the store all setting. This might be to move stone closer to where a major building operation is planned, and once it's done the setting could then be turned off to restore stone storage to normal.
[Image: 11619898803_7d3a89e6bd_n.jpg]
The Golden One!
Reply
#8
Lets just see how this goes first. To be honest I am afraid of mixing in to many control variables in the production chain because it can get really messy really fast. When I first created the production chain with the room linking I had it so that what item will be transported where was decided by very specific demands of each storage room.

Lets say that a storage room (A) has 3 antroots and there are 6 brewingvats connected to it then it should have 6 antroots in the storage at least, then we have another storage room (B) that has 3 brewingvats connected to it and 2 antroots stored.
This means that A that needs 1 antroot before it can reach the same "level" as B, so then the next avalible antroot got transported to "A". This system seemed very simple, but as the player can have a lot of storage rooms and all requiring different amount of antroots there are a lot of calculations to be made. I also ran into the problem that the storage room that got rid of the most antroots quickest always got the most antroots delivered to it.

The bottom line is that this very simple system got way to complicated in the end and it behaved in a unnatural manner.

At this point I described this problem to a friend of mine that has a lot of experience with network programming, and as there are some similarities in this I thought that he could help. And he did, he told me that I should make it a lot more simple, first of, either a storage room wants a antroot or it doesn't. So if we have 6 storage rooms in a production chain that all need a antroot then for every antroot that gets out into the production chain will get randomly distributed between these storage room, so in this situation there is always one chance on six that storage room "A" will get the antroot, even if it has the most antroots or if it got the last antroot. All that matters is that the storage room is requesting a antroot.

So that was the idea I went for, the distribution is random but it will always get evenly distributed as long as there are enough antroots available in the dungeon. If there are to few antroots being produced there is always a chance that one cookery room will have 100 % efficiency and another 0 %, but that is understandable in my opinion.

The biggest upside with this system is that it is very safe, there are no heavy calculations involved and it is easy to understand even if the production chain gets to large. Everything comes down to if a storage room want a antroot or not.

Introducing fixed numbers into this calculation can be problematic. I can see it working when maybe one or two storage rooms at most requires these fixed numbers, but as soon as too many storage rooms start using them on the same itemtype I am predicting some unwanted behaviours. I really prefer to keep it as basic as possible, either the player wants antroots in the storage room or he don't.

Right now it all a matter of chance if a storage room will get a item or not. The storage room will have to request it, and the request is determined by the demand from the rooms connected to it and how many items the storage room already have of this type.

X = "number of brewingvats connected to the storage room"
Y = "number of antroots already stored"
Z = "number of antroots the storage room is requesting"

Z = X - Y
If Z is higher than zero then the storage room has a chance of getting an antroot.

When "State 3 - Take in too storage room" is active this "Z" value will get overridden to always be equal to 1.

The problem with forcing in constant numbers for if a storage room should store an antroot or not is that Z will get manually overridden by the player, and as the number of antroots increases or decreases over time depending on if there are enough farms/brewingvats the Z number will have to be changed by the player over time as well. And this will get very messy for the player.

By controlling the storage rooms with just "neutral", "in" or "out" the player can achieve everything you described above, just that the result will not be as "perfect". The thing is that I can't find one reason why the player would like to store a specific number of items in a specific room. Either he wants to store it or not in my opinion. If the storage room starts to get to full he can either build out the storage room with more tables, or move some of the items over to another storage room, or build a whole new storage room that is bigger and link the other rooms to it instead.

Maybe I got a little to technical here, but I really do think that the more simple the system is the better. It is impossible for me as a developer to know exactly how the player wants to configure his dungeon or production chain, that is why I think it is better to only give him something basic and functional that will work in all situations.
Reply
#9
The idea I suggested is that the store room can be automatically switched between the states of "normal", "in" or "out", based on the settings for the least amount of items the user wants stored in a particular store room or the maximum number of items. So each item would have 3 variables, minimum, maximum and amount. As long as minimum <= amount <= maximum is true, the store room is in "normal" mode. If amount < minimum the store room automatically goes into "in" mode and places a higher priority on getting items, like you described in your description of the "in" mode, and if amount > maximum, it goes into "out" mode and starts sending that item out to other store rooms until amount <= maximum.

In other words, if the user feels the need to control the supply chain a bit more closely then just letting whatever happen because the store room a cookery room is connected to isn't getting any antroots due to it being full of items that cookery room doesn't need, then the user can set limits on other items then just store nothing at all, which may not be what the user wants.

For example, Store Room A has room for 100 items, has a cookery room with 2 brewing vats linked to it. It will naturally demand antroots and water. Now, let's say that store room was near a major mining operation to it gets filled up with 100 stone. That stone isn't useful for making beer, but now making that beer in those 2 brewing vats becomes very inefficient because the water and antroots are now having to come from a store room that's much further away. Now, the user is planning on building some things near Store Room A that require stone so doesn't want all stone removed from Store Room A, just enough stone so that it doesn't interfere with making beer. So I could set a maximum number of stone to 20, so after the 20th stone is stored there, all the rest will get sent along to another store room, leaving room for antroots and water to be delivered to Store Room A, while also leaving some stone there for building. All this happens automatically without the user having to keep manually micromanaging settings. If the store room changes in size, these Minimum/Maximum values can be automatically scaled to the new size, so if Store Room A was expanded to now hold 125 items, Stone Maximum could be automatically scaled up to 25 (20 * 1.25).

So what I'm proposing isn't setting an exact, specific amount, like keep exactly 15 stone in Store Room A. What the idea is, is don't let Store Room A hold more then 20 Stone. That leaves the other 80 item slots for other items.

I'll also add that these values can have a default value for Minimum of 0 and for Maximum of the capacity of the store room, so all items are by default in "Normal" mode for all store room all the time.

The "in" and "out" buttons could be used as a manual override when the automation isn't behaving like the user would like.

The reason I'm suggesting this is that while testing it earlier, I was having huge problems managing production chains due to lack of options to control them. I had orcs starving and dehydrated due to lack of food because all the flour and antroots were sitting in a distant store room waiting for imps to deliver it to the store room connected to the cookery room, which couldn't take any antroots or flour because it was full already. So my cookery imps sat idle waiting for ingredients to be delivered that weren't being delivered because a full store room was plugging up the system.
[Image: 11619898803_7d3a89e6bd_n.jpg]
The Golden One!
Reply
#10
Hmm, how I would handled that is to just always have rock-in on a couple of other storage rooms spread out in the dungeon to get the stones evenly distributed on locations that don't interfere with the normal production chain.

Tell you what, I am about to release the next version tomorrow. If this system isn't up to its expectations I will consider adding more options to the system Smile
Reply
#11
Sure. Another option for the minimum setting would be to get a warning message when a resource falls below this amount, so you know that production is about to be slowed before it actually is. This could have a default value, but also be settable by the user if the user doesn't like the default value for a particular situation.
[Image: 11619898803_7d3a89e6bd_n.jpg]
The Golden One!
Reply
#12
Really nice, i'm wondering if an "quantity" can be added to the "thing you can do" example i wana only 89 irons in this storage room at max.

Like that i can control all my production if i select the quantity of any kind of items i wana.
If i'have 3 square table i can split my split and manage my production.
~ French Fan site Community, manager.
[Image: 195677userbarfactoriofofoxav.png]
~ Looking for Sandbox games ? look my Blog or youtube (Eng sub soon)
[Image: 176032userbarclubsandboxxavfofo.png]
Reply
#13
I've been having huge issues getting items to their production chains. The items just seem to spend too long languishing in some store room far from where they're needed and the imps (who are often idle, and other times transporting a horde of items 1 at a time) don't get the items to where they're needed in a timely fashion, often getting distracted by low priority tasks like shifting unused items around. If I could manually set priorities and storage settings of items, I could have more control over this and actually be able to DO something about it besides just watch the imps doing stupid, useless junk tasks while my minions starve. If an imp has a stack of 100 coal waiting for transport to another store room and 3 antroots waiting for transport to a cookery room, I'd rather the antroots go to the cookery room so 3 more beers can be made, then resume shifting the coal to that other store room when there's nothing else to do anyways.
[Image: 11619898803_7d3a89e6bd_n.jpg]
The Golden One!
Reply
#14
Hmm, this is a issue.. It could be solved by adding more workers to a specific room. But I do feel the problem goes deeper than that..
So if we worked out a way so that the storage room workers got a speed boost of some sort or that they are a lot faster on moving items between storage rooms (without making imps carry more than one item).

One idea that comes to mind is some sort of a hydraulic that could be built next to a storage room for quicker transportation. In this way the imps don't have to run between the storage rooms that much, they could just deliver the item to the hydraulic and it could transport the items for them. But what would this hydraulic look like and how would it work?
Reply
#15
May I suggest a catapult?

I know it's not what you had in mind, but imagine the imps loading the catapult with 20/30 items, firing it and having them fly across your dungeon to where you clicked? Of course, it would have a certain range, and the further they go, the wider they are spread apart when landing, but it would be a fun, interactive and memorable way of moving a bunch of items around. We would have to figure out how to order to imps to load it and with what resources first, of course.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)