The International Simutrans Forum

 

Author Topic: Factory chain spawning - not based on end consumer.  (Read 1452 times)

0 Members and 1 Guest are viewing this topic.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Factory chain spawning - not based on end consumer.
« on: April 03, 2019, 09:49:44 AM »
Currently, the game starts out by placing an end consumer, and from there, spawns the producers that end consumer needs, and the producers those producers need, etc.pp.

The reason is quite clear: A producer requires raw material, often more than one type. Eg. a printer requiring paper and ink. If the spawning was to begin with the forestry, no ink producer would be spawned. It's just the simplest way to do it.

However, it has it's faults. Since each chain that spawns is based on an end consumer, in turn each chain only has that one end consumer. While you can play around with the productivity rate such that the producer produces eg. three times as much as the consumer consumes, this will not exactly cause the next two consumer that spawn to only connect to existing producers. And at any rate, it would be rather underwhelming, if a player reaches the next milestone to cause a chain to pop into existence, and it's only one end consumer, requiring just one connection.
Another issue is waste disposal. In game terms, the construction of a waste burning facility will cause waste collection places to pop into existence, with the purpose of providing waste such that it can be burned, and if it's not transported to the burner, it stops accumulating.


So, these are my proposals (all to be written in factories):
Code: [Select]
OutputCheck[x]=0/1When this is placed in a producer, it will make sure there is a consumer for the good x, just the same as if it was a consumed good. (including the attempt to make production and consumption somewhat balanced).
Code: [Select]
OutputSupplier[x]=#Similar to the above, but works like InputSupplier - so you can set how many need to spawn at a minimum. It's not technically required, but I would assume it to exist.
Code: [Select]
OutputForced[x]=0/1This Factory will stop producing anything as soon as the internal storage for this good is full. Obviously, this can be used to force waste to be transported away even though that might not be very profitable, in order for something more profitable to transport being produced. Not so obvious, the player can be forced to establish the link for the main product in order to be allowed to transport a secondary product. Say, you can't use a sugar refinery to get Bagasse for Biofuel or to feed cattle, unless sugar is produced and shipped. Even both can be required, so you can't have one without using the other.

