List of engine quirks in Super Smash Flash

There's no denying that Super Smash Flash is a broken game. However, we at the Super Smash Flash Wiki believe that this is part of what makes things fun. So, here's a compiled list of many of the interesting or notable quirks about this game.


 * Attacks do not have frame data per se; with the exception of projectiles, every single attack in the game is frame 1, and has an active hitbox for its entire duration.
 * For most attacks, their duration is based on the  attribute for the given character. I say "most" because some attacks are designed to end earlier.
 * To keep things from getting ridiculous, characters also have an  attribute, which determines how frequently a character is allowed to attack.
 * If a character's  is smaller than their , attempting to use the same attack twice in a row will instead cause the character to play the next animation in the character's file. This leads to odd behaviors like using up attack with side attack's properties or being able to use down air while grounded.


 * While the game does use dedicated hitboxes for attacks, there are no hurtboxes. Instead, to register a hit, the game checks to see if an enemy hitbox is overlapping the bounding box containing all elements attached to the character.
 * Yes, this includes graphical effects and attack hitboxes.
 * Yes, this does mean that there are no disjointed attacks in this game. Plenty of reverse-disjoints, however.
 * Speaking of bounding boxes, all attack hitboxes use their bounding box for determining hits, giving diagonal hitboxes a lot more range than intended.
 * And of course inflating the attacker's hurtbox accordingly.
 * Of course, I can't forget to mention the lack of hitbox deactivation or mercy invincibility. For every frame that a hit is registered, damage will be applied. It is not uncommon for a single attack to do over 100% damage.


 * There are two types of knockback: horizontal and vertical. Horizontal knockback hits the opponent in the direction the attacker is facing, regardless of what they get hit by.
 * If a character fires a projectile and turns around, their opponent will be hit towards them instead of away from them.
 * Vertical knockback hits the opponent upwards if the attacker is below them, or downwards if the attacker is above.
 * This means that any move with vertical knockback can be used to spike opponents if so desired.
 * Knockback is handled by directly overwriting the opponent's horizontal and vertical movement speed, then applying a knockback formula to determine the knockback strength.
 * Horizontal knockback uses a base value of 3 pixels/frame for horizontal speed and 1 pixel/frame for vertical speed, while vertical knockback uses only a base value of 1 pixel/frame for vertical speed. Yes, this would, under normal circumstances, make vertical knockback completely inferior to horizontal knockback.
 * However, vertical knockback does not set a base value for horizontal speed, meaning that whatever value existed there before the character got hit is used instead.
 * Some characters can move as fast as 30 pixels/frame. Can you say, "Instant-kill attack"?
 * Whether a move deals horizontal or vertical knockback depends on whether or not the attack does damage equal to a character's  value. As the name implies, down air attacks use this value, which means that all down air attacks deal vertical knockback, which means that all down air attacks can instakill.
 * Up attacks also use the  value, which means that all up attacks also deal vertical knockback. Which means all up attacks can also instakill.
 * In fact, any attack can instakill if it does the same amount of damage, whether it uses the  attribute or not.


 * Any attack can be cancelled instantly by jumping.
 * Most attacks can be cancelled instantly by turning around.


 * Roll attacks are very interesting.
 * They can be used at any time,  be damned.
 * Their active duration is based on how long it takes for the character to come to a complete stop after using the move.
 * Any attack can be cancelled into a roll attack instantly.
 * However, a roll attack cannot cancel into itself, nor can it be turn-cancelled. The only way to break a roll attack early is by jumping.
 * Cancelling an attack into a roll attack will cause a character to get stuck in their idle animation at some point because the game will get confused and prematurely end the attack due to hitting the . The game still thinks the character is rolling forwards, so it will not allow them to act until they come to a complete stop unless they jump out of it.
 * "Roll attack" is a bit of a misnomer, as all down attacks that give a speed boost are treated as roll attack by the game, including Mario's, Crono's, and even Naruto's down attacks, to name a few.


 * Jump attacks are also interesting.
 * Like roll attacks, jump attacks can be used at any time, because they're literally just regular jumps with hitboxes on them.
 * Jump attacks apply the  attribute to determine how much damage they do. For characters that don't have a jump attack, this value is still applied when they jump, but is set to 0. This will be important for later.
 * When a character exits an attack or hurt state while in the air, the game mistakenly puts them into the jumping state instead of the falling state. Any character that has a hitbox on their jump will apply the damage and knockback of the last move used. Yes, it is possible to instakill an opponent if they drop a combo and get too careless. Yes, this technique can also be used at any time.


 * Projectiles are the only attacks in the game with a definitive startup and endlag. The latter doesn't matter due to turn-cancelling being a thing.
 * All projectiles are transcendent.
 * The only thing that can defeat a projectile is another projectile. This is because only one projectile can exist at any given time, so firing a second one will overwrite the first.
 * If the player throws out an attack while their projectile is active, the projectile's stats will be overwritten by the new attack's. Yes, this includes jumping. Yes, this means a projectile can be given or lose instakill properties.


 * Crouching causes the player to fall through the floor after a brief time if they're standing on a pass-through platform.
 * The game doesn't care if the player is actually crouching either, so it's possible to pass through platforms while using a down attack.
 * Speaking of platforms, getting hit into a floating platform from underneath will instantly stop all momentum and hitstun as the player "lands" on the platform from below.
 * Sliding offstage while crouching will lock the player into their crouching animation until they jump. They cannot move or attack until they do so.


 * You can actually short hop in this game! Just hold down while jumping from the ground. Every character's short hop applies 5 less units of jump force than a regular jump.
 * Speaking of jumping, there is a 15 frame cooldown after jumping before the player is allowed to jump again.
 * Running or getting hit off a platform does not consume a jump, making it possible for characters to have one extra midair jump.


 * Character deceleration is really slow in this game. Most characters have a  value between 17-20 pixels/frame, yet have a   of 1 pixel/frame/frame. This means it takes 17-20 frames to slow to a complete stop.
 * Characters accelerate even slower. Some characters even have a  value of half a pixel/frame.
 * If a character is moving in one direction and attempts to run the opposite way, the game applies a character's  attribute instead of , so it actually takes longer to slow down. This is a major contributing factor of the infamous "ice physics".
 * Despite this, it's actually possible to dash-dance, sorta. Each character has a  attribute, which applies reversed speed to a character if, while running forwards, the player releases the current direction and immediately inputs the opposite direction.
 * Oh, but for player 2, they do not use, but rather apply a fixed value of 8 pixels/frame to their speed, regardless of their character. This is just over half the amount of the lowest   in the game. Have fun sliding around, player 2.


 * Can't mention player 2 getting screwed over without mentioning the game's camera, which only follows player 1, making it next to impossible for player 2 to play the game. This is only half of it, however, as literally the entire game revolves around player 1. Not just the camera, but the stage, platforms, other players, and even the HUD move around based on what player 1 is doing.


 * There are no floaties nor fast-fallers in this game. Every character has a gravity of 1 pixel/frame/frame and a max fall speed of 25 pixels/frame.

