-
Notifications
You must be signed in to change notification settings - Fork 0
Project Structure
This crate contains a parser capable of handling 1v1 replays. Game
objects are notably different from other parsers, as they rely on a "player-centric" view, rather than the "game-centric" view that the data is originally organized in. Data is also stored in a columnar format for performance purposes. That means instead of accessing a character's ActionState
via game.frames[i].ports[p].leader.post.state
, you'd access it via game.players[p].frames.post.state[i]
. Nana frames are accessible through player.nana_frames
.
- Worth noting that parsed frame data objects store their values almost entirely as raw numbers. For enum reprs for things like Action States and Items, see ssbm_utils
Flag | Desc |
---|---|
polars |
Adds functions to convert many of the container types to DataFrames |
lib.rs
- Contains several bare functions to process bulk replays
game.rs
- Main file for the Game
and GameStub
container functionality, including the GameMetadata
trait which allows generic access to .slp metadata fields. GameStub
objects skip parsing frame data, and do not read the entire .slp file into memory, saving on both CPU and disk time. The parsing logic is handled in parse.rs
parse.rs
- Contains .slp -> Game
impl, dispatches to events
events
- Contains the in-memory models for each of the slippi event types. PreFrames
and PostFrames
are stored in columnar format and can be accessed row-wise via get_row()
and the PreRow
and PostRow
struct.
frames.rs
& stats.rs
- Containers for the various types of frame and stats objects
stats
- Contains individual stat-type finders/structs (e.g. WavedashStats, TechStats, Combos)
player
- Contains the in-memory Player model, which holds the metadata, frame data, and stats for each port.
ssbm_utils (docs)
This is a general purpose crate, meant to operate on raw values from SSBM. It contains functions useful for replicating in-game behavior, as well as enums for many common melee types including Action States and per-stage Ground IDs. The enums are kept up to date with info via the SSBM Decomp. As such, these enums should be complete.