Code: [Select]
IndependentSpawn=0/1If this is true, this factory can be the starting point of a chain (like end consumers). If it's false, it can't be the starting point of a chain (even if it's an end consumer). If nothing is set, it will be false if there is any output and true if there is not, mimicking current behaviour. The parameters above need to be set for this to make sense. Example:
Instead of a car dealership, the car factory becomes the spawner of the chain. Each car factory will require stuff from several producers, and ship the cars to several consumers. Therefore, the car factory gets "IndependentSpawn=1" and "OutputCheck[0]=1", allowing it to spawn in on it's own and bringing in as many car dealerships as it can produce for. The car dealership would use "IndependentSpawn=0" such that it will not spawn on it's own.


As far as gameplay is concerned, nearly nothing changes. This is due to the direction in which goods move being mostly irrelevant. Using the example from before, what if the car factory would "consume cars" and the car dealership would "produce cars"? It wouldn't make sense to the player, but they would build pretty much the same infrastructure and require the same amount of vehicles transporting the same amount of goods over the same distance. (Well, that is, if the car factory would consume every good equally and not one without the other, like a producer would - otherwise, one could just transport cars and ignore their creation process).
Or if a factory would produce waste, it might as well consume "antiwaste" produced at the waste incinerator - same deal, really. If it was all abstracted to circles, squares and triangles, you probably wouldn't notice the difference - but since it's a game based in reality, not even pak192.comic would have "antiwaste".

Offline prissi

  • Developer
  • Administrator
  • *
  • Posts: 9584
  • Languages: De,EN,JP
Re: Factory chain spawning - not based on end consumer.
« Reply #1 on: April 03, 2019, 03:13:11 PM »
This is very impractical to program. Starting from a consumer is almost the only way.

Also finding out unused production is the real challenge, since nowadays one can boost production termporarily (electricity etc.) and permanently (fields, grow mode). And finally, if possible, a consumer will try to link to a producer, if he thinks there is capacity to spare. At least in pak64 this works often good enough. (I.e. often only a power plant spawns, but no new mines/oil riggs.)

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 5555
  • Languages: EN, NO
Re: Factory chain spawning - not based on end consumer.
« Reply #2 on: April 03, 2019, 04:02:11 PM »
The only problem I have is that subsequent consumers using existing suppliers with free production capacity don't care how far away those suppliers are. Of course, if they respected that, they would simply have to spawn new underused suppliers until the map is sufficiently saturated with suppliers, since the new consumer (as far as I understand it) has already been selected and positioned (though maybe not actually built).

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #3 on: April 03, 2019, 04:42:34 PM »
This is very impractical to program. Starting from a consumer is almost the only way.

Why is that, though? What's the big difference between "input" and "output", except for how multiples in the same factory are handled?

I would think it's done recursively, with each factory being buildt calling all the other factories it wants to build. Right now, those are it's suppliers. But what makes it impossible to cause a factory to cause other factories to be buildt - it's consumers or even a completely unrelated factory? If each coal mine to spawn would also spawn a book store for no reason whatsover, what would be the harm (except for when the forestry, for no reason, also spawns a coal power plant, causing an endless loop)?



Also finding out unused production is the real challenge, since nowadays one can boost production termporarily (electricity etc.) and permanently (fields, grow mode).
I'm aware, but why does it matter whether you need to find out the right amount of consumers for a producer versus the right amount of producers for a consumer? In both cases, you'd compare productivity*factor of factories with all those temporary and persistent production boosts.

 
And finally, if possible, a consumer will try to link to a producer, if he thinks there is capacity to spare. At least in pak64 this works often good enough. (I.e. often only a power plant spawns, but no new mines/oil riggs.)
Certainly, especially for a short chain like coal that's not too bad. However, imagine a car dealership was made such it only takes 10% of what the car factory can produce. The first car dealership to spawn would cause the complete chain to pop into existence, but only 10% of it would be usable, since only 10% are actually consumed at the end. Plus, wouldn't that option only be available if cross-connection-percentage is at a reasonable level? But cross-connections can not be set for specific types of factories, and while you might want a very high chance of cross connecting each new car dealership (about 90% of them), it would be the opposite for an incinerater supplied by 10 waste dumps.

Offline prissi

  • Developer
  • Administrator
  • *
  • Posts: 9584
  • Languages: De,EN,JP
Re: Factory chain spawning - not based on end consumer.
« Reply #4 on: April 04, 2019, 02:16:24 AM »
As soon as you spawn new factories, you distrub the balance on each level. Therefore you can either go backwards or forward in a chain. Since on Supplier will almost lead to incomplete chains, you better start backward, to have at least a complete chain.

Also if you remove the maximum distance limitation, Simutrans spawns only new factories when needed. But player complained about that, so the parameter max_factory_spacing_percentage was introduced (at default 25% of map size). Set it to 100% and almost no new factories will be built into all capacity are used.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #5 on: April 04, 2019, 12:06:08 PM »
As soon as you spawn new factories, you distrub the balance on each level. Therefore you can either go backwards or forward in a chain.

I don't think that's entirely true. You can start in the middle and go both directions, and will still provide balance. Different balance though. If you go backwards, you make sure there are enough suppliers for each consumer. If you go forwards, you make sure there are enough consumers for each supplier.
You can base it on a factory in the middle of the chains, with both suppliers and consumers, especially if it has the highest production rate.
You can start backwards from an end consumer, but have a sidearm going forwards - as long as the forwards motion reaches another end consumer, that would be fine.
Even if the same good sometimes goes forward and sometimes goes backwards, it does not instantly create a loop.

What isn't possible is to spawn any random factory and go from there. In order for this to work, the pakset needs to give information to the game on how things are supposed to spawn. It's like a rail network: If you have several trains and tracks can be used in both directions, there will be deadlocks. But it does not mean that all tracks can only be used in one direction (although that is a working solution), it just means that signals need to be provided...

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 5555
  • Languages: EN, NO
Re: Factory chain spawning - not based on end consumer.
« Reply #6 on: April 04, 2019, 04:43:55 PM »
If you can start in the middle, and if you can go both ways, then you can spawn any random factory.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #7 on: April 04, 2019, 06:23:30 PM »
If you can start in the middle, and if you can go both ways, then you can spawn any random factory.
If the only goal is to have a complete chain, I'd suspect that if every factory that spawns calls for all it's suppliers to be created and at least one of it's consumers to be created, while ignoring that which caused it to spawn - yes, you could spawn random factories. But it would be rather pointless and messy, certainly not an improvement over the current situation, as you can't plan for it.

Imagine this situation:
Factory A: Produces 50 Units of Good 1
Factory B: Consumes 500 Units of Good 1, Produces 500 Units of Good 2
Factory C: Consumes 50 Units of Good 2

If a Factory A spawns first, it would cause 1 Factory B, and 10 Factory C, all of which could work at 10% at most.
If a Factory C spawns first, it would cause 1 Factory B, and 10 Factory A, all of which could work at 10% at most.
If a Factory B spawns first, if would cause 10 Factory A and 10 Factory C, all of which could work at 100%
Clearly, in this case you would want Factory B to spawn, neither of the two others.

In current Simutrans, because you know only Factory C could spawn, you probably wouldn't even create such a chain to begin with. It simply works best if the factory that spawns the chain has the highest productivity among them, and so you are tempted to always have the end consumer consume a rather large amount, or it's supplier to produce less. In current Simutrans, in order to make sense with how factories spawn, I'd make the chain above more like this:
Factory A: Produces 50 Units of Good 1
Factory B: Consumes 500 Units of Good 1, Produces 250 Units of Good 2
Factory C: Consumes 200 Units of Good 2

Again: If Factory A would be the cause of the spawn, it would be a mess. Hence it should never be true that any factory can spawn at random and create the chain around it, only those factories a pak creator picks should be valid, because they can take care that the chains that spawn are sensible.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 5555
  • Languages: EN, NO
Re: Factory chain spawning - not based on end consumer.
« Reply #8 on: April 05, 2019, 06:12:19 AM »
If a Factory B spawns first, if would cause 10 Factory A and 10 Factory C, all of which could work at 100%
Somehow, this doesn't feel right to me. It is like supply is driving demand. Maybe it can to some degree, but this is too much.

they can take care that the chains that spawn are sensible
But they haven't for all the factories already out there. And my experience tells me they will have a hard time getting things right.

What perhaps could make more sense is that factory spawning doesn't spawn a consumer "factory", but satisfies some simulated demand. It is not the supermarkets that consume food, or hardware stores that consume tools, it is the people. So the game may have to spawn multiple consumers to satisfy the actual demand. That could perhaps also make consumer distribution more sensible. Currently, there may be towns with many hardware stores, but no markets, while other towns have many markets, but no hardware stores.

Offline wlindley us

  • Devotee
  • *
  • Posts: 979
    • Hacking for fun and profit since 1977
  • Languages: EN, DE
Re: Factory chain spawning - not based on end consumer.
« Reply #9 on: April 05, 2019, 12:28:27 PM »
Let's think about this less from a resource-factory-consumer-game-model view and more from a business owner perspective.

A store, or a factory, in the real world will be created when a person or corporation sees prospects to make product (and make money) by filling unmet needs.

In Simutrans, code could simulate this.  As time progresses, at some point the factory manager realizes she is not selling enough products, so she looks for consumers to write a new contract with (e.g., consumer industries / stores who are having supply problems or lack of supply).  If her existing consumers aren't buying her products, she might cancel an old contract or two and find new ones.  If she can't find any candidate consumer industries/stores, she puts a listing in a manufacturing magazine: "Retailers Wanted."  [in the code, a list of desired-goods contracts]

A businessman in a growing city sees that advert and looks around to see where he could build a new shop, and calls our factory owner to write a new contract. 

Likewise, existing shops that aren't getting product from their factories will look around for different suppliers.

A dynamic like this would make the game feel more like a real Market Driven Economy.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #10 on: April 06, 2019, 12:05:09 PM »
Somehow, this doesn't feel right to me. It is like supply is driving demand. Maybe it can to some degree, but this is too much.
It certainly can if waste is involved. Where "waste" can be a broad term - eg. stores usually need to pay for someone to come and transport money away (at least where people still pay cash), and this would not depend on how much of it a bank wants delivered, only on how much the store wants to be gone.

You think that's not something that would happen in Simutrans? Well, pak64 has the actual good "waste". Pak192.comic has a chain for criminals and for sick/dead people, calling either of them waste wouldn't be decent, but in practice, prisons and graveyards don't exactly have a demand (hopefully).

Note that factories don't  grow out of necessity in Simutrans either. It's not like a new consumer spawns, and in direct response, the producing factory becomes larger, produces more, and demands more pax/mail/electricity. It's not demand driving supply. Why would a small car-dealership that sells 30 (new) cars in a month demand a factory that produces 300? I think it makes more sense if a chain comes into existence where that same car factory provides for 10 dealerships. (which building caused the spawning is only ever communicated to the player via the message "car dealership caused X new factories", pretty sure most players don't even know the end consumer comes first)

