Skip to content

Conversation

@DimensionWarped
Copy link
Collaborator

Features the following:

  • A new system for gimmick interaction. Now a player can connect to anything that extends ConnectableGimmick. A connectable gimmick necessarily provides some functions (which are included in the ConnectableGimmick abstract class) that are commonly needed for connectable gimmicks. These are: a fixup function callback for when a player is forced off of a gimmick by another means, player process and physics process additions that run immediately after the player's normal process/physics process functions respectively while connected to the gimmick, and an animation finished callback that you can used to make the gimmick react to a specific player finishing an animation (very useful for handling state changes at the end of an animation sequence. Additionally the player can now save its state internally for a class of gimmicks that it might interact with instead of having to create per player state within the gimmick itself.

  • A new debug tool that provides key mappings for the following:

## k - hurts the first player
## j - hurts the second player
## l - sets a return position for use with ;
## ; - teleports one or both players to the return position set with l
## u - places the big brick underneath the player and has it slowly move upwards
## i - places the big brick above the player and has it slowly move downwards
## o - places the big brick to the left of the player and has it slowly move
##     right
## p - places the big brick to the right of the player and has it slowly move
##     left
## m - Gives the player some rings
## , - Cycles through available shields

To use it simply drop a single DWDebugTool entity from Tools/Debug into your scene. The intention of this feature set is to provide you with a means of rapidly testing common gimmick interactions... stuff like how your gimmick will handle if your player is moved into a wall/floor/ceiling or gets hit by an enemy for example.

  • New LayerController, disposal, and AudioStream2DController tools are added that make it easy to control the player's layer and AudioStream2D objects using signals.

  • The MonkeyBar object is effectively a hanger that uses the new gimmick system, but it also has a twist in that it allows the player to brachiate (IE move like a monkey from branch to branch using ones hands above their head) between bars. The brachiation can be disallowed and allowed under certain conditions. The monkey bar object itself also emits signals which can be used to control all sorts of things (but mainly chains for the purpose of this PR). Signals that it emits are primarily related to characters boarding and unboarding the gimmick and can be wired to include data about the player who got on/off or just tell how many players are mounted on the gimmick.

  • The RetractibleChain object is created with the intention of being used with monkeybars to let them move up and down while drawing some kind of repeated object between them. Between the monkeybar and the chain you can trivially make the following gimmicks from the official games: Vine lifts and switches from Mystic Cave Zone, Crane Lifts from Wing Fortress Zone, the exact same crane lift from Launch Base zone, and many more! Really, you can connect this to anything and not just monkey bars. It is also meant to be controlled by signals which you can use to tell it to move to a certain height, and send it to various targets... or change those default. In addition, the chain itself is a signal emitter which send out signals for things like the chain lift moving, stopping, and reaching various

  • The HorizontalSlider object is another object intended for use with monkeybars but is actually applicable to just about anything. As with the Chain you can control it with signals to send it from place to place. It automatically calculates when it needs to put on the brakes based on its braking speed, current speed, position, and direction... even if the braking speed is instantaneous! It will also immediately snap into place if it would have moved further than intended, but that probably shouldn't happen. Once again, it is a signal emitter too and provides information on when it reaches a destination, when it starts moving, when it reaches its maximum velocity, and when it applies brakes.

  • Base Zone act 2 has been extended slightly to incorporate the new gimmicks and demonstrate some of their features.

Good bit of work in here restructuring things and getting base zone act 2 ready to show them off, but there's still no monkeying yet.
Mostly working now. Amy is broken.
Gimmick is now composed of different pieces, a retractible chain which is optional and can be used with many other things as well as the monkey bar itself which may be used with or without a chain. Additionally adds some new tools for controlling audio in the form of an AudioStream2DController which you can attach to any AudioStreamPlayer2D in order to be able to control it with signals. Also adds the ability to set randomized pitch options to said AudioStreamPlayer2D.
Finalizes changes for the initial PR for MonkeyBars and the assorted things I worked on to get it ready.
@DimensionWarped
Copy link
Collaborator Author

Note that there is a known issue with Amy on monkeybars that aren't set level to others -- monkeybars that Sonic, Tails, and Knuckles would be able to traverse easily are frequently outside the reach of Amy. This isn't intention, her hanging hitbox sits low on her for reasons that I wasn't fully prepared to explore (but suspect is due to her large player sprite frames relative to her hitbox sizes), so when this is merged, we'll need to make a new issue to tackle that problem.

@DimensionWarped DimensionWarped merged commit 26b22f6 into main Apr 2, 2025
@DimensionWarped DimensionWarped deleted the MaximumMonkey branch April 2, 2025 07:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants