Code Monkey home page Code Monkey logo

meleeframedataextractor's Introduction

meleeFrameDataExtractor

meleeFrameDataExtractor is a program that utilizes meleeDat2Json, which dumps Super Smash Bros. Melee character files to JSON. The subactions/scrips that belong to character attack states are then parsed by this program to produce frame data, which previously had to be determined manually (by community assets such as superdoodleman). This enables us to go into significantly more detail (i.e. include every single hitbox of a move) and do postprocessing on the data as well. The framedata is generated as JSON for easier inclusion in other projects (like websites, etc.), but an additional script is provided to produce text output from those JSON files, that very similar to the frame data on superdoodleman's website.

Usage

To use meleeFrameDataExtractor, you need Python 3, then navigate to the root of the repository and call:

python generateFrameData.py --help

To see help on the arguments. The default subactions included in the framedata JSON file only include jabs, tilts, grabs, throws, etc., but not specials! If you know the subaction ids you can pass them to the program, but they are not included automatically.

By default the "functionally equivalent" hitboxes are grouped and given a name. Functional equivalency is determined by having the same post-hit effect and hitting the same targets. If you want to see all hitboxes fully instead, without them being pre-grouped by the program, pass --fullhitboxes.

If you want to print the framedata to console (in a format you are probably more familiar with), just call:

python prettyPrint.py <Character>.framedata.json <movename>

Framedata Dumps

Most people don't have to generate the framedata dumps themselves and can just use the ones I prepared:

You can also look at the text files I generated with prettyPrint.py, which should look somewhat like superdoodleman's framedata:

The data generated with this tool is included in a website made by me that presents it in a more accessible manner and uses the hitbox grouping information to produce pages and gfycats like here: Samus - Dash Attack or Samus - Neutral Air

ToDo

  • Extend specialSubactions.py to include proper special names for all characters. This is something people without programming experience can help really well with too. So if you care about proper special names for your character, feel free to add them!
  • Process events 0x74 and 0x78 that modify jab follow up state and include data about when jab followups are possible into framedata JSON files.
  • Process events 0x68, 0x6C and 0x70 that modify bone/body collision state and include invincibility data into framedata JSON files.
  • Process the 0xCC (self damage) event and include that data in the framedata file.
  • Find out if it is possible to determine which projectile is shot by the 0x60 event. It seems the event is alway 60 00 00 00 and some characters even use other events to shoot projectiles.
  • Handle multiple throw (0) commands somehow. So far I ignore too many throw (1, release) commands, because they occur in grabs and sometimes in specials that grab and throw. But for subactions with multiple throw (0) commands, all further throw (0) commands are just ignored. Bowser's SpecialAirSEndF is the only subaction that has multiple throw (0). They occur in this order: throw(0), throw (1), throw (0), throw (1). The first throw(0) has 11 damage and is on frame 1 the second has 10 damage and is on frame 35. If you just side-B someone in air and do nothing Bowser bites the grabbed character (4 damage). If you throw after the bite, you do 14 damage in total. If you throw before the bite you do 11. So maybe one of them is the throw if you do it immediately and one is if you do it after the bite.

Commands to figure out if they are relevant

Common:

  • 0x7C ("modelState"?)
  • 0x8C ("heldItemInvisibility"?)
  • 0x90 ("bodyArticleInvisibility"?)
  • 0xC8 ("enableRagdollPhysics"?)
  • 0xE9 (wind effect?)

Specials:

  • 0x38 ("hitboxSetFlags"?)
  • 0x64
  • 0x54
  • 0xDC ("landingSfxAndGfx"?)
  • 0x20 (loops some animation?)
  • 0xD4 (Kirby has these)
  • 0x9C (Ness has these)

meleeframedataextractor's People

Contributors

pfirsich avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.