March 28, 2017, 01:06:46 AM

Author Topic: Gnomoria v0.9.14 RC3  (Read 23622 times)

Razekh

  • Sr. Member
  • ****
  • Posts: 366
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #30 on: July 10, 2014, 09:52:14 AM »
Also, have you considered conditionals on push and pull. For instance, only pull to this pile if it is less than half full, to avoid an unnecessary amount of small hauling jobs as soon as a single spot opens up. Making sure that the gnomes wait until they can do a full wheelbarrow run, or carry a whole stack of stone or dirt.

If we do actually get something like this (which would be great!) I wouldn't want it restricted to the stockpile transfer mechanics. It would be a shame if we couldn't do something similar regarding unstocked items.

Of course, that would also be very useful, but you would have to be careful in this regard, as unstocked goods can now lead to golem spawns. Not that I think half a wheelbarrow of ores is gonna spawn a golem, and you also have a few ingame days to get the items stocked, which may be enough for it to go to an overflow stockpile, or for enough space to open in the first stockpile. But still.

And if it seemed I jumped a little too fast to asking for more on the push/pull system and seemed ungrateful to RoboBob. Thank you for this awesome update with push/pull, it has long been awaited and it is very much appreciated.

RoboB0b

  • Administrator
  • Hero Member
  • *****
  • Posts: 1036
    • View Profile
    • Gnomoria
Re: Gnomoria v0.9.14 RC1
« Reply #31 on: July 10, 2014, 11:11:47 AM »
I've seen talk about thresholds for a while but I guess I'm not sure how everyone wants it to work exactly.  How would you use the threshold in your setup?  If say one stockpile is set to 75%, you would only want gnomes to stock there if it was less than 75% full?  The reason you want to only partially fill is a temporary one?  Otherwise you would just make a smaller stockpile.

I could finally add in a way to use Remove Designation to partially erase instead of all or nothing but I'm guessing that wouldn't help.  If it's only a temporary setup, then you could use Remove Designation to shrink and just the normal Stockpile designation to expand.  If the section you remove has stocked goods on it, then gnomes might spend time restocking, where as a threshold wouldn't have that problem.

Does the % care about empty tiles or stocking potential?  I'm assuming it's stocking potential but just want to make sure.

Can this be a general setting for the entire stockpile or does it need to be individually set for push/pull?  It seems like it makes more sense to have it be a general setting for that stockpile and not dependent on push/pull.

Toge

  • Newbie
  • *
  • Posts: 20
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #32 on: July 10, 2014, 12:01:08 PM »
At least for my setup the point is to prevent the gnomes from trying to fill up a stockpile immediately as one item is removed from the pile, but to wait until the stockpile item count is under the threshold, and then fill it up to 100% again. I.e. to delay the start of stockpiling to encourage efficient wheelbarrow/etc use and allow gnomes to focus on fewer tasks at a time, but NOT to limit the size of the stockpile at all. So it's about the amount of items, not free tiles / containers. And this would be a permanent tweak to maximize stockpiling efficiency, not a temporary thing to clear space or whatever.

Scenario:
100 logs in a stockpile (100 logs capacity), threshold set at 50. A gnome starts cutting the logs into planks, one by one... Instead of gnomes starting to run around piling logs one at a time to the stockpile, nothing happens until the stockpile hits 50 logs. At this point idle gnomes rush in to fill the stockpile using wheelbarrows, filling the pile up to 100 logs.

I don't know how Gnomoria handles this, but I can see a problem if a gnome manages to fill the stockpile to e.g. 99 logs, and another gnome takes out a couple logs, leaving the stockpile to 97 -> Should the stockpilers now only fill it up to 99 and wait for the pile to hit threshold again, or go straight for 100? I'd say 99, otherwise we again have gnomes fetching one or two logs at a time... Not sure though, just thinking aloud.

And I would be very happy with a general setting. And as mentioned before, this should apply for all stockpiling regardless of source, not just push/pull-piles.

AstralDream

  • Newbie
  • *
  • Posts: 9
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #33 on: July 10, 2014, 12:08:27 PM »
v0.9.14 RC1

I decided to change up the naming convention slightly.  I think the "release candidate" label helps separate these builds from the ones in the main branch while conveying that they are leading up to the 0.9.14 release there as well.

