News

Season Four Top 50 – Introduction

Each year we look back on the previous competitive season and the players who influenced our scene by creating a Top 50 Players list. Season 4 (March 2019 – January 2020) saw a lot of growth, with competitive community-run events popping up across the country. We are incredibly excited to witness this community beyond our typical RCS events sprouting up before our eyes!

Before we delve into the rankings this year, here’s an introduction on how the list was formed along with our events list and hidden bosses.

View more articles in the Season Four NA Rankings Series:

Rivals Rankings Season Four Top 50

Player Qualifications

During season 3 we saw events like Cold Snap and TAPS lead the Grassroots community down an exciting path, but ultimately decided not to count them towards Top 50. As we unveiled the Season 3 Top 50, we shared this announcement:

“It’s worth noting that excitingly, more Rivals-only events are beginning to become large enough, competitive enough, and diverse enough to entertain this list encompassing events outside of the RCS. Our ranking council did hold a discussion on this but ultimately decided to wait until next season to begin including them.”

Now that Season 4 is here we’ve expanded outside of only including RCS events by popular request. For the Season 4 rankings, we only considered players with 2 or more events from the list below. All players considered had to have attended at least one offline RCS event and had to be based in the North American (NA) region to be included in the Rivals Top 50.

Methodology

This year, we brought back the panel system from Season 3, ranking players based on a combination of their best wins/worst losses and their placements at eligible events.

Whether the event took place offline or online was also taken into consideration. Online events are always a contentious piece of the puzzle for our top 50 rankings, and this year we’ve continued the trend of placing importance heavily on offline results. Exceptional players that only competed online have been included, but may appear lower on the list due to lack of offline results. Keep in mind this is not intended to disrespect their skill, but rather our concession that we’re unable to place them accurately in the context of the full season’s events and offline finals.

Once this ranking system was completed, a council made additional adjustments to the order based on head-to-head results, activity, and other data. This group consisted of Menace13, MSB, Renzo, SBS, and Sparx21.

Hidden Bosses

Players given the title of Hidden Boss were recognized by the panel as major threats to tournaments this season that just didn’t quite meet the requirements to be ranked.

Adi, gracefulknight, Kenneth, Wai

Patch 1.4.21 Notes

  • Hitboxes that hit on their last active frame will no longer disappear during hitpause.
  • Most projectiles now have their hitboxes visible in training mode.
  • Red team will always start the match on the left side of the stage.
  • Waveland is now jump-cancellable on frame 4 for all characters (was previously frame 6 for heavy characters).
  • Fixed a bug that allowed players to crouch in the air for 1 frame, restoring their airdodge.
  • Strong Attack mechanics adjusted to work consistently regardless of control scheme.
    • Strong Attack is now always a 3-frame input. Previously was a 6-frame input with a joystick and a 4-frame input with keyboard/dpad.

  • Fstrong hit 1 SDI multiplier adjusted from x1 > x0 (so the 2nd hit connects more consistently when the move is used at the ledge).
  • Uspecial final hit knockback increased from 7+.5 > 8+.6.

  • Nair bounce no longer restores double jump, walljump, and airdodge.
  • Uspecial can now be canceled with a walljump anytime Orcane isn’t moving upward.
  • Bubbles now clear the opponent’s airdodge buffer if they were grounded, so missing a parry doesn’t buffer an airdodge.

  • Ftilt hits 1 and 2 angle flipper adjusted from 4 (Horizontal knockback sends toward the center of the hitbox) > 9 (Sends toward the center of the hitbox).
  • Ftilt hits 1 and 2 are now untechable.
  • Nair animation updated.
  • Nair hit 2 hitstun modifier decreased from x1.0 > x0.8.
  • Nair endlag increased from 6 > 8 (9 > 12 on whiff).
  • Time between nair hits decreased from 12 > 8.
  • Uair center hit angle adjusted from 80 > 75.
  • Uair center hit KB scaling increased from .3 > .4.
  • Nspecial endlag increased from 11 > 16.
  • Double jumping right after using Fspecial while it’s on cooldown will no longer use all of your double jumps.

  • Jab 1 and Jab 2 animations have new recovery frames.
    • Kragg no longer leaves his arm extended for the entire duration of Jab 1’s recovery.
  • When a player leaves a falling pillar, it will continue to fall for the next 20 frames.
  • Fspecial is no longer locked out of turning for 8 frames when the rolling animation starts over.
  • Fspecial jump cancel timer no longer counts down while in hitpause (values adjusted so that the cancel window feels the same as before).
  • Uspecial pillar will only rise to the minimum height if started more than 80px below it.
    • Normal Uspecial raises you up by 80px. Previously, if you were 1px below the minimum pillar height, it would raise you 1px instead of 80px.
  • Rock Uthrow and Dthrow can now be reversed.

  • Ftilt endlag decreased from 10 > 8 (15 > 12 on whiff).
  • Utilt endlag decreased from 12 > 10 (18 > 15 on whiff).
  • Utilt hits 1 and 2 angle flipper adjusted from 4 (Horizontal knockback sends toward the center of the hitbox) > 9 (Sends toward the center of the hitbox).
  • Utilt hits 1 and 2 are now untechable and cannot cause a ground bounce.

  • Lily will no longer try to attack enemies whose hurtboxes aren’t touching her (unless they’re invincible, in which case she will activate the same as previous versions).
  • Lily can no longer eat a seed on the frame it is created (this prevents Lily from eating seeds that would otherwise mark a player between Maypul and Lily).
  • Hitting players immediately after they’re wrapped by Lily will no longer result in no knockback.
  • Parrying will no longer remove Maypul’s mark if the Maypul is on the same team as the parrying player.
    • This also applies to Clairen’s Dspecial.

  • Parrying Absa’s Fspecial will force her into parry stun even if she is no longer in the attack’s animation.
  • Parrying another character’s Fspecial projectile will no longer prevent Absa from creating a cloud with Nspecial.
  • Uspecial both hits knockback scaling decreased from .2 > .15 (slightly reduces the frame advantage on hit against grounded opponents).

  • Fspecial’s cooldown can no longer be avoided if the move is interrupted.

  • Spirit Flame will no longer target players in the respawn state.

  • Jab endlag decreased from 14 > 12 (21 > 18 on whiff).
  • Uair tipper hitbox shrunk by 2px on the bottom (to remove the 1px of tipper sticking out from under the sourspot).
  • Aerial Fspecial recovery frames before cancel window starts increased from 18 > 20.
  • Aerial Fspecial’s recovery will now only be cancellable on whiff if the recovery window starts on the ground.
  • Fspecial walljump window is now always halfway through the endlag window, instead of being later on whiff.
  • Uspecial part 2 pratland time decreased from 18 > 15.

  • Fstrong final hit hit lockout increased from 0 > 10.
  • Fair sweetspot angle adjusted from 45 > 40.
  • Bair priority swapped (tip has highest priority, base has lowest).
  • Bair sweetspot shrunk 14px outward horizontally.
  • Bair endlag decreased from 25 > 20.
  • Bair sweetspot damage increased from 12 > 16.
  • Fspecial damage increased from 6 > 8.
  • Hurtbox fixed when cancelling Uspecial into Taunt.
  • Fspecial cancel timer no longer counts down while in hitpause.
    • Values adjusted, but this shortens the cancel window by 5 frames when hitting a flower, since the flower only deals half hitpause.

  • Fair hits 1 and 2 no longer force flinch.
  • Fair hits 1 and 2 damage increased from 2 > 3.
  • Dair hits 1 and 2 damage increased from 2 > 3.
  • Dspecial will now correctly fall off of Forsburn’s clone when using Uspecial.

  • Bair hits 1 and 2 damage increased from 2 > 3.
  • Bair final hit damage decreased from 6 > 4.
  • Holding up immediately when Dstrong leaves the ground makes Shovel Knight jump higher.

