Metadata-Version: 2.1
Name: slippistats
Version: 0.1.0
Summary: Stats library for SSBM replay files
Home-page: https://github.com/Walnut356/py-slippi-stats
Author: Walnut
Author-email: Walnut356 <walnut356@gmail.com>
License: MIT License
        
        Copyright (c) 2018 melkor
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: py-ubjson (~=0.16)
Requires-Dist: tzlocal (~=4.3)
Requires-Dist: polars (~=0.17.9)

# SlippiStats

Please refer to the [wiki](https://github.com/Walnut356/SlippiStats/wiki) for quick start and API reference. Also check out [StatsExamples](https://github.com/Walnut356/SlippiStats/tree/main/StatsExamples) jupyter notebooks, which contain some example stat generations from ~1400 of my own replays.

SlippiStats is a Python parser for [.slp](https://github.com/project-slippi/slippi-wiki/blob/master/SPEC.md) game replay files for [Super Smash Brothers Melee](https://en.wikipedia.org/wiki/Super_Smash_Bros._Melee) for the Nintendo GameCube. These replays are generated by Jas Laferriere's [Project Slippi](https://github.com/JLaferri/project-slippi), which runs on a Wii or the [Dolphin](https://dolphin-emu.org/) emulator.

## 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](https://user-images.githubusercontent.com/39544927/234795192-cb72149d-4d07-4d11-b8d5-46d74b143bab.png)


* Effortless conversion to Pandas/Polars DataFrames


## Differences from Py-Slippi

SlippiStats originated as a [fork of py-slippi](https://github.com/Walnut356/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.


