In other languages: Deutsch 한국어 Português, Brasil Русский 简体中文

Transport belts/Physics: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
No edit summary
m (Multiple grammar cleanups, change european decimals (0,2322) to american, to avoid confusion)
Line 1: Line 1:
{{Languages}}
{{Languages}}
{{sublinks}}
{{sublinks}}
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.
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 simulation doesn't simulate every inhabitant of the city.
 
The reason for that is CPU-performance. Real-time game-physics for up to tens of thousands of objects at the same time is not typical for a simulation game. The Factorio Game engine creates an exact and reproducible simulation of the Factorio world, so exact that it can be used to measure some astonishing behavior of belts.


== What to measure ==
== What to measure ==
Some things can be measured for belts:
Some stats can be measured for belts:
* '''Length''' (or area). Items have a collision box of 0.28125 x 0.28125 [[tile]]s. So 10 items laying in a single row on a belt, non moving, take length of 2.8125 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). The speed of basic belt is 0.03125 tiles per tick (1/32) or 1.875 [[tile]]s per [[Game-second]].
* '''Density'''. The density is ''items per tile''. 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.5555556 items per lane or 7,111111111 (32/9*2) on a tile of belt (=2 lanes). Which means in practical terms, that on a fully compressed belt there can be either 6, 7 or 8 items during one tick.
* '''Throughput'''. How many items per minute are moved from one tile to the next. Measured in items/sec or better items/min. That is for basic belt density (items per tile) multiplied with speed (tiles per second): (1/32 tiles/tick) / (9/32 items/tile) = 0,111111111 items per tick or 6,666666667 items per second for one lane. For two lanes it is then 13,333333333 items/second.


=== How to calculate this numbers yourself ===
* '''Length''' (or area). Items have a collision box of 0.28125 x 0.28125 [[tile]]s. So, 10 items laying in a single row on a belt non moving take the length of 2.8125 tiles.
* '''Speed'''. The speed of items on a belt is measured for practical reasons in tiles/sec or tiles/min. Note that internally it's measured in tiles per tick (1/60 sec). The speed of basic belt is 0.03125 tiles per tick (1/32) or 1.875 [[tile]]s per [[Game-second]].
* '''Density'''. The density is ''items per tile''. How many items can lay on a tile or in conjunction with belts: how many items can lay in a row/lane. There are in average 3.5555556 items per lane or 7.11 (32/9*2) on a tile of belt (2 lanes). Which means in practical terms that on a fully compressed belt there can be either 6, 7 or 8 items during one tick.
* '''Throughput'''. How many items per minute are moved from one tile to the next. Measured in items/sec or better items/min. That is for basic belt density (items per tile) multiplied with speed (tiles per second): (1/32 tiles/tick) / (9/32 items/tile) = 0.111111111 items per tick or 6.666666667 items per second for one lane. For two lanes it is then 13.33 items/second.


==== Basic belt ====
== How to calculate these numbers yourself ==
Belts have two ''lanes'': Left and right lane.
 
=== Introduction ===
Belts have two ''lanes'': The left and right lane.


Each lane of a belt consists out of 32 '''slots'''. A slot is just a virtual position on the belt with the width of 1/32 tiles (= 0.03125 tiles).
Each lane of a belt consists out of 32 '''slots'''. A slot is just a virtual position on the belt with the width of 1/32 tiles (= 0.03125 tiles).


An item, that is put on a belt (on a lane) takes 9 slots of space. This explains the size of items: 0.28125 x 0.28125 [[tile]]s (9/32 = 0.28125). Which means also, that 32/9 items (3,555555556 items) can fit on one lane of one belt. Which means: Either 3 or 4 items fit on one lane of a belt (32/9 × 2), which means either 6, 7 or 8 items fit on one belt (two lanes)!
An item that is put on a belt (on a lane) takes 9 slots of space. This shows the size of items: 0.28125 x 0.28125 [[tile]]s (9/32 = 0.28125). 32/9 items (3.55 items) can fit on one lane of one belt. Essentially, up to 8 items can fit on one belt at any tick.
<pre>
Step by step movement of an item on a belt-lane. <---*---> represents an item, and the slots it consumes.
 
  |==============================|  <-----  32 slots
1  <---*---><---*---><---*---><---* 4 items
2 ><---*---><---*---><---*---><--- 3 items
3  -><---*---><---*---><---*---><-- 3 items
4  --><---*---><---*---><---*---><- 3 items
5  ---><---*---><---*---><---*--->< 3 items
6 *---><---*---><---*---><---*---> 4 items
7 -*---><---*---><---*---><---*--- 4 items
8 --*---><---*---><---*---><---*-- 4 items
9  ---*---><---*---><---*---><---*- 4 items
</pre>


      Step by step movement of an item on a belt-lane.
Speed: Each [[Game-tick|tick]] an item on a belt (the 9 slots it takes) is moved by one slot.  
   
    |==============================|  <-----  32 slots
  1  <---*---><---*---><---*---><---* 4 items
  2  ><---*---><---*---><---*---><--- 3 items
  3  -><---*---><---*---><---*---><-- 3 items
  4  --><---*---><---*---><---*---><- 3 items
  5  ---><---*---><---*---><---*--->< 3 items
  6  *---><---*---><---*---><---*---> 4 items
  7  -*---><---*---><---*---><---*--- 4 items
  8  --*---><---*---><---*---><---*-- 4 items
  9  ---*---><---*---><---*---><---*- 4 items


 