What perhaps could make more sense is that factory spawning doesn't spawn a consumer "factory", but satisfies some simulated demand. It is not the supermarkets that consume food, or hardware stores that consume tools, it is the people. So the game may have to spawn multiple consumers to satisfy the actual demand. That could perhaps also make consumer distribution more sensible. Currently, there may be towns with many hardware stores, but no markets, while other towns have many markets, but no hardware stores.

I wholeheartedly agree, but I assumed that approach would be even harder to put into practice and seems less backwards-compatible. In the most simple iteration, you could just have factories spawn like city curiosity, but with multiple build times. As a side effect, this would also make it so you can have shorter chains first and longer chains later, which would in turn allow the longer chains to be even longer without fear it would be the only one to spawn.

However such a system would not solve the waste issue by itself, because the "demand" of the people would be for waste dumps, police stations and doctors, not for prisons, graveyards and incinerators.

But they haven't for all the factories already out there. And my experience tells me they will have a hard time getting things right.
It's hard to get things right if you try to do things that you just can't do with the tools available. It would be easier to do exactly the thing the tools were intended to do, but where is the fun in that?
Sometimes, it feels like you are not granted a shovel, because you broke a nail digging with bare hands, so with a shovel, naturally you'd break your wrist.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 5555
  • Languages: EN, NO
