Parsing library for SSBM replay files
Project description
Py-slippi 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 Slippi recording code, which runs on a Wii or the Dolphin emulator.
Installation
Requires Python >= 3.7. To install, run the following command (optionally inside a virtual environment):
pip install py-slippi
API Docs
See the Module Index for detailed API docs, starting with slippi.game.
Usage
py-slippi supports both event-based and object-based parsing. Object-based parsing is generally easier, but event-based parsing is more efficient and supports reading partial or in-progress games.
Object-based parsing:
>>> from slippi import Game >>> Game('test/replays/game.slp') Game( end=End( lras_initiator=None, method=Method.CONCLUSIVE), frames=[...](5209), metadata=Metadata( console_name=None, date=2018-06-22 07:52:59+00:00, duration=5209, platform=Platform.DOLPHIN, players=( Player( characters={InGameCharacter.MARTH: 5209}, netplay_name=None), Player( characters={InGameCharacter.FOX: 5209}, netplay_name=None), None, None)), start=Start( is_frozen_ps=None, is_pal=None, is_teams=False, players=( Player( character=CSSCharacter.MARTH, costume=3, stocks=4, tag=, team=None, type=Type.HUMAN, ucf=UCF( dash_back=DashBack.OFF, shield_drop=ShieldDrop.OFF)), Player( character=CSSCharacter.FOX, costume=0, stocks=4, tag=, team=None, type=Type.CPU, ucf=UCF( dash_back=DashBack.OFF, shield_drop=ShieldDrop.OFF)), None, None), random_seed=3803194226, slippi=Slippi( version=1.0.0), stage=Stage.YOSHIS_STORY))
Frame data is elided when you print games, but you can inspect a sample frame with e.g. game.frames[0]
.
Event-driven API:
>>> from slippi.parse import parse >>> from slippi.parse import ParseEvent >>> handlers = {ParseEvent.METADATA: print} >>> parse('test/replays/game.slp', handlers) Metadata( console_name=None, date=2018-06-22 07:52:59+00:00, duration=5209, platform=Platform.DOLPHIN, players=( Player( characters={InGameCharacter.MARTH: 5209}, netplay_name=None), Player( characters={InGameCharacter.FOX: 5209}, netplay_name=None), None, None))
👉 You can pass a stream to parse
, such as sys.stdin.buffer
! This is useful for e.g. decompressing with gunzip
, or reading from an in-progress replay via tail -c+1 -f
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for py_slippi-1.6.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a77aa6f890294757231b5c231a0cca232f482b83774a182954b738a1c2397988 |
|
MD5 | 518ce8eb2daed7c8a50b4f8b740acbbc |
|
BLAKE2b-256 | 0f1e76afdc2c49d24934aafc01c8cd253e60f67cf77d8b29d755a4858c747c6b |