slc_oxide

Crates.ioslc_oxide
lib.rsslc_oxide
version0.2.0
created_at2025-03-26 21:59:22.266548+00
updated_at2025-11-25 07:53:12.322013+00
descriptionA tiny and fast replay format for Geometry Dash
homepage
repositoryhttps://github.com/silicate-bot/slc_oxide
max_upload_size
id1607204
size138,238
peony (peonii)

documentation

README

slc replay format

A tiny and incredibly fast replay format for Geometry Dash.

Requires Rust nightly, at least version 1.87.0.

Documentation

For documentation, please refer to the original slc repo.

Example

Loading a Replay

use slc_oxide::{Replay, Meta};
use std::fs::File;
use std::io::BufReader;

// Load any replay file - automatically detects slc version
let file = File::open("replay.slc")?;
let mut reader = BufReader::new(file);
let replay = Replay::<()>::read(&mut reader)?;

println!("TPS: {}", replay.tps);
println!("Input count: {}", replay.inputs.len());

Creating and Saving a Replay

use slc_oxide::{Replay, InputData, PlayerInput};
use std::fs::File;
use std::io::BufWriter;

struct ReplayMeta {
  pub seed: u64
}

let mut replay = Replay::<ReplayMeta>::new(
  240.0, 
  ReplayMeta { 
    seed: 1234 
  }
);

// OR

let mut replay = Replay::<()>::new(240.0, ());

replay.add_input(200, InputData::Player(PlayerInput {
  button: 1,
  hold: true,
  player_2: false
}));

// Other input types
replay.add_input(400, InputData::Death);
replay.add_input(600, InputData::TPS(480.0));

// Save the replay in v2 format (default)
let file = File::create("replay_v2.slc")?;
let mut bw = BufWriter::new(file);
replay.write(&mut bw)?;

// Or save in v3 format
let file = File::create("replay_v3.slc")?;
let mut bw = BufWriter::new(file);
replay.write_v3(&mut bw)?;
Commit count: 5

cargo fmt