Difference between revisions of "Subframe"

From The Powder Toy
Jump to: navigation, search
(Page about Subframe (work in progress))
 
m (Reverted edits by Jerehmia (talk) to last revision by MachineMan)
 
(5 intermediate revisions by 3 users not shown)
Line 4: Line 4:
  
 
== Particle Order ==
 
== Particle Order ==
Every frame in The Powder Toy all the particles are updated one after another according to their ID.
+
Every frame in The Powder Toy, all the particles are updated one after another according to their ID.
  
When you hover over a particle the ID is visible next to X and Y values but only when the debug HUD (toggle it with "D" key) is enabled.
+
When you hover over a particle with debug mode (use the "D" key to toggle) the ID is visible next to the X and Y values.
  
Every time you load a save all the particles are ordered from left to right and top to bottom.
+
Every time you load a save, the particles are ordered from left to right and top to bottom.
That means they will also be updated in that order. You should always assume that order or your contraptions can break when reloading the save.
+
That means they will also be updated in that order (because the IDs are also ordered). You should always assume that the order of your contraptions can break when reloading the save.
  
 
[[File:ParticleUpdateOrder.gif]]
 
[[File:ParticleUpdateOrder.gif]]
  
 
== Solid Spark ==
 
== Solid Spark ==
Solid sparks are used to activate other particles like {{MaterialBtn | ARAY}}, {{MaterialBtn | DRAY}}, {{MaterialBtn | CRAY}} etc. every frame. It can bypass the spark cooldown and how spark normally blinks.
+
Solid sparks are used to activate powered materials every frame. It can bypass the spark cooldown (which is why spark blinks).
  
 
[[File:SolidSpark.gif]]
 
[[File:SolidSpark.gif]]
  
 
'''How to build it:'''
 
'''How to build it:'''
A solid spark is made using at least 3 particles:  
+
 
 +
A solid spark is made using at least three particles:  
  
 
1. Any element that can be sparked (like {{MaterialBtn | METL}})
 
1. Any element that can be sparked (like {{MaterialBtn | METL}})
  
2. {{MaterialBtn | CONV}} with the CTYPE of the element above
+
2. {{MaterialBtn | CONV}} with the CTYPE of element one (if you place this while unpaused, it automatically sets the CTYPE, assuming there are no other elements nearby)
  
3. {{MaterialBtn | BTRY}} or {{MaterialBtn | CONV}} with CTYPE of {{MaterialBtn | SPRK}}
+
3. {{MaterialBtn | BTRY}} or a {{MaterialBtn | CONV}} with a CTYPE of {{MaterialBtn | SPRK}}
  
Their IDs have to be in that order to work
+
Their IDs have to be in this order to work:
  ID of 1 < ID of 2 < ID of 3
+
  ID of 2 < ID of 3; ID of 1 doesn't matter
  
 
'''How it works:'''
 
'''How it works:'''
In the first frame nothing happens and at the end the 1st particle gets sparked by the 3rd particle.
+
 
 +
In the first frame, the 1st particle (the sparkable element) gets sparked by the 3rd particle (the {{MaterialBtn | BTRY}} or {{MaterialBtn | CONV}}).
  
 
In the second frame:
 
In the second frame:
  
1st particle (now being a SPRK) life decreases (from 4 to 3) and now can trigger elements like {{MaterialBtn | ARAY}}, {{MaterialBtn | DRAY}} etc.
+
The life of the 1st particle (which is now a {{MaterialBtn | SPRK}}) decreases from 4 to 3 and now can activate powered materials.
  
2nd particle replaces the sparked 1st particle, so its not sparked anymore.
+
The 2nd particle (the {{MaterialBtn | CONV}}) replaces the sparked 1st particle with the original material, so that it's not sparked anymore.
  
Now that the 1st particle isn't sparked the 3rd particle can spark it again (thus avoiding the spark cooldown and blinking).
+
Now that the 1st particle isn't sparked anymore, the 3rd particle can spark it again (thus avoiding the spark cooldown, so it doesn't blink).
  
So the 1st particle gets sparked, the spark is replaced, and gets sparked again.
+
So the 1st particle gets sparked, the spark is replaced with the original material, and then gets sparked again.
  
  

Latest revision as of 16:02, 27 June 2024

What's Subframe?

Subframe is a general name for technology that abuses particle update order.

Particle Order

Every frame in The Powder Toy, all the particles are updated one after another according to their ID.

When you hover over a particle with debug mode (use the "D" key to toggle) the ID is visible next to the X and Y values.

Every time you load a save, the particles are ordered from left to right and top to bottom. That means they will also be updated in that order (because the IDs are also ordered). You should always assume that the order of your contraptions can break when reloading the save.

ParticleUpdateOrder.gif

Solid Spark

Solid sparks are used to activate powered materials every frame. It can bypass the spark cooldown (which is why spark blinks).

SolidSpark.gif

How to build it:

A solid spark is made using at least three particles:

1. Any element that can be sparked (like METL.png)

2. CONV.png with the CTYPE of element one (if you place this while unpaused, it automatically sets the CTYPE, assuming there are no other elements nearby)

3. BTRY.png or a CONV.png with a CTYPE of SPRK.png

Their IDs have to be in this order to work:

ID of 2 < ID of 3; ID of 1 doesn't matter

How it works:

In the first frame, the 1st particle (the sparkable element) gets sparked by the 3rd particle (the BTRY.png or CONV.png).

In the second frame:

The life of the 1st particle (which is now a SPRK.png) decreases from 4 to 3 and now can activate powered materials.

The 2nd particle (the CONV.png) replaces the sparked 1st particle with the original material, so that it's not sparked anymore.

Now that the 1st particle isn't sparked anymore, the 3rd particle can spark it again (thus avoiding the spark cooldown, so it doesn't blink).

So the 1st particle gets sparked, the spark is replaced with the original material, and then gets sparked again.


Language: English