Transport belts/Physics
< Transport belts | Physics
In Factorio every item on screen is a real object in memory and follows the rules of the Game engine. For simulation games, this is not typical; it's much more common to generalize. Best examples are the older versions of SimCity, where the the simulation doesn't simulate every inhabitant of the city.
The reason for that is just CPU-performance. Real-time game-physics for up to 100,000 of objects at the same time is not typical for a simulation game. And the Factorio Game engine creates an exact and reproducible simulation of the Factorio world and it is so exact, that it can be used, to measure some astonishing behavior of belts.
What to measure
Some things can be measured for belts:
- Length (or area). Items have a collision box of 0.28 x 0.28 tiles. So 10 items laying in a single row on a belt, non moving, take length of 2.8 tiles.
- Speed. The speed of items on a belt is measured for practical reasons in tiles/sec or tiles/min. Note, that internaly it's measured in tiles per tick (1/60 sec)
- Density. See length. The density is how many items can lay on a tile or in conjuction with belts: how many items can lay in a row/lane. There are in average 3.571 items per lane or 7.143 on a tile of belt (=2 lanes). But the density differs depending on standing still or moving - read further!
- Throughput. How many items per minute are moved from one tile to the next. Measured in items/sec or better items/min.
More about physics can be found in this thread.
Theory
The data here is taken from the transport-belt prototypes.
belt-type | factor basic belt speed | speed (tiles/tick) | speed (tiles/sec) | speed (tiles/min) | density (single lane) items/tile | awaited throughput (2 lanes) items/sec | awaited throughput items/min |
---|---|---|---|---|---|---|---|
Basic | 1 | 0.03125 | 1.875 | 112.5 | 3.571 | 13.39125 | 803.475 |
Fast | 2 | 0.0625 | 3.75 | 225 | 3.571 | 26.7825 | 1606.95 |
Express | 3 | 0.09375 | 5.625 | 337.5 | 3.571 | 40.17375 | 2410.425 |
We assume here, that the density of items is always equal, so the transported amount should reflect the speed.
Measured Results
This results have been measured with a special designed factory (a complicated setup to guarantee, that only the running items on a belt are measured and a "timer" which stops the measuring exactly) and Factorio v0.6.x, so this has to be redone.
See forum article |
belt-type | throughput items/min | throughput items/sec | percent of awaited | comments |
---|---|---|---|---|
Basic | 719 | 11.98 | 90% | |
Fast | 1184 | 19.73 | 74% | this is NOT double as fast as basic! it's only 1,65 times faster - see comments down |
Express | 1775 | 29.58 | 74% | about 2.5 times faster than basic |
belt-type | throughput items/min | comments |
---|---|---|
Basic | 477-486 | About 1.5 times slower. This is because the inner lane of a belt in a turn has only the half speed. |
Fast | 786-792 | |
Express | 1038-1042 |
belt-type | throughput items/min | comments |
---|---|---|
Basic with fast edge-belts | 674-683 | |
Fast with express edge-belts | 1058-1061 | The fast belt with express edge seems to be faster, than pure express belt! |
Comments to the results
The first surprising result is, that the theoretic throughput differs from real measured. Too much to be just measurement errors.The second result is, that the more speed a belt has, the more ineffective it becomes. That is in the first moment not clearly explainable. The awaited result is, that a fast belt can transport exactly the double amount of items, than a basic, because it is double as fast (1.875 tiles/sec vs. 3.75 tiles/sec).
The reason for this difference is the distance of the items on the belt when running. Items on the belt cannot run completely compressed, they need a small distance. This is the same problem as in a traffic jam: You cannot drive, when the first car drives, you need to wait until the car before you drives and then you have a reaction-time of about 1/2 second before yourself begin to drive. The same is it with the items on the belt and the reaction-time here is 1/60 or one tick [currently not really validated, but not more than 2 ticks; this can be calculated by measuring how fast the standing wave goes through the items (needs to built a very complicated testing factory)]. You can see this reaction time running through your items as a standing wave, when you have a belt, which is completely filled and only sometimes an item is removed. When you compare the speed of this standing waves, you can see clearly, that they are the same speed for all types of belts.
The reaction-distance for items on a basic belt is
(1.875 tiles/sec) / 1 tick = 1.875 tiles/sec / 1/60 sec = 0.031125 tiles
or in other words: An item on a moving belt is not 0.28 tiles long, it is 0.31125 tiles, which makes it 11.2% longer
Overview for all belts:
Basic: 0.28 tiles + 0.03125 tiles = 0.31125 tiles => 11.2% Fast: 0.28 tiles + 0.0625 tiles = 0.3425 tiles => 22.3% Express: 0.28 tiles + 0.09375 tiles = 0.37375 tiles => 33.5%
This explains the reduction to 90% of speed for basic belt and the 74% for the fast belt (all inside measuring errors), but doesn't explain the results for express belt. This is part of further research.
This shows clearly, that the faster a belt is, the more distance the items have on a moving belt. More distance means, the density is lighter and this means, there are not so much items transported.
(This may explain the discrepancy in transported items, but don't use the numbers for real calculations, because they need to be redone!) (This is eventually one reason: http://www.factorioforums.com/forum/viewtopic.php?f=8&t=3630 )