Skip to content

Project Structure

Walnut edited this page Feb 27, 2024 · 2 revisions

slp_parse

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

Feature Flags

Flag Desc
polars Adds functions to convert many of the container types to DataFrames

Major Landmarks

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.

Clone this wiki locally