Re: Factory chain spawning - not based on end consumer.
« Reply #11 on: April 06, 2019, 05:50:54 PM »
Why would a small car-dealership that sells 30 (new) cars in a month demand a factory that produces 300?
It doesn't demand a factory that produces 300. It demands a factory, and it so happens that that factory could produce up to 300 cars per month if necessary. It just simply isn't feasible, for whatever reason, to build a production line with a lower theoretical maximum. By running a single shift rather than three, they can scale back to 100 cars per month, and by having one person do three steps of the assembly process, they scale down to about 30. It is not uncommon for factories not to run at full capacity, although the owners and workers may not be too thrilled about it.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #12 on: April 08, 2019, 05:20:38 AM »
By running a single shift rather than three, they can scale back to 100 cars per month, and by having one person do three steps of the assembly process, they scale down to about 30. It is not uncommon for factories not to run at full capacity, although the owners and workers may not be too thrilled about it.
Except that having a factory not running at full capacity is already represented by not using the boost electricity, workers and mail would give it (the factory can probably be boosted to far more than 300 units). At the same time, we can clearly see the productivity of the factory, and it does actually produce 300 units without boost and never less. Unless you use jit2, you can even transport 300 units to the dealership for a short while - and jit2 does not support your argument either, since it does not reduce the productivity, just the ordered amount.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 5555
  • Languages: EN, NO
Re: Factory chain spawning - not based on end consumer.
« Reply #13 on: April 08, 2019, 06:01:36 AM »
At the same time, we can clearly see the productivity of the factory, and it does actually produce 300 units without boost and never less.
That is just as effect of the simplistic implementation. And I'm not actually sure what the boost is supposed to represent. Electricity can perhaps represent a switch from hand tools to power tools.

Unless you use jit2, you can even transport 300 units to the dealership for a short while - and jit2 does not support your argument either, since it does not reduce the productivity, just the ordered amount.
Yet, over time, the factories never produce more than is ordered. (The output capacity becomes insignificant as time approaches infinity.)