General
  • Stocked goods can be transferred from one stockpile to another
    • Added Transfer tab to stockpile UI
    • Each stockpile can "push" and "pull" goods to another stockpile.  This still allows for many stockpiles to push to the same one
    • Stockpiles that push to another one are listed in the other stockpiles UI as well as their own.
    • Stockpiles are still worked in priority order.  When stocking a given stockpile, gnomes will first attempt to pull goods from other stockpiles before stocking unstocked goods

In one scenario, you could have a large stockpile of food and drink with several smaller stockpiles spread around near guard stations, distant miners, great hall, etc.  Each of the smaller stockpiles can be set to pull from the large one.  If the small stockpile has a higher priority than the large one, unstocked goods will go there first and when full go to the large one second.  When the small stockpile is no longer full, it will pull goods from the large one if no unstocked goods exist.  If the large stockpile has a higher priority, unstocked goods will always go there first and later fill the smaller piles as necessary.

In another scenario, you can have many smaller high priority stockpiles near workshops to quickly clear space.  They can be set to push to a larger, lower priority stockpile for longer term storing.

I've been working out bugs the last couple days and would like to iron out anything I missed then copy the indev branch over to the main one.

v0.9.13.3
General
  • Added game.ini to install directory
    • Has "savefolder" parameter to specify the directory for save games as well as settings.ini
    • If game.ini is missing or the savefolder parameter is empty/invalid it will default to the original directory (Documents/My Games/Gnomoria)
    • Some paths will require Gnomoria to be run as administrator to have write access
v0.9.13.2
General
  • Added silica - Obtained through prospecting in addition to slivers
  • Added ceramic tile - Crafted at a Kiln with clay, silica and coal
  • Changed Ceramic Wall recipe to use ceramic tile.  The wall value is now 20 instead of 0.
Can we also get some bigger containers?
In the late game 32 slots per crate is not enough when you can make 10k items in one season.

RoboB0b

  • Administrator
  • Hero Member
  • *****
  • Posts: 1036
    • View Profile
    • Gnomoria
Re: Gnomoria v0.9.14 RC1
« Reply #34 on: July 10, 2014, 12:52:22 PM »
At least for my setup the point is to prevent the gnomes from trying to fill up a stockpile immediately as one item is removed from the pile, but to wait until the stockpile item count is under the threshold, and then fill it up to 100% again. I.e. to delay the start of stockpiling to encourage efficient wheelbarrow/etc use and allow gnomes to focus on fewer tasks at a time, but NOT to limit the size of the stockpile at all. So it's about the amount of items, not free tiles / containers. And this would be a permanent tweak to maximize stockpiling efficiency, not a temporary thing to clear space or whatever.

Scenario:
100 logs in a stockpile (100 logs capacity), threshold set at 50. A gnome starts cutting the logs into planks, one by one... Instead of gnomes starting to run around piling logs one at a time to the stockpile, nothing happens until the stockpile hits 50 logs. At this point idle gnomes rush in to fill the stockpile using wheelbarrows, filling the pile up to 100 logs.

Oh ok, I get it now.  Is that how everyone expects threshold to work or are some people talking about different things and giving it the same name?

I don't know how Gnomoria handles this, but I can see a problem if a gnome manages to fill the stockpile to e.g. 99 logs, and another gnome takes out a couple logs, leaving the stockpile to 97 -> Should the stockpilers now only fill it up to 99 and wait for the pile to hit threshold again, or go straight for 100? I'd say 99, otherwise we again have gnomes fetching one or two logs at a time... Not sure though, just thinking aloud.

And I would be very happy with a general setting. And as mentioned before, this should apply for all stockpiling regardless of source, not just push/pull-piles.

I was going to ask you that too. :)  The way I would think it should work is by default its state is to fill up to 100%.  At 100% that triggers it's state to effectively be suspended until it drops below threshold% at which point it triggers to refill back to 100%.  I could make it actually suspend, that way you could turn it back off to refill to 100% before it hits threshold% if you want.

AstralDream

  • Newbie
  • *
  • Posts: 9
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #35 on: July 10, 2014, 12:58:17 PM »
Would be nice to limits number of some item that is stockpiled, now I need to make 3 smaller stockpiles, one for meat , one for eggs and one for cheese, only cause I have enough of meat, cheese and eggs to fill like 10 crates and small storage around the kitchen is only 3x3 squares, and making smaller stockpiles for every item is way to much trouble.

