pip install slippistats
- Coming soon: Most of the codebase will be ported over to rust, with a thin wrapper allowing processing from python via polars DataFrames. See this repo to track progress. Early testing indicates that parsing replays and stats through rust will cut processing time from ~1-2 seconds/replay to ~25-35ms per replay on my PC. Rust's multithreading also allows for much faster bulk processing, chewing through 1k replays in about 6 seconds, vs several minutes for python.
Also check out StatsExamples jupyter notebooks, which contain some example stat generations from ~1400 of my own replays.
SlippiStats is a Python parser for .slp game replay files for Super Smash Brothers Melee for the Nintendo GameCube. These replays are generated by Jas Laferriere's Project Slippi, which runs on a Wii or the Dolphin emulator.
SlippiStats is a library for slippi replay parsing and automatic stat/combo generation. It is based heavily on both slippi-js and py-slippi, though with some modifications.
The goal of SlippiStats is to provide a set of more useful, accurate, and detailed statistics than what slippi-js currently offers. The stats are targeted towards competitive players, with a notable absence of some "novelty" stats like APM. The output integrates easily with existing data science libraries and can provide indications for where a player should improve, as well as tracking that improvement over time.
-
Combo generation with an enhanced algorithm and togglable criteria (with clippi/dolphin-compatible json output)
-
Stat generation with useful, high detail fields
-
~70-90% faster replay parsing compared to py-slippi
- Effortless conversion to Pandas/Polars DataFrames
SlippiStats originated as a fork of py-slippi, which was meant to be merged in at some point. Unfortunately, the scope increased a lot, the dev behind py-slippi has shifted focus from python to rust's Peppi parser, and the changes required to make stats work resulted in more and more breaking changes from py-slippi's existing framework. Thus the decision was made to make this its own project. Below are some of the major changes:
-
Support for all slippi replay features through version 3.14.0
-
Minimum python version 3.7 -> 3.10
-
Live parsing is no longer supported
-
All slippi file metrics are present in the output regardless of adjacent stats (e.g.
hitstun
->misc_timer
, no longer requires hitstun bitflag to populate) -
More robust enums including character-specific states and ground ID's for tournament legal stages.
-
Many variables renamed to keep consistency with community and/or slippi file spec (e.g.
damage
->percent
) -
Some class structures have been flattened (e.g.
slippi.version
->slippi_version
,metadata.player[i].netplay.code
->metadata.player[i].connect_code
) -
Parsing code has been heavily modified to maximize speed
-
Additional dependencies for data processing support
- Stats/combo generation support only games with 2 players. Doubles stats/combos are not supported.