Skip to content
Walnut edited this page Apr 28, 2023 · 8 revisions

Overview

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.

Features

  • 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

image

  • Effortless conversion to Pandas/Polars DataFrames

Differences from Py-Slippi

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

Known issues/limitations

  • Stats/combo generation support only games with 2 players. Doubles stats/combos are not supported.
Clone this wiki locally