• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Project Knockback simulator [Alpha]

Gentlefox

Smash Cadet
Joined
Dec 6, 2013
Messages
47
I got sick of not being able to visualize knockback when looking at hitbox values, so I made this.

Right now it's in super alpha, so don't expect much. There is almost zero exception handling, the UI blows, and a lot of stuff doesn't work (see TODO list below).

Instructions should be fairly obvious. A few caveats to remember though: no Sakurai angle yet, it is assumed you are attacking from the left, the calculation stops after hitstun ends (even though real knockback doesn't), position is based on the little white '+' below your ECB, and all fields must be filled (with 0 if need be)

If you want to see raw data, open your browser's dev console. An array of frame positions and velocities should be logged to it after each calculation. They are in the form [x position, y position, x velocity, y velocity].

If you don't know where to find hitbox values, here is a sample hitbox:

Fox U-smash: Damage 18, Growth: 112, Base: 30, Angle: 80

Live version: https://ddhuet.github.io/KBSimulator/

Github page: https://github.com/Ddhuet/KBSimulator

Tested in Chrome and Firefox only. Requires Javascript and Canvas support.

Massive thanks to: Kadano for answering my questions, Magus for the Input Display mod, and StrongBad for the knockback spreadsheet
TODO:

  • Support for the Sakurai angle [Done]
  • Allow TDI input, and calculate it into the final result. I'm not too familiar with the exact algorithm that occurs here, so please pipe up if you know it.
  • Add the other stages. (I have the images, I just need to calculate the offsets and such)
  • Allow crouch cancels
  • Get higher resolution/more accurate stage pictures. I did my best, but they are low-res and I feel like I'm missing something when it comes to accuracy.
  • Have an attack list where you can move frame by frame through attacks, and select any of the hitboxes on any given frame to automatically input their value. This is a HUGE undertaking, and I will need help with this. I can create a tool that makes inputting values and tracing the hitboxes easy, but an automated way to do this would be a lifesaver.
  • Support charging smashes
  • An actual UI that follows standards and such.
  • Exception handling
  • Unit tests
  • Draw little circles at the character's position each frame to show the timeline.
  • Display additional information that is already calculated. Frames of hitstun, position each frame, etc.
  • Start using a UI library so I can implement mouse hovering, clicks, etc. Will probably use Crafty.
  • Portraits for characters.
  • Allow position values other than 0, 0.
  • Add character models that can be displayed at any frame of knockback.
  • Let position be based on something other than the little '+' below your ECB. This may prove difficult, but I would much prefer the actual bottom of the ECB.
  • Stage resizing / positioning (resizing should be easy because of how the math is done)
  • Add VI support
  • Add move staling
  • Weight dependent knockback support
 
Last edited:

Yeroc

Theory Coder
BRoomer
Joined
Feb 28, 2004
Messages
3,273
Location
In a world of my own devising

Gentlefox

Smash Cadet
Joined
Dec 6, 2013
Messages
47
Oh god, just realized I used the wrong algorithm for the final frame of gravity's effect. Will fix as soon as I get back home. Also realized that while technically correct, the console.log values can sometimes use scientific notation which makes them really annoying to read. Like 6.12e-17 instead of .00000004.

Edit: Fixerino'd. (The gravity thing, not the scientific notation thing)
 
Last edited:

oksas

oak-sauce
Joined
Apr 12, 2011
Messages
458
very cool :) might be worth adding

type="number"

to the input elements to make them only accept numbers
 
Top Bottom