has_rune

Returns whether a specific rune is currently equipped on the player. For more info on how to add custom runes to your character, check the Custom Abyss Runes page.

ArgumentTypeDescription
letter:stringThe letter of the rune to check.

Example, called from init.gml:

//This code will set the character's dash speed to be much higher only if rune A is equipped.
if has_rune("A") {
dash_speed = 8;
} else {
dash_speed = 4;
}

Custom Abyss Runes

Custom Abyss runes can be added to your custom character via the config.ini file, as well as the function has_rune( letter )  Reference→.

Each rune, from A to O, can be set in the character’s config.ini file, using the two properties below, replacing the # with the letter of the rune you want to set.

Property Description
rune # type The rune’s type. Can be set to one of the following values:
O – Object modifier, for articles and other things the character creates.
R – Ranged modifier, for projectiles.
H – Hit modifier, for melee attacks.
A – Ability boost, for miscellaneous abilities that aren’t necessarily attacks.
rune # desc The rune’s description, explaining what it actually does.

Example of setting up runes in config.ini:
rune A type="H"
rune A desc="Makes FSTRONG stronger."
rune B type="R"
rune B desc="NSPECIAL's projectile moves way faster."
rune C type="A"
rune C desc="Increased coolness."

Keep in mind that the rune types are fairly arbitrary and don’t change anything gameplay-wise, so if a rune’s effects cover multiple types, just set it to what you think is the most relevant.

As for actually implementing them into your character, making runes affect their abilities, you’ll only need the has_rune( letter )  Reference→ function. This can be used in any script in any way other functions can, returning 1 if the rune is equipped and 0 if it isn’t. Some useful examples of applying this are:
//Conditional runes
if has_rune("A") {
dash_speed = 8;
}
//Adding a rune's value
max_djumps = 1 + has_rune("B") * 2;
//Modifying attack values
set_hitbox_value( AT_FAIR, 1, HG_DAMAGE, 10 + has_rune("C") * 10 );

Hit Particles

Hit particles appear whenever you land a hit on someone. Though they’re purely decorative, they can help sell what the attack hit them with; Base game characters use this for elemental-focused attacks.

Custom characters have 6 slots for custom hit particles. By default, these slots are automatically filled out with the files hit_particle1hit_particle6 in the sprites folder. (If those sprites don’t exist, an empty sprite is used instead.) You can change which sprite a particle uses by calling set_hit_particle_sprite( num:real, sprite_index:real ) in init.gml. For example:

set_hit_particle_sprite( 1, sprite_get( "custom_sprite" ) );

For more information on how sprites are loaded and animated in general, check the Sprites page.

The particles a hitbox spawns depends on the property HG_HIT_PARTICLE_NUM. By default this property is set to 0, which will use the regular “bullet”-shaped particles. Setting it to 1 – 6 will use the hit particles from that slot, and anything above that will behave the same as 0.

Hit particle sprites are stored and drawn slightly differently to normal sprites, and have a few important differences to keep in mind.
Due to the way hit particles are stored, they cannot be updated after init.gml runs, and will not update to match palette changes mid-match.
Transparency is handled differently; the color in the bottom left pixel of each frame is counted as transparency, and every other color will be completely opaque.