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.6. 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 in-progress games, e.g. for in-progress games.
Event-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.event 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.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8494499d74dd0910fe55ec2f83c1154071404c77e9431cc97a9b8e0d2eca6308 |
|
MD5 | 9a931a5d60b600ce5d090abd8a68ec3c |
|
BLAKE2b-256 | d240d7d8c519fc3d37e487e04ed5a9171da4d518845ba8898ce91166b9a7e44c |