Kelderek

  • Hero Member
  • *****
  • Posts: 771
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #36 on: July 10, 2014, 01:14:29 PM »
I've seen talk about thresholds for a while but I guess I'm not sure how everyone wants it to work exactly.  How would you use the threshold in your setup?  If say one stockpile is set to 75%, you would only want gnomes to stock there if it was less than 75% full?  The reason you want to only partially fill is a temporary one?  Otherwise you would just make a smaller stockpile.

I could finally add in a way to use Remove Designation to partially erase instead of all or nothing but I'm guessing that wouldn't help.  If it's only a temporary setup, then you could use Remove Designation to shrink and just the normal Stockpile designation to expand.  If the section you remove has stocked goods on it, then gnomes might spend time restocking, where as a threshold wouldn't have that problem.

Does the % care about empty tiles or stocking potential?  I'm assuming it's stocking potential but just want to make sure.

Can this be a general setting for the entire stockpile or does it need to be individually set for push/pull?  It seems like it makes more sense to have it be a general setting for that stockpile and not dependent on push/pull.

The main reason I imagine needing some form of threshold is to improve efficiency of hauling.

The best example I can think of is a very high priority stockpile such as wheat grain right next to my kitchen for making sandwiches.  Let's say my stockpile is 3x3 full of crates so it holds 288 total grain if full.  I want the stockpile to have a high enough priority that it never goes empty and yet what I would rather not see is my haulers hauling items one or two at a time to replenish the stockpile as my cook uses up the grain.

A good threshold for this example would be one sack full of grain (32 I assume) less than maximum.  So I would have a flat value of 256 for a threshold or a percentage of 88%.  If the stocked supply is higher than the threshold then nothing is hauled to the stockpile.  As soon as the current stocked supply drops below this threshold then hauling is allowed again.

Another idea would be to have separate stockpile priority values for above and below a threshold.  Maybe the above threshold priority is 5 but the below threshold priority is 2.  This would still allow some hauling when the stock is higher than the threshold but at a lower priority.  When the stock numbers fall below your threshold then a high priority kicks in to ensure a quick refill.  Since you would be at a lower priority above the threshold then presumably efficiency would be less important -- at that point you're just keeping your gnomes busy.

As for the threshold itself, I would assume that it would be based on the actual current capacity of the stockpile, accounting for all the containers currently in place.  An open space would count as 1 only.  You would have to decide whether it is better to use a flat numeric value for quantity or a percentage.  Percentage would probably be the best option.

Kelderek

  • Hero Member
  • *****
  • Posts: 771
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #37 on: July 10, 2014, 01:19:10 PM »
Would be nice to limits number of some item that is stockpiled, now I need to make 3 smaller stockpiles, one for meat , one for eggs and one for cheese, only cause I have enough of meat, cheese and eggs to fill like 10 crates and small storage around the kitchen is only 3x3 squares, and making smaller stockpiles for every item is way to much trouble.

This I do not agree with.

If I understand correctly, you want to be able to set individual maximums for different goods inside a single large stockpile?  I just think that would just become way too complex.  I have some stockpiles that have 20 different items inside them -- that would be a crazy looking UI to allow me to split that into different maximum values.  In this case I think we're all better off just having separate stockpiles in cases where you want to limit how much gets stocked.

Toge

  • Newbie
  • *
  • Posts: 20
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #38 on: July 10, 2014, 01:58:53 PM »
I was going to ask you that too. :)  The way I would think it should work is by default its state is to fill up to 100%.  At 100% that triggers it's state to effectively be suspended until it drops below threshold% at which point it triggers to refill back to 100%.  I could make it actually suspend, that way you could turn it back off to refill to 100% before it hits threshold% if you want.

This sounds like a quick and easy fix and definitely better than no fix at all + I like the manual control :) However, I'm worried that this wouldn't solve the real issue, which is the situation when one gnome is constantly removing items from a stockpile, e.g. the guy chopping logs into planks. If the source of raw logs was far away, the stockpile would never hit 100, as the guy doing the planking would always remove that one more log, before resupply gnomes have time to fill the stockpile to 100, causing another gnome to run for that one missing log. Meanwhile the plank guy once again removes one log before the stockpile-gnome has gotten back, leading another gnome to go for one log etc etc.

This is exactly the problem with current implementation, and the "fill up to 100%"-solution would only delay the start of this problem, if I'm at all correct with my assumptions. But as I said, any fix would be welcome and I'd be more than happy to test how it eases the workload of my haulers.

