Code Findings
2 days ago
Texas, USA
swooce
He/Him, They/Them
2 days ago

I was mostly interested in how the boss fight worked (and why it was so consistent despite being rng), so I dug into the code to look at how it worked:

- Boss has a base health of 3
- Boss has a roam state, where it changes position
    - it roams (health) number of times before doing an attack, so attacks come out faster at the end of the fight
- Time between movements is the same, 1.5 seconds apart
- Where it can move to is based on an existing list of possible positions, a random one is chosen
- 6-(health) attacks before weak spot shows up
    - balanced by the speed between attacks above
- 6-(health) bombs spawn when that move triggers
    - if a "weak spot" bomb, that is just added on
- 9 - (health * 2) tiles are dangerous for that move, so 3,5,7
- The minions it spawns don't need to be killed to progress
- Any rng/time discrepancy should come down to the distance between its roaming position (it moves 10 units per frame, so shouldn't be too much) and how long the player takes to hit the weak spot bomb
- There doesn't seem to be any other way to damage it, the only collision code just damages you if you touch the boss

I was also interested in seeing how the "pause glitch" (in which you pause upon collecting a feather and can quit) works, here's the relevant code segment (comments are my own):

func _enter_state():
    # animations/set speed to 0, doesn't do anything for the glitch
	animation_player.play("CollectingGoldFeather")
	player.linear_velocity = Vector3.ZERO
	player.inertial_velocity = Vector3.ZERO
	player.dash_velocity = Vector3.ZERO
	player.force_squash_stretch_to_normal()
	
	if SceneManager.current_scene_name != "hub_world":
        # force game to pause, disallow any other pausing
		GamePauseManager.is_collecting_feather = true
        # increment "# of levels cleared" which directly ties into golden feathers
		player.camera.show_stage_clear_screen()

In order to get the pause glitch, you need to have paused the game after this function is called (once you enter the golden feather's hitbox), but before the is_collecting_feather variable is set to true. So, my conclusion is that this glitch may just come down to processing power/speed instead of a set number of frames, which is why it feels so inconsistent for me.

Otherwise, it is 3.5 seconds before you can begin to go back to hub, from the stage clear screen, or 5.0 seconds until the game does it automatically.

An addition to this is the reason why you can't do this glitch in any level with hot dogs:

if selected_node == $Quit:
	GhostDataSingleton.clear_current_ghost_data()
	GlobalConstantsAndReferences.reset_speedrun_timer_and_frame_counter()
	GlobalConstantsAndReferences.reset_collected_hot_dogs()
	GlobalConstantsAndReferences.reset_grey_feathers_after_dying()

So even if you're able to get the glitch, quitting resets your collected hot dogs no matter what.

Some smaller things include a 6 (0.1 second) frame window for a successful diveboost once you hit the ground, and also a 6 frame window of coyote time.

The speed for long jump vs. diving is comparable, with long jump being 4.5 units of speed and a dive being 5.0 units. A diveboost is 10 units for 0.4 seconds, then is capped at the softcap of 5.0. Sliding also starts at a multiplier of 5.0 but rapidly decreases the longer you're on the ground. These are all multipliers to your current speed. Walking is a base speed of 18.0 units, minus 5.5 units for friction (i think it's subtractive). Both dives and long jumps allow the player to go past the softcap of speed for their duration. Spin attack has a base multiplier of 7.0, so maybe this is the fastest method?

Maximum glide time is 1 second, and only can reset (in the air) if you stomp on an enemy.

If there's anything anyone else is interested in looking at, let me know.

Tarafından düzenlendi yazar 2 days ago
Patatrox ve DylCat bunu beğendi
Oyun istatistikleri
Takipçiler
6
Oyunlar
34
Oyuncular
7
En Son Konular
Yayınlanma tarihi 14 hours ago
1 yanıt
Yayınlanma tarihi 14 hours ago
1 yanıt
Yayınlanma tarihi 1 day ago
2 yanıt
Yayınlanma tarihi 2 days ago
0 yanıt
Yayınlanma tarihi 7 months ago
2 yanıt
Moderatörler