If the problem simply is that factories should not have a higher production capacity than the consumption rate of its customers, then a simpler fix would simply take JIT2 a step further, and ensure that factories follows a production rate that matches the consumption rate of connected consumers. That suppliers don't always have consumers that use up their full potential is in my opinion realistic and a good thing. If industries were to grow by complete chains with matching supply and demand, then the chains would either be distinct blocks separate from each other, since there is no free production capacity (or consumption capacity) on existing industries, or the game would have to rearrange the existing industries as well, both on consumer and supplier sides, which is complicated.

There is the related issue of industrial growth by upgrading existing factories with more efficient ones, which gives them higher maximum production rate, but that has its own set of problems which I think has been discussed before.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #14 on: April 08, 2019, 07:27:33 AM »
If the problem simply is that factories should not have a higher production capacity than the consumption rate of its customers[...]
It is not. There is also the issue with waste, the issue that new chains should not just be the end consumer, the issue of general lack of flexibility in how chains should work.

That is just as effect of the simplistic implementation.
Im just sad my pitch is "not feeling right" to you because "supply is driving demand", while you defend things that feel wrong to me and are already in the game as "effect of simplistic implementation". I don't understand what's the difference to you.

If we would have an in-depht realistic economy simulation, with each factory trying to make money (a bit like wlindley suggested) no car dealership would ever spawn without a car factory, because you can't sell what you don't have, and no car factory would spawn either, unless there is enough demand for cars to make it worthwhile (and other industry for the parts needed already in place, perhaps - but let's ignore that), but if there is enough demand for cars to make the car factory worthwhile, it means that not one, but a bunch of car dealerships are required already. Demand is transitive.
Dumb it down, and you get to my suggestion. At first glance, "supply is driving demand", but only as an "effect of simplistic implementation" of the fact that each business requires a certain amount of demand to be able to exist, and if there is too little, it simply won't. Just as no car dealership would spawn just for one guy to buy a car, but only if there is enough demand (=many people to potentially buy cars) no factory would spawn for just one dealership, but only if there is enough demand (= many dealerships to potentially open = many places with many people to potentially buy cars)

I'm not actually sure what the boost is supposed to represent. Electricity can perhaps represent a switch from hand tools to power tools.
When I decide which boosts to add, I think that the factory already has some of it (workers/customers, packages, electricity) but my input makes it easier/cheaper/faster for them. A store can sell more if it is easier to reach. Electricity might not be used to turn the lights on, but for heavy machines that require a dedicated powerline. Mail is mostly for random goods that the factory would need, but not in truckloads. Eg. grease for gears. It can also be as simple as my service being cheaper than the unseen alternatives, and as such, using my electricity/mail service/pax transportation, they can afford to produce at lower prices, which makes them sell more stuff, which means more needs to be produced.
I think it's fine that there is no clear definition of what exactly the boost is, since it's much more fun to think about it in a case by case basis. Paksets should probably never use it, always use the same, or always use a different boost for each factory. Perhaps turning it from a boost to a requirement would work in some cases as well, but since the base production and consumption would be zero, it's impossible with current spawning anyway.

Yet, over time, the factories never produce more than is ordered. (The output capacity becomes insignificant as time approaches infinity.)
I don't know what you are talking about. Factories stop production when they run out of places to store their wares, and that happens quite a while before infinity. Which doesn't happen anyway, since each game is finite (2999 ;) ). Factories stopping because they are running full is usually a sign that they are in big trouble...

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 5555
  • Languages: EN, NO
Re: Factory chain spawning - not based on end consumer.
« Reply #15 on: April 08, 2019, 07:33:06 PM »
I don't know what you are talking about. Factories stop production when they run out of places to store their wares, and that happens quite a while before infinity. Which doesn't happen anyway, since each game is finite (2999 ;) ). Factories stopping because they are running full is usually a sign that they are in big trouble...
And factories have a finite output capacity so that production doesn't keep running way beyond demand, yet leaving a small buffer so that it can quickly deliver when there is demand again. The logic for factories is (in JIT1) simply "if demand, then produce, if not, then don't". No factory works like that in the real world. The scale production down by laying off workers and stopping some of the production lines (if there are multiple). Simutrans just didn't try to be that smart. It doesn't need to smoothly scale back production, because for the game, it doesn't matter if goods are produced in one day, with four days off, or at 20% over five days. (JIT2 is more about when consumers "order" goods.) If factories running full was supposed to mean serious trouble in Simuworld, it would raise a warning, like stuck vehicles and overcrowded stops do.

