Difference between revisions of "Subframe"

From The Powder Toy
Jump to: navigation, search
(Solid Spark)
(Enter a short summary [b])
Line 29: Line 29:
  
 
Their IDs have to be in this order to work:
 
Their IDs have to be in this order to work:
  ID of 2 < ID of 3; ID of 1 doesn't matter
+
  ID of 1 < ID of 2 < ID of 3
  
 
'''How it works:'''
 
'''How it works:'''
Line 37: Line 37:
 
In the second frame:
 
In the second frame:
  
The life of the 1st particle (which is now a {{MaterialBtn | SPRK}}) decreases from 4 to 3 and now can activate powered materials.
+
The life of the 1st particle (which is now a {{MaterialBtn | SPRK}}) decreases from 4 to 3 and now can activate powered materials. ''If the ID of the 1st particle isn't smaller than that of the 3rd particle it won't be able to activate a powered material because it will decrease its life to 3 too late (it updates after the powered material is updated so the powered material never sees a SPRK with life 3 and won't become active)''.
  
 
The 2nd particle (the {{MaterialBtn | CONV}}) replaces the sparked 1st particle with the original material, so that it's 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.

Revision as of 15:39, 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 1 < ID of 2 < ID of 3

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. If the ID of the 1st particle isn't smaller than that of the 3rd particle it won't be able to activate a powered material because it will decrease its life to 3 too late (it updates after the powered material is updated so the powered material never sees a SPRK with life 3 and won't become active).

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