-
Notifications
You must be signed in to change notification settings - Fork 28
Binoculars
Tip
If you need to know the position of an entity, you can open the Info HUD and left-click on it, while holding the Info HUD key, to track it.
This will show you the exact position inside the Info HUD and the pixel position as a cyan dot on the entity.
Binoculars (or "bino" for short; called Lookout
in code and "Watchtower" in Lönn) are very complicated entities, and have a variety of tech ranging from decently useful to fairly obscure. This page serves both as documentation for how binos work, as well as for tricks with binos.
Because binos are complicated, it is warranted to fully document what happens during each step of a binocular usage.
Here is a step by step list of all the things that happen in one bino usage:
- Madeline Interacts with the bino
-
Lookout.Interacting
is set totrue
- Sandwich lava is disabled
- Madeline drops any holdable she is currently holding
- Madeline's state is set to
StDummy
-
DummyWalkToExact()
is called, causing Madeline to walk towards the bino- Once Madeline's X position (ignoring subpixels) is the same as the bino's X position, the walk is completed
- Can be cancelled if Madeline collides with a wall or becomes airborne
- Resets X speed to 0 when completed/cancelled, unless her X position is already the same as the bino's X position
- If Madeline's X position is > 4px away from the binocular's X position, or airborne when
DummyWalkToExact()
returns, her state is set toStNormal
and the interaction is cancelled, while keepingLookout.Interacting
astrue
- Play lookout sound and wait for 0.2s (12f)
- Madeline is made invisible and replaced with a sprite on the bino
- Modifies HUD to include the binocular display
- Position where the camera is on the frame Madeline enters is stored
- Code for moving around in bino loops until
Jump
,Dash
,Confirm
, orCancel
is pressed, or if interacting is set to false. Note thatGrab
andCrouchDash
buttons do not exit the bino. - Angle from player is stored, then used to animate Madeline and play the squeak sound effect
- Rest of the code is used for moving camera in both regular and noded cameras
- Madeline is made visible again
- Bino HUD is removed
- If distance between where the camera was on the frame Madeline entered and the frame Madeline exits is greater than 600px diagonally away, screen will do a fade and Madeline will not regain control
-
Lookout.Interacting
is set tofalse
- Madeline's state is set to
StNormal
On Death
- If Madeline dies during interaction,
StopInteracting()
is ran during death andLookout.Interacting
is set tofalse
- When a bino is removed from the level on screen transition, it does a check to see if
Lookout.Interacting
is true. If so, Madeline's state is set toStNormal
.
Note
This is sometimes (incorrectly) called just "Bino Storage".
As mentioned above, when the walk Madeline does is cancelled, Lookout.Interacting
is not reset. When Madeline now screen transitions, while Lookout.Interacting
is still true
, then Madeline's state is set to StNormal
, regardless of her current state.
Most commonly, this is used to cancel the long landing animation from entering a screen after a Badeline throw, and to keep speed from grounded ultras by cancelling StDash
. The most common way to cancel the bino walk to become airborne after interacting with the bino. This can either be done by being the pixel above the ground while moving up and interacting with the binos before moving upwards a pixel, or by interacting and then jumping on the next frame.
Note that cancelling the bino walk usually still resets the X speed to 0, however this can be avoided by being on the same X pixel as the bino on the frame after the jump, because DummyWalkToExact()
won't do anything in that case. The maximum possible speed to keep with this is ~840px/s.
Another way to keep speed would be by retaining it on a wall before it is reset, and regaining it after that. This doesn't have any speed cap.
Example:
# Interact with the bino. Note that the interaction check happens AFTER regular movement
1,R,N
# Jump to cancel the walking animation
1,R,J
# If you want to keep your speed, you need to have the same X position on this frame
1,R
# Now your state is reset to StNormal and the Bino Interaction Storage is setup
...
When Madeline enters a bino, her state is set to StDummy
, which means that she can no longer move. If it is possible to have Madeline's state be changed after entering the bino, then Madeline will be able to move around again, while still using the bino The primary advantage of this is that she will still be able to control the camera using the bino. This can cause obstacles such as spinners or lightning to become uncollidable, since they're off-screen, allowing for more direct paths to be taken.
Because Madeline is still using the bino as she is moving, pressing Jump
, Dash
, Confirm
, or Cancel
will immediately exit the binos. To prevent this, buffering the input is needed. For an example of how to do this, see below:
# Pause to get a jump press without exiting the bino
1,S,N
9,O
10,R,J,G
Note
Besides pausing, freeze frames can be used as well to buffer inputs, saving time over pausing.
Additionally using crouch-dashes instead of regular dashes is recommended, since those don't cancel the bino.
When moving around, the camera will also move around because the arrow keys are used for both actions. This can be avoided with the use of dash only and move only key binds. Below is an example of using dash/movement only keybinds to manipulate the camera:
# Move madeline right and the camera left
100,AL,MR
When madeline exits bino, her state is set back to normal. This means that the end of bino control storage can be used to cancel states. Below is an example of cancelling an upright dash using the end of bino control storage:
# Cancels the upright dash on the last frame of upright
1,R,O
8,R
15,R,U,X
Bino Clipping is done by entering bino and moving the camera far away, before exiting the bino. This allows the player a few frames where obstacles are completely off-screen, causing them to become uncollidable. An example of what a bino clip could look like is given below:
# Move the camera upwards, then exit the bino
1,N
190,U
# Exit with the confirm button
1,O
19
# Movement
...
The game will store where the camera is on the frame binos are entered. This point becomes the center of a 600px radius inside of which exiting the binos will allow Madeline to move around normally. Outside of this radius, when exiting the binos the screen will fade out, and Madeline will not be able to move. This can be circumvented by exiting and quickly re-entering the bino, which allows for recentering the radius much further away from the bino than would normally be possible. This is called Bino Extending, and has occasional use in various challenge runs. Below is some example inputs for what that may look like.
# Enter bino
1,N
192,U
1,O
# Exiting bino
23
# Re-enter bino
1,N
192,U
1,O
# Exiting bino
23
# Re-enter bino
1,N
192,U
1,O
# Exiting bino
19
#Movement
...
Note
The individual timings for each bino extension can vary based on a number of factors, so each up press may not be optimal in the above inputs in your particular use case. Bino Extensions also have diminishing returns, due to the fact that the camera returns faster when it is further away.
When Madeline exits the bino, either through cancelling the bino walk (i.e. the walk Madeline does towards the bino), or by exiting regularly, her state is set to StNormal
regardless of what it was before. This means that almost any tech involving cancelling states can be utilized with an adequate bino setup.