=== Curves ===
Speed: Each [[Game-tick|tick]] an item on a belt (the 9 slots it takes) is moved by one slot. That explains the speed of a basic belt: 0.03125 tiles per tick (1/32).
The inner lane has 13.5 slots, compared to the outer 37 slots. In the end, 6 or 7 items can be in a curving belt at once.
 
==== Curves ====
The inner lane has 13.5 slots the outer 37 slots. Which means in the end, that either 6 or 7 items can be in curves.


Yes, the interior has a fractional slot: every odd interior curve is 14 slots and every even interior curve is 13 slots.
Yes, the interior has a fractional slot: every odd interior curve is 14 slots and every even interior curve is 13 slots.


==== The faster belts ====
=== The faster belts ===
For that the number of slots, that an item is moved per tick is just multiplied. For [[Fast transport belt]]s two slots, for [[Express transport belt]]s 3 slots. That explains, why fast belts are exactly 2 times faster, than basic and express belt is 3 times faster than basic.
To obtain higher speeds on higher tier belts, the quantity of slots that each item moves per tick is multiplied. For [[Fast transport belt]]s two slots, for [[Express transport belt]]s 3 slots. That explains why fast belts are exactly 2 times faster, than basic and express belt is 3 times faster than basic.


==== Good to know, but practically useless ====
=== Good to know, but practically useless ===
 
The least common multiple of 9 and 32 is 288. That is 9 * 32, which means: After 9 tiles the slots are repeating their positions. Which means: if you place some inserters every 9 tiles and move them in exact sync (via circuit network) you can fill a belt without the trick of using a splitter or undergroud-belt.


The least common multiple of 9 and 32 is 288. After 9 tiles, the slots are repeating their positions. If you place some inserters every 9 tiles and move them in exact sync (via circuit network) you can fill a belt without the trick of using a [[splitter]] or underground-belt.


For more information around this subject you might read this article: [https://forums.factorio.com/viewtopic.php?f=18&t=33685&hilit=belts+pipes Factorio: a quantitative guide]
For more information around this subject you might read this article: [https://forums.factorio.com/viewtopic.php?f=18&t=33685&hilit=belts+pipes Factorio: a quantitative guide]
Line 100: Line 101:




We assume here that the density of items is always equal and maximum compressed (see above), so the transported amount should reflect the speed.


We assume here, that the density of items is always equal and maximum compressed (see above), so the transported amount should reflect the speed.
== History ==
 
'''This is outdated and should be outsourced from this article but not deleted, because it is an interesting fact.'''
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
Kept for historical purposes, expand to view
= History =
<div class="mw-collapsible-content">
'''This is outdated and should be outsourced from this article but not deleted, cause it is an interesting fact.'''
 
; Theory  
== Theory ==


{| class="wikitable"
{| class="wikitable"
Line 150: Line 151:
|}
|}


 
; Measured Results for v0.11 or Older  
 
 
 
== Measured Results for v0.11 or Older ==


With Factorio v0.12 new belt physics was introduced. Before that the items where moved as real objects (which means, they need to look forward, if there is space to move), with 0.12 the items are moved "per lane". Also the physics in curves changed so that curves are now not longer have lower throughput.
With Factorio v0.12 new belt physics was introduced. Before that the items where moved as real objects (which means, they need to look forward, if there is space to move), with 0.12 the items are moved "per lane". Also the physics in curves changed so that curves are now not longer have lower throughput.
Line 182: Line 179:
|align="center" | 19.73
|align="center" | 19.73
|align="center" | 74%
|align="center" | 74%
|this is NOT double as fast as basic! it's only 1,65 times faster - see comments down
|This is NOT double as fast as basic! it's only 1.65 times faster
|-
|-
|Express
|Express
Line 188: Line 185:
|align="center" | 29.58
|align="center" | 29.58
|align="center" | 74%
|align="center" | 74%
|about 2.5 times faster than basic
|About 2.5 times faster than basic
|}
|}


Line 229: Line 226:
|}
|}


=== Comments to the results ===
; 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 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).
Line 251: Line 248:


A possible reason for this: http://www.factorioforums.com/forum/viewtopic.php?f=16&t=6817
A possible reason for this: http://www.factorioforums.com/forum/viewtopic.php?f=16&t=6817
</div></div>


== See also ==
== See also ==
Line 263: Line 262:


* [http://www.factorioforums.com/forum/viewtopic.php?f=5&t=1213&p=8450&hilit=physics#p8450|Factorio and real physics]
* [http://www.factorioforums.com/forum/viewtopic.php?f=5&t=1213&p=8450&hilit=physics#p8450|Factorio and real physics]
[[Category: Items]] [[Category: Transport network]] [[Category: Moving ground]]

Revision as of 00:39, 11 December 2016

< 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 simulation doesn't simulate every inhabitant of the city.

The reason for that is CPU-performance. Real-time game-physics for up to tens of thousands of objects at the same time is not typical for a simulation game. The Factorio Game engine creates an exact and reproducible simulation of the Factorio world, so exact that it can be used to measure some astonishing behavior of belts.

What to measure

Some stats can be measured for belts:

  • Length (or area). Items have a collision box of 0.28125 x 0.28125 tiles. So, 10 items laying in a single row on a belt non moving take the length of 2.8125 tiles.
  • Speed. The speed of items on a belt is measured for practical reasons in tiles/sec or tiles/min. Note that internally it's measured in tiles per tick (1/60 sec). The speed of basic belt is 0.03125 tiles per tick (1/32) or 1.875 tiles per Game-second.
  • Density. The density is items per tile. How many items can lay on a tile or in conjunction with belts: how many items can lay in a row/lane. There are in average 3.5555556 items per lane or 7.11 (32/9*2) on a tile of belt (2 lanes). Which means in practical terms that on a fully compressed belt there can be either 6, 7 or 8 items during one tick.
  • Throughput. How many items per minute are moved from one tile to the next. Measured in items/sec or better items/min. That is for basic belt density (items per tile) multiplied with speed (tiles per second): (1/32 tiles/tick) / (9/32 items/tile) = 0.111111111 items per tick or 6.666666667 items per second for one lane. For two lanes it is then 13.33 items/second.

How to calculate these numbers yourself

Introduction

Belts have two lanes: The left and right lane.

Each lane of a belt consists out of 32 slots. A slot is just a virtual position on the belt with the width of 1/32 tiles (= 0.03125 tiles).

An item that is put on a belt (on a lane) takes 9 slots of space. This shows the size of items: 0.28125 x 0.28125 tiles (9/32 = 0.28125). 32/9 items (3.55 items) can fit on one lane of one belt. Essentially, up to 8 items can fit on one belt at any tick.

 
Step by step movement of an item on a belt-lane. <---*---> represents an item, and the slots it consumes.
  
   |==============================|  <-----  32 slots
1  <---*---><---*---><---*---><---* 4 items
2  ><---*---><---*---><---*---><--- 3 items
3  -><---*---><---*---><---*---><-- 3 items
4  --><---*---><---*---><---*---><- 3 items
5  ---><---*---><---*---><---*--->< 3 items
6  *---><---*---><---*---><---*---> 4 items
7  -*---><---*---><---*---><---*--- 4 items
8  --*---><---*---><---*---><---*-- 4 items
9  ---*---><---*---><---*---><---*- 4 items

Speed: Each tick an item on a belt (the 9 slots it takes) is moved by one slot.

Curves

The inner lane has 13.5 slots, compared to the outer 37 slots. In the end, 6 or 7 items can be in a curving belt at once.

Yes, the interior has a fractional slot: every odd interior curve is 14 slots and every even interior curve is 13 slots.

The faster belts

To obtain higher speeds on higher tier belts, the quantity of slots that each item moves per tick is multiplied. For Fast transport belts two slots, for Express transport belts 3 slots. That explains why fast belts are exactly 2 times faster, than basic and express belt is 3 times faster than basic.

Good to know, but practically useless

The least common multiple of 9 and 32 is 288. After 9 tiles, the slots are repeating their positions. If you place some inserters every 9 tiles and move them in exact sync (via circuit network) you can fill a belt without the trick of using a splitter or underground-belt.

For more information around this subject you might read this article: Factorio: a quantitative guide


Theory

The data here is taken from the transport-belt prototypes (Version 13.3 and above).

belt-type factor basic belt speed speed (tiles/tick) speed (tiles/sec) speed (tiles/min) density (single lane) items/tile density (two lanes) items/tile throughput (2 lanes) items/sec throughput items/min
Basic 1 0.03125 1.875 112.5 3.556 7.111 13.33 800.00
Fast 2 0.0625 3.75 225 3.556 7.111 26.66 1600.00
Express 3 0.09375 5.625 337.5 3.556 7.111 40.00 2400.00


We assume here that the density of items is always equal and maximum compressed (see above), so the transported amount should reflect the speed.

History

This is outdated and should be outsourced from this article but not deleted, because it is an interesting fact.

Kept for historical purposes, expand to view

Theory
Expected results 13.2 or older
belt-type factor basic belt speed speed (tiles/tick) speed (tiles/sec) speed (tiles/min) density (single lane) items/tile throughput (2 lanes) items/sec 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
Measured Results for v0.11 or Older

With Factorio v0.12 new belt physics was introduced. Before that the items where moved as real objects (which means, they need to look forward, if there is space to move), with 0.12 the items are moved "per lane". Also the physics in curves changed so that curves are now not longer have lower throughput.

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

Simple straight belt
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
Express 1775 29.58 74% About 2.5 times faster than basic


Belt with 4 turns (2 left, 2 right, see down into next chapter)
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 with 4 turns (2 left, 2 right), but faster belt at the edges
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 many 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 )

A possible reason for this: http://www.factorioforums.com/forum/viewtopic.php?f=16&t=6817

See also