Please create an account or Login! Have fun!
Editing Slide delay
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
'''Slide delay''' is a mechanic that exists only in the MS version of [[Chip's Challenge]], and was programmed into [[Tile World]], that makes [[monster]]s and [[block]]s lag when sliding, and it can greatly alter the outcome of a level. It pertains to [[monster]]s and [[block]]s that enter and leave [[force floor]]s, [[ice]], and [[teleport]]s. | |||
== The sliplist == | |||
The ''sliplist'' is a list of moving objects, blocks or monsters, that are currently sliding on force floors, ice, or teleports. Chip will never be on the sliplist, is never affected by slide delay, and, importantly, always moves before sliding blocks. Each row in the sliplist contains two elements: the object, and the coordinates of the destination square on the Chip's Challenge [[grid]]. | |||
The ''sliplist'' is a list of moving objects | |||
At the start of a level, the sliplist is empty, even if [[monster]]s are currently on sliding tiles; objects cannot enter the sliplist until they make a move. When a monster or block steps on any sliding tile, that object will be added to the end of the sliplist, and when it leaves a "slip" tile, it will be removed from the sliplist. Additionally, if a block slides directly off a sliding tile onto a [[trap]] (like in [[Torturechamber]]), it will remain on the sliplist, and when released, it will slide off the trap one further square in the same direction it was sliding in. | At the start of a level, the sliplist is empty, even if [[monster]]s are currently on sliding tiles; objects cannot enter the sliplist until they make a move. When a monster or block steps on any sliding tile (ice, force floor, or teleport), that object will be added to the end of the sliplist, and when it leaves a "slip" tile, it will be removed from the sliplist. Additionally, if a block slides directly off a sliding tile onto a [[trap]] (like in [[Torturechamber]]), it will remain on the sliplist, and when released, it will slide off the trap one further square in the same direction it was sliding in. | ||
Also notably, should only one sliding space separate Chip from a sliding block in front of him, and the block reaches the ice corner at the same time slide delay affects it, Chip will gain an extra half-move and be one space behind. Since Chip is unaffected by slide delay, he moves before the block, and [[cross-checking]] occurs. | Also notably, should only one sliding space separate Chip from a sliding block in front of him, and the block reaches the ice corner at the same time slide delay affects it, Chip will gain an extra half-move and be one space behind. Since Chip is unaffected by slide delay, he moves before the block, and [[cross-checking]] occurs. | ||
When an object hits an obstacle, such as a [[wall]], while sliding, the impact is counted as a non-slip tile, and the object will leave the sliplist. However, after the object bounces off the wall, it is now considered sliding, and will be added back onto the ''end'' of the sliplist | When an object hits an obstacle, such as a [[wall]], while sliding, the impact is counted as a non-slip tile, and the object will leave the sliplist. However, after the object bounces off the wall, it is now considered sliding, and will be added back onto the ''end'' of the sliplist. | ||
== | == Examples == | ||
As this [[glider]] begins on an ice tile, it does not count and it will not be added to the sliplist. | As this [[glider]] begins on an ice tile, it does not count and it will not be added to the sliplist. | ||
<div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 96px; height: 32px;"> | <div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 96px; height: 32px;"> | ||
{| cellpadding="0" cellspacing="0" | {| cellpadding="0" cellspacing="0" | ||
| [[ | | [[Image:Blank.png]] | ||
| class="tilebackground-ice" | [[ | | class="tilebackground-ice" | [[Image:Glider E.png]] | ||
| | | | ||
|} | |} | ||
Line 40: | Line 27: | ||
<div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 96px; height: 96px;"> | <div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 96px; height: 96px;"> | ||
{| cellpadding="0" cellspacing="0" | {| cellpadding="0" cellspacing="0" | ||
| [[ | | [[Image:Wall.png]] | ||
| [[ | | [[Image:Wall.png]] | ||
| [[ | | [[Image:Wall.png]] | ||
|- | |- | ||
| [[ | | [[Image:Wall.png]] | ||
| class="tilebackground-ice" | [[ | | class="tilebackground-ice" | [[Image:Glider E.png]] | ||
| [[ | | [[Image:Wall.png]] | ||
|- | |- | ||
| [[ | | [[Image:Wall.png]] | ||
| [[ | | [[Image:Wall.png]] | ||
| [[ | | [[Image:Wall.png]] | ||
|} | |} | ||
</div> | </div> | ||
In play, the above glider will not appear as moving in the MS version, but in [[ | In play, the above glider will not appear as moving in the MS version, but in [[Lynx]], failed moves can be seen, so a glider in this type of prison would be shown continuously turning left and right every 1/10 of a second. | ||
== Slide delay == | |||
Every tick, which is 1/10 of a second, the game accesses the sliplist and processes them in sequential order, moving each tile from its starting square to its destination square. When an object leaves the sliplist in the middle of this processing, the table will be modified (everything after that object will be shifted up one). However, the processing will ignore this and continue to process the object at the next index; as a result, an object will be skipped. This is what is known as slide delay. | |||
A concrete example | A more concrete example is shown below. | ||
This sample sliplist contains these two objects, both of which are sliding on ice. | This sample sliplist contains these two objects, both of which are sliding on ice. | ||
Line 87: | Line 71: | ||
| [1, 1] | | [1, 1] | ||
|} | |} | ||
The game ignores this and continues to process the second element; however, the second element is now still the block, and it proceeds to move the block from [2, 1] to [1, 1]. Now the slip engine is finished, and the net result is that nothing moved. | |||
Look at the example | Look at the example below. | ||
<div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 128px; height: 64px;"> | <div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 128px; height: 64px;"> | ||
{| cellpadding="0" cellspacing="0" | {| cellpadding="0" cellspacing="0" | ||
| [[ | | [[Image:Glider E.png]] | ||
| [[ | | [[Image:Force Floor E.png]] | ||
| [[ | | [[Image:Red Button.png]] | ||
| [[ | | [[Image:Fire.png]] | ||
|- | |- | ||
| [[ | | [[Image:Clone Block E.png]] | ||
| [[ | | [[Image:Ice.png]] | ||
| [[ | | [[Image:Ice.png]] | ||
| [[ | | [[Image:Ice.png]] | ||
|} | |} | ||
</div> | </div> | ||
Line 109: | Line 93: | ||
<div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 160px; height: 64px;"> | <div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 160px; height: 64px;"> | ||
{| cellpadding="0" cellspacing="0" | {| cellpadding="0" cellspacing="0" | ||
| [[ | | [[Image:Red Button.png]] | ||
| [[ | | [[Image:Ice.png]] | ||
| [[ | | [[Image:Ice.png]] | ||
| [[ | | [[Image:Ice.png]] | ||
| [[ | | [[Image:Clone Block W.png]] | ||
|- | |- | ||
| [[ | | [[Image:Glider N.png]] | ||
| | | | ||
| | | | ||
Line 127: | Line 111: | ||
<div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 96px; height: 32px;"> | <div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 96px; height: 32px;"> | ||
{| cellpadding="0" cellspacing="0" | {| cellpadding="0" cellspacing="0" | ||
| [[ | | [[Image:Glider E.png]] | ||
| [[ | | [[Image:Force Floor E.png]] | ||
| [[ | | [[Image:Wall.png]] | ||
|} | |} | ||
</div> | </div> | ||
Above is a different principle of slide delay | Above is a different principle of slide delay. Slide delay is created because the destination of the glider is always the force floor, and will always return to the sliplist. Blocks in this situation will leave the sliplist if they are [[ram]]med. | ||
<div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 96px; height: 32px;"> | <div class="tilebackground-floor" style="margin-left: auto; margin-right: auto; width: 96px; height: 32px;"> | ||
{| cellpadding="0" cellspacing="0" | {| cellpadding="0" cellspacing="0" | ||
| [[ | | [[Image:Glider E.png]] | ||
| [[ | | [[Image:Ice.png]] | ||
| [[ | | [[Image:Wall.png]] | ||
|} | |} | ||
</div> | </div> | ||
Line 146: | Line 130: | ||
== External links == | == External links == | ||
*([[David Stolp]]) [http://www.davidstolp.com/old/chips/slidedelay/index.html Dr. pieguy explains slide delay] | *([[David Stolp]]) [http://www.davidstolp.com/old/chips/slidedelay/index.html Dr. pieguy explains slide delay] | ||
[[Category:Mechanics]] | [[Category:Mechanics]] |