the issue that new chains should not just be the end consumer
But they do not. The end consumers cause suppliers to spawn as well, unless there is enough free production capacity in the world already. When a new store opens in town, I do not assume that it is because a new factory has been built, or that it caused a factory to be built.

When I decide which boosts to add, I think that the factory already has some of it (workers/customers, packages, electricity) but my input makes it easier/cheaper/faster for them. A store can sell more if it is easier to reach. Electricity might not be used to turn the lights on, but for heavy machines that require a dedicated powerline. Mail is mostly for random goods that the factory would need, but not in truckloads. Eg. grease for gears. It can also be as simple as my service being cheaper than the unseen alternatives, and as such, using my electricity/mail service/pax transportation, they can afford to produce at lower prices, which makes them sell more stuff, which means more needs to be produced.
So it makes things more efficient, but it does not open/add new production lines or extra shifts.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #16 on: April 09, 2019, 07:55:11 AM »
If factories running full was supposed to mean serious trouble in Simuworld, it would raise a warning, like stuck vehicles and overcrowded stops do.
How so? The player is still a transport company. Internal factory logistics could not be influenced by the player in any way, so even if there were serious troubles in a complex economic background model, the player would not need to care, as they would not be able to interfere.
Plus, if we follow your logic here, why is it that stops right at the factory, filled only with the material that company produced waiting to be shipped away, could raise a warning as if it was the players responsibility to ship stuff away as fast as it is produced? Even though a zero-capacity-station works fine?

But they do not. [...] unless [...]
So they do.

When a new store opens in town, I do not assume that it is because a new factory has been built, or that it caused a factory to be built.
Shouldn't that be an arguement for not having giant factories spawn for the tiny demand of a single store in the first place?
But we are in an abstract game world with simplistic implementations where the store does not open because someone thinks they can make money figuring people would buy stuff. The store opens as a reward for the player who caused through their actions a growth in the worldwide population, with the purpose of adding a new challange (or at least something to do) to a game that otherwise might go stale. Opening but one store fails at both these tasks, as it's neither an exciting reward, nor does it cause much to do, especially if these stores are small enough to be delivered to by truck (as they argueably should be most of the time*) such that the required infrastructure is just a mere bus stop**.

*In terms of reality, even if stores are not stores but representations of many stores or a whole business district, they hardly have their own railway for goods and rather make use of trucks. In terms of gameplay, road vehicles need to have their place somewhere, and this is one of the places where they make the most sense

**A bus stop that can hold goods, but even a zero-capacity single-tile drive-through station would probably be enough for the job. Or should be enough.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 5555
  • Languages: EN, NO
Re: Factory chain spawning - not based on end consumer.
« Reply #17 on: April 12, 2019, 04:04:48 PM »
Shouldn't that be an arguement for not having giant factories spawn for the tiny demand of a single store in the first place?
Perhaps. Sometimes the factory may hope for more consumers eventually, but for Simutrans' part, it is probably mostly due to the fact that individual industries can't grow, except industries having fields.

The store opens as a reward for the player who caused through their actions a growth in the worldwide population, with the purpose of adding a new challange (or at least something to do) to a game that otherwise might go stale. Opening but one store fails at both these tasks, as it's neither an exciting reward, nor does it cause much to do, especially if these stores are small enough to be delivered to by truck (as they argueably should be most of the time*) such that the required infrastructure is just a mere bus stop**.
I like it that the consumers come one at a time, so that I don't get overwhelmed. However, I do see the problem with a single very small consumer, which is why I further up here proposed the idea that industrial growth triggers creation of consumers for a certain demand, not just a single one.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #18 on: April 15, 2019, 11:06:06 AM »
Perhaps. Sometimes the factory may hope for more consumers eventually,
Which is what I meant by transitive demand. The factory sees that there is a demand which they don't satisfy directly, but would be satisfied by someone using their products, so they expect more consumers. (Hope would be a bit too weak for a business).

but for Simutrans' part, it is probably mostly due to the fact that individual industries can't grow, except industries having fields.
Every Industry can expand. It's just works slightly different for those without fields, since they just make their own production rate a bit higher, rather than adding fields with production rates. And it has nothing to do with supply and demand, just that factories that run for a while become bigger.

I like it that the consumers come one at a time, so that I don't get overwhelmed.
You do realize that the batch size at which chains spawn does not necessarily become bigger, right? It can also become smaller, less overwhelming.

Currently, you may have factories that need several suppliers. Let's say a bakery needs flour from three mills, and a mill needs grain from three farms. This would mean each bakery to spawn would also cause three mills and nine farms, for a total of 13 factories. If you let spawning happen from the mills instead, each time it spawns you get 4 factories, and one out of three you get a new bakery on top. During all of this, the only factory which would be unable to run at 100% capacity is the bakery, which does not matter to us transport companies.
Call back to my prisons - you can have one prison for a hundred police stations without spawning a hundred police stations with the prison. Rather, you spawn smaller portions, maybe a court of justice with five police stations at a time, every time.



Anyway, I looked into the code a bit, and while not completely different, it does not do exactly what I was expecting it to do. So I'll look into it and see if I understand what it really does, such that I can make more precise suggestions (I'm not confident that I could write a single line of actual code, but I think I can read it well enough to know what it does and where it would need to do something differently. Perhaps.)

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 5555
  • Languages: EN, NO
Re: Factory chain spawning - not based on end consumer.
« Reply #19 on: April 15, 2019, 05:13:46 PM »
Every Industry can expand. It's just works slightly different for those without fields, since they just make their own production rate a bit higher, rather than adding fields with production rates. And it has nothing to do with supply and demand, just that factories that run for a while become bigger.
I've never seen that, so in my mind they simply don't. If they really do, they need to show it properly, by visibly becoming bigger or different.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #20 on: April 16, 2019, 08:46:10 AM »
I've never seen that, so in my mind they simply don't. If they really do, they need to show it properly, by visibly becoming bigger or different.
Eh. Those increases are typically on the smaller side, so it might be fine to think of it as "workers gaining expierience and getting better at their job".
Not that I'm against the idea of factories becoming visually bigger, but that should be a more substantial change.

Say a factory can have several levels, but always starts at level 1. Each level has different graphics. Whenever a new factory of the same type is due to spawn, instead an existing factory may level up. Each factories production rate, capacity for different type of goods, and demands for pax, post and electricity are multiplied with the level of the factory.
Basically, a factory leveling up would be roughly equal to the same factory spawning on top of the old one.
Add a seperate timeline for higher levels as well as a probability of upgrade vs. new spawning, and you get:
* Factories that can expand their production rates for new customers
* Factories that can (visually) modernize over time

I'm especially curious what that would mean if each level has a later introduction date, but a very high probability to upgrade over new spawns. This could make sense for things like mines - rather than finding new reserves (which might not exist), they would just get more efficient in digging stuff up.

(Not that it would have anything to do with the original proposal)

Offline Vladki cz

  • Devotee
  • *
  • Posts: 2725
    • My addons, mostly roadsigns
  • Languages: EN, CS
Re: Factory chain spawning - not based on end consumer.
« Reply #21 on: April 16, 2019, 10:46:27 AM »
Factory upgrades are already working in extended. So if desired this feature could be added to standard as is.

Offline Leartin at

  • Devotee
  • *
  • Posts: 1278
  • PAK-DEV P192C
  • Languages: DE, EN
Re: Factory chain spawning - not based on end consumer.
« Reply #22 on: April 16, 2019, 11:10:26 AM »
Factory upgrades are already working in extended. So if desired this feature could be added to standard as is.
In Extended, upgrades work as an alternative to closing down. Standard has no closing down factories, and I don't think there is much desire to add those - which might be a problem for transferring the feature "as is".

But since you are here, and knowledgable about Extended: Is there a different mechanism for spawning chains, or is it the same as in Standard?

Offline Vladki cz

  • Devotee
  • *
  • Posts: 2725
    • My addons, mostly roadsigns
  • Languages: EN, CS
Re: Factory chain spawning - not based on end consumer.
« Reply #23 on: April 16, 2019, 03:54:44 PM »
AFAIK it is the same. And it is a problem especially with pak Britain, where shops are small, and factories can feed many shops.