<!-- -for characters lacking a roll, holding down while performing a grounded attack will give it the damage and knockback of the down attack, but no attackboost (down augment)

-any move that cancels into falling animation will do 1 frame less of damage than it should for player 1

-player 2 has attack priority on everything --disregard this, it's a crapshoot

-vertical attacks can spike through the stage if they hit a falling opponent with the down hit, but it's frame-perfect and only works within a certain % range; otherwise it deals no knockback but still causes hitstun, allowing more damage than normal at higher %s

-diagonal hitboxes are a MYTH; all hitboxes are straight-up boxes

-for characters with projectiles, using any attack while a projectile is out will give the projectile the damage and knockback of the attack (projectile augment)

-hitboxes extend the hurtbox; the hurtbox is a rect containing all hit/hurtboxes of the frame

-all characters have an aerial pivot of 8

-order of player 1 "turn": --get player input ---up/down/left/right/control (hit)/space (jump) --check for player KO --set alpha (for KO fade), and item handling for some reason --set player/ground location --check if hit by other player ---hit test against player2.player2.attackbox ---hit test against player2.attackbox if either one hits, player 1 goes to hurt --check hurt status ---hitstun timer ticks up by 1 ---hurt state ends if hitstun time period is over --check moving status ---player goes to stand animation if idling --check attack status ---cooldown counter ticks up by 1 ---if a move is input

player 1 turn: getKey       - get player input checkdeath   - check if touching death bounds setalpha     - set transparency checkhit     - check if player 2 hits checkhurt    - check if player 1 is still in hitstun checkifmoving - check if standing still checkattack  - check if player is attacking checkground  - check if landing checkFall    - check if passing through platform player1jump  - update vertical movement watchground  - check if hitting sides/bottom of platform watchground2 - nothing watchground3 - nothing goright      - move right goleft       - move left checkduck    - check if ducking player1slow  - do movement decceleration checkspeed   - check if rolling stops timer        - increment temp timer [update health, points, kills, deaths, suicide, temptimer]

-player 1's attack ends 1 frame early if autocancel --this implies player 1's attack isn't active until frame 2 --however, player 1 will win the exchange if both players attack on the same frame and player 2 misses

-player 1's attack always loses if both moves exchange on frame 1 --this mean's player 1's move can't come out on frame 1 or else player 2 would get hit

player 1 loses if both players attack and hit on the same frame player 1 wins if both attack on the same frame but player 2 misses -player 1's hitboxes don't update until the next frame -player 2 tests with F-1 hitboxes against F-1 hitboxes -player 1 tests with F-2 hitboxes against F-1 hitboxes -->