Merry76

  • Moderator
  • Hero Member
  • *****
  • Posts: 3444
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #39 on: July 10, 2014, 02:05:09 PM »
Oh ok, I get it now.  Is that how everyone expects threshold to work or are some people talking about different things and giving it the same name?

You could add a flag "wait until you can fill a container" for push and pull - creating a working batch of 32 units. The way Railroad Tycoon did it (I loved that game to bits...).

Of course, something like that wouldnt work for workshops. At all. Workshops get clogged up to unbearable long crafting times after about 10 items inside them. So maybe two options (batches of 10, batches of  32), with the default behaviour set to the way it is now - high priority workshops and storage at key spots probably shouldnt work with batches.
Have a problem or a fortress so awesome it needs to be shared?

Well, go on, dont be shy! Use the GnomeworldPool Dropbox account!
How to share Savegames

Toge

  • Newbie
  • *
  • Posts: 20
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #40 on: July 10, 2014, 02:06:06 PM »
Another idea would be to have separate stockpile priority values for above and below a threshold.  Maybe the above threshold priority is 5 but the below threshold priority is 2.  This would still allow some hauling when the stock is higher than the threshold but at a lower priority.  When the stock numbers fall below your threshold then a high priority kicks in to ensure a quick refill.  Since you would be at a lower priority above the threshold then presumably efficiency would be less important -- at that point you're just keeping your gnomes busy.

+1 for this, although two priorities and a threshold setting might be a bit too complex usability-wise. Maybe always allow stockpiling with lowest possible priority when above threshold? I.e. allow gnomes to fill stockpiles if there's absolutely nothing better to do.

Razekh

  • Sr. Member
  • ****
  • Posts: 366
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #41 on: July 10, 2014, 02:43:54 PM »
At least for my setup the point is to prevent the gnomes from trying to fill up a stockpile immediately as one item is removed from the pile, but to wait until the stockpile item count is under the threshold, and then fill it up to 100% again. I.e. to delay the start of stockpiling to encourage efficient wheelbarrow/etc use and allow gnomes to focus on fewer tasks at a time, but NOT to limit the size of the stockpile at all. So it's about the amount of items, not free tiles / containers. And this would be a permanent tweak to maximize stockpiling efficiency, not a temporary thing to clear space or whatever.

Scenario:
100 logs in a stockpile (100 logs capacity), threshold set at 50. A gnome starts cutting the logs into planks, one by one... Instead of gnomes starting to run around piling logs one at a time to the stockpile, nothing happens until the stockpile hits 50 logs. At this point idle gnomes rush in to fill the stockpile using wheelbarrows, filling the pile up to 100 logs.

Oh ok, I get it now.  Is that how everyone expects threshold to work or are some people talking about different things and giving it the same name?


This is exactly the same concept that I was referring to as well.

I don't know how Gnomoria handles this, but I can see a problem if a gnome manages to fill the stockpile to e.g. 99 logs, and another gnome takes out a couple logs, leaving the stockpile to 97 -> Should the stockpilers now only fill it up to 99 and wait for the pile to hit threshold again, or go straight for 100? I'd say 99, otherwise we again have gnomes fetching one or two logs at a time... Not sure though, just thinking aloud.

And I would be very happy with a general setting. And as mentioned before, this should apply for all stockpiling regardless of source, not just push/pull-piles.

I was going to ask you that too. :)  The way I would think it should work is by default its state is to fill up to 100%.  At 100% that triggers it's state to effectively be suspended until it drops below threshold% at which point it triggers to refill back to 100%.  I could make it actually suspend, that way you could turn it back off to refill to 100% before it hits threshold% if you want.

I was considering this problem as well, and thought that this would be a good solution. Either that or making the priorities conditional. Doing it with priorities might be preferable as it would solve a couple of other issues, like gnomes being idle even though they could do those small hauling jobs, but they won't because it is temporarily suspended. Or the issue with gnomes never reaching 100% because one item is brought out while the one item that would have filled it is being brought to the stockpile. Of course, there is also the matter of how hard the two methods are to implement, or manage through a practical UI. Using priorities you could also give it a high priority to fill up to, say, 25% so that there is always some raw materials present for the workshops to use, but between 25-75% the priority is lower, and they will do it if no priority hauling is needed. If it the stock is above 75% the priority is dumped really low to avoid small hauling jobs, but still allow them if no better hauling is available. What the 25% limit implies could be accomplished with multiple stockpiles, but that would mean doubling up on the upper limit (to reduce small hauling jobs in two stockpiles) and it would be nice to be able to accomplish all this in one stockpile.

RoboB0b

  • Administrator
  • Hero Member
  • *****
  • Posts: 1036
    • View Profile
    • Gnomoria
Re: Gnomoria v0.9.14 RC1
« Reply #42 on: July 10, 2014, 03:04:33 PM »
These are all good points.  If I understand right, it seems like the general consensus is that we want to attempt to always haul the most goods in one trip.  Worst case scenario is when a gnome is repeatedly running back and forth hauling 1 item.  Having a threshold adds the ability to set something like "Don't stock until there are at least 32 open slots (inside containers or open tiles)".  However, you want to avoid a second stocking of some number < 32 (or whatever the max move is).  In this scenario, it would stop it from happening repeatedly since it wouldn't do a third stock until it went below the threshold again.  However, it's still better to avoid (or delay) the second stock if able.

Setting separate priorities for 2 thresholds allows that second stocking to be delayed until all the high priority stuff is finished.  It does make it more complex usability wise but may or may not be worth it.  I'm not sure.  I guess it depends on if preventing 1 item repeatedly getting stocked is good enough or if it's really important to avoid or delay the top off.

Tacyn

  • Full Member
  • ***
  • Posts: 223
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #43 on: July 10, 2014, 03:18:41 PM »
I'd  like to add a suggestion for the implementation.

Allow us to add abitrary condition->action statements to a stockpile.

Syntax

statement:= condition '->' action
condition:= comparator value
comparator := '<' | '<=' | '>' | '>='
value:= '+' numeric  | '-' numeric  | numeric '%'
action:= 'suspend' | 'activate' | 'set priority' numeric | ['end'] 'push to' stockpile | ['end'] 'pull from' stockpile | 'allow' item | 'disallow' item 

Example semantics

'< -10 -> suspend' means that the stockpile suspends if there are less than 10 free spaces 
'< +10 -> activate' means that the stockpile activates if there are less than 10 items in the stockpile
'> 90% -> push to X' means that the stockpile pushes to stockpile X if it is more than 90% full
'< 50% -> end push to X' means that the stockpile stopps pushing to stockpile X if it is less than 50% full   

This should allow people to adapt their stockpiles to abitrary scenarios, if they so choose to work with the complexity.
They would also have to make sure there are no conflicting statements. Although this can be easiliy resolved by executing statements in order such that later statement overwrite earlier ones.

In the UI this could be implemented via dropdown menues that list the options for available conditions and actions.
Also, '>= 100% -> suspend' and '< 90% -> activate' could be added by default to avoid the hauling inefficiency and give two examples of the system to players unfamiliar with this.

« Last Edit: July 10, 2014, 03:21:35 PM by Tacyn »

dramamine

  • Sr. Member
  • ****
  • Posts: 355
    • View Profile
Re: Gnomoria v0.9.14 RC1
« Reply #44 on: July 11, 2014, 09:35:45 AM »
Another thing along the same lines that might be useful to go with the push/pull functionality would be to disable the use of carts and the like for a particular stockpile. Assuming that it's not already in the game (I keep meaning to start a new world, but I haven't gotten around to it yet), the reason why this would be pretty helpful is that you might not want a gnome to use a cart if (s)he's just moving a bunch of stuff a few tiles to clear a workshop, or from a large general storage stockpile to individual sorted stockpiles.

For example, you could have a storage area with a large stockpile that's set to take logs/gems/ore/coal/etc but has a low priority. Smaller, higher priority and more specialized stockpiles could be placed around the big one with carts turned off. These would be set to pull from the big one. The end result is that whenever a gnome goes out to fill the big stockpile, they'll pick up the maximum number of items they can. Gnomes would then sort the big stockpile into little ones, and then with the help of thresholding and more push/pull settings, stuff could be moved from the sorted stockpiles to the workshops/whatever that need them.

An alternative implementation (especially if something long term like what Tacyn suggests is ever realized) would be to have separate priorities based on whether or not carts are available. A stockpile that's designed to gather or move ore from deep in your mine up to the surface should have a high cart priority and a low individual priority, while sorted stockpiles pulling from a general one would be the opposite.