🐸Slippi DB ingests Slippi replays and puts the data into a SQLite database for easier parsing.

Overview

🐸 Slippi DB

Slippi DB ingests Slippi replays and puts the data into a SQLite database for easier parsing.

The primary goal of this project is to make it easier to analyze large amounts of Slippi data. Its end goal is to create something similar to Ballchasing.com but for Melee.

Written in Rust using Peppi, Slippi DB can parse gigabytes worth of Slippi files in a couple seconds.

Usage

USAGE:
    slippi-db [OPTIONS] ...

ARGS:
    ...    Directories to search for .slp files in

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -o, --output-db     Set output database file [default: slippi.db]

Installation

Releases

The easiest way to install is to download the executable for your system from releases.

Compiling

$ git clone https://github.com/mtimkovich/slippi-db
$ cd slippi-db
$ cargo build --release

🗒️ Examples

There's some examples of what is possible in the examples/ directory. This is good starting point, especially if you're not familiar with SQL. These can be run via:

$ sqlite3 slippi.db < examples/hours_played.sql

If you come up with a cool query, make a PR and I'll add it to the examples!

🚧 Roadmap

  • Write data to SQLite DB.
  • Check the filelist for new files.
  • Save player data.
  • Create more SQL examples.
  • Detect the winner(s).
    • Discard short matches (<30s).
    • Handle tiebreaks.
    • Detect rage-quits and assign them losses.
  • Create releases.
  • Create even more SQL examples.

Bug/Feature Requests

Contributors


Max Timkovich

💻 📖

Fritz

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

You might also like...
Canary - Distributed systems library for making communications through the network easier, while keeping minimalism and flexibility.
Canary - Distributed systems library for making communications through the network easier, while keeping minimalism and flexibility.

Canary Canary is a distributed systems and communications framework, focusing on minimalism, ease of use and performance. Development of Canary utiliz

Scalable and fast data store optimised for time series data such as financial data, events, metrics for real time analysis

OnTimeDB Scalable and fast data store optimised for time series data such as financial data, events, metrics for real time analysis OnTimeDB is a time

Simple and handy btrfs snapshoting tool. Supports unattended snapshots, tracking, restoring, automatic cleanup and more. Backed with SQLite.
Simple and handy btrfs snapshoting tool. Supports unattended snapshots, tracking, restoring, automatic cleanup and more. Backed with SQLite.

Description Simple and handy btrfs snapshoting tool. Supports unattended snapshots, tracking, restoring, automatic cleanup and more. Backed with SQLit

SubZero - a standalone web server that turns your database directly into a REST/GraphQL api

What is this? This is a demo repository for the new subzero codebase implemented in Rust. subZero is a standalone web server that turns your database

🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, SQLite, and MSSQL.

SQLx 🧰 The Rust SQL Toolkit Install | Usage | Docs Built with ❤️ by The LaunchBadge team SQLx is an async, pure Rust† SQL crate featuring compile-tim

A tool for automated migrations for PostgreSQL, SQLite and MySQL.

Models Models is an implementation for a SQL migration management tool. It supports PostgreSQL, MySQL, and SQLite. Quick Start install the CLI by runn

XLite - query Excel (.xlsx, .xls) and Open Document spreadsheets (.ods) as SQLite virtual tables

XLite - query Excel (.xlsx, .xls) and Open Document spreadsheets (.ods) as SQLite virtual tables XLite is a SQLite extension written in Rust. The main

A Rust-based comment server using SQLite and an intuitive REST API.

soudan A Rust-based comment server using SQLite and an intuitive REST API. Soudan is built with simplicity and static sites in mind. CLI usage See sou

A SQLite extension for quickly generating random numbers, booleans, characters, and blobs

sqlite-fastrandom A SQLite extension for quickly generating random numbers, booleans, characters, and blobs. Not cryptographically secure. Based on sq

Comments
  • Add opponent character win rate matrix example query

    Add opponent character win rate matrix example query

    What is the purpose of this PR?

    This PR adds an example query which calculates each of your played character's win rates against every member of the cast, across all games played.

    This query could likely be improved given a bit of optimization but I felt like it was good enough to warrant potential inclusion.

    What is example output of this query?

    +----------------+--------------------+------------+----------------+------------------+------------------+------------------+----------------+------------------+----------------+----------------+----------------+----------------+----------------+--------------+----------------+----------------+----------------+----------------+----------------+----------------+---------------+--------------+---------------+----------------+--------------+-------+--------------+----------------+-------+
    | character      | total_games_played | total_wins | total_win_rate | fox              | falco            | marth            | sheik          | captain_falcon   | jigglypuff     | peach          | pikachu        | yoshi          | samus          | ice_climbers | doctor_mario   | luigi          | mario          | young_link     | ganondorf      | link           | donkey_kong   | mew_two      | roy           | game_and_watch | zelda        | pichu | ness         | bowser         | kirby |
    +----------------+--------------------+------------+----------------+------------------+------------------+------------------+----------------+------------------+----------------+----------------+----------------+----------------+----------------+--------------+----------------+----------------+----------------+----------------+----------------+----------------+---------------+--------------+---------------+----------------+--------------+-------+--------------+----------------+-------+
    | PEACH          | 689                | 452        | 65.6           | 51.91% (95/183)  | 71.74% (132/184) | 70.75% (75/106)  | 25.71% (9/35)  | 73.4% (69/94)    |                |                |                |                | 100.0% (6/6)   |              | 76.92% (10/13) |                |                | 85.71% (6/7)   | 81.82% (9/11)  | 70.0% (7/10)   |               |              |               |                |              |       |              |                |       |
    | LINK           | 1805               | 1030       | 57.06          | 43.32% (107/247) | 58.31% (242/415) | 64.33% (220/342) | 47.92% (23/48) | 57.32% (141/246) | 40.35% (23/57) | 45.61% (26/57) | 57.69% (15/26) | 50.0% (14/28)  | 53.85% (14/26) | 30.0% (3/10) | 37.93% (11/29) | 55.56% (15/27) | 58.82% (20/34) | 90.48% (19/21) | 58.62% (34/58) | 78.38% (29/37) | 63.64% (7/11) | 57.14% (4/7) | 95.0% (19/20) | 77.78% (7/9)   | 66.67% (6/9) |       | 55.56% (5/9) | 86.67% (13/15) |       |
    | MARTH          | 54                 | 28         | 51.85          | 42.11% (8/19)    | 42.86% (3/7)     | 63.64% (7/11)    |                | 50.0% (3/6)      |                |                |                |                |                |              |                |                |                |                |                |                |               |              |               |                |              |       |              |                |       |
    | FALCO          | 1236               | 586        | 47.41          | 33.56% (99/295)  | 46.71% (78/167)  | 61.8% (165/267)  | 44.44% (44/99) | 47.14% (66/140)  | 42.42% (14/33) | 28.57% (10/35) | 25.0% (2/8)    | 57.14% (12/21) | 37.5% (9/24)   | 33.33% (2/6) | 29.63% (8/27)  | 27.78% (5/18)  | 80.0% (12/15)  | 100.0% (11/11) | 60.0% (6/10)   | 70.0% (14/20)  | 83.33% (5/6)  |              | 85.71% (6/7)  | 61.54% (8/13)  |              |       |              |                |       |
    | FOX            | 119                | 52         | 43.7           | 45.83% (11/24)   | 44.83% (13/29)   | 65.22% (15/23)   | 6.25% (1/16)   | 9.09% (1/11)     | 66.67% (6/9)   |                |                |                |                |              |                |                |                |                |                |                |               |              |               |                |              |       |              |                |       |
    | CAPTAIN_FALCON | 30                 | 13         | 43.33          |                  |                  | 28.57% (2/7)     |                | 18.18% (2/11)    |                |                |                |                |                |              |                |                |                |                |                |                |               |              |               |                |              |       |              |                |       |
    | GAME_AND_WATCH | 33                 | 12         | 36.36          |                  |                  | 22.22% (2/9)     |                | 25.0% (2/8)      |                |                |                |                |                |              |                |                |                |                |                |                |               |              |               |                |              |       |              |                |       |
    +----------------+--------------------+------------+----------------+------------------+------------------+------------------+----------------+------------------+----------------+----------------+----------------+----------------+----------------+--------------+----------------+----------------+----------------+----------------+----------------+----------------+---------------+--------------+---------------+----------------+--------------+-------+--------------+----------------+-------+
    
    opened by FritzX6 3
  • Add stage winrate matrix example

    Add stage winrate matrix example

    What is the purpose of this PR?

    This PR adds an example query which calculates each of your played character's win rates on the 5 tournament legal stages, across all games played.

    This query is an adaptation of the character matrix example, it could be improved by requiring the query author to supply only one player code, but it should be serviceable as is.

    What is example output of this query?

    +----------------+--------------------+------------+----------------+------------------+------------------+------------------+-------------------+------------------+
    | character      | total_games_played | total_wins | total_win_rate | battlefield      | dreamland        | yoshis_story     | final_destination | pokemon_stadium  |
    +----------------+--------------------+------------+----------------+------------------+------------------+------------------+-------------------+------------------+
    | PEACH          | 689                | 452        | 65.6           | 71.2% (89/125)   | 69.23% (90/130)  | 54.9% (56/102)   | 66.36% (73/110)   | 66.95% (79/118)  |
    | LINK           | 1805               | 1030       | 57.06          | 56.58% (172/304) | 63.57% (178/280) | 52.41% (163/311) | 56.85% (166/292)  | 55.21% (175/317) |
    | MARTH          | 54                 | 28         | 51.85          | 20.0% (2/10)     | 62.5% (5/8)      | 70.0% (7/10)     | 40.0% (4/10)      | 66.67% (4/6)     |
    | FALCO          | 1236               | 586        | 47.41          | 49.75% (98/197)  | 42.72% (88/206)  | 49.8% (124/249)  | 46.8% (95/203)    | 46.86% (97/207)  |
    | FOX            | 119                | 52         | 43.7           | 26.09% (6/23)    | 56.25% (9/16)    | 50.0% (13/26)    | 57.89% (11/19)    | 25.0% (4/16)     |
    | CAPTAIN_FALCON | 30                 | 13         | 43.33          | 16.67% (1/6)     |                  |                  |                   |                  |
    | GAME_AND_WATCH | 33                 | 12         | 36.36          |                  | 33.33% (2/6)     | 16.67% (1/6)     | 42.86% (3/7)      |                  |
    +----------------+--------------------+------------+----------------+------------------+------------------+------------------+-------------------+------------------+
    
    opened by FritzX6 0
Releases(v0.1.0)
Owner
Max Timkovich
Melee 🍑 Rocket League ⚽ Developer 🧑‍💻 Soul Skater 🛼
Max Timkovich
Command-line tool to convert Apple HealthKit data to a SQLite database.

healthkit-to-sqlite Command-line tool to convert Apple HealthKit data to a SQLite database. Getting Started Open the Health app on your iOS device. Cl

Justin Shrake 3 Jan 7, 2023
A Distributed SQL Database - Building the Database in the Public to Learn Database Internals

Table of Contents Overview Usage TODO MVCC in entangleDB SQL Query Execution in entangleDB entangleDB Raft Consensus Engine What I am trying to build

Sarthak Dalabehera 38 Jan 2, 2024
postgres-ical - a PostgreSQL extension that adds features related to parsing RFC-5545 « iCalendar » data from within a PostgreSQL database

postgres-ical - a PostgreSQL extension that adds features related to parsing RFC-5545 « iCalendar » data from within a PostgreSQL database

Edgar Onghena 1 Feb 23, 2022
Grsql is a great tool to allow you set up your remote sqlite database as service and CRUD(create/read/update/delete) it using gRPC.

Grsql is a great tool to allow you set up your remote sqlite database as service and CRUD (create/ read/ update/ delete) it using gRPC. Why Create Thi

Bruce Yuan 33 Dec 16, 2022
cogo rust coroutine database driver (Mysql,Postgres,Sqlite)

cdbc Coroutine Database driver Connectivity.based on cogo High concurrency,based on coroutine No Future<'q,Output=*>,No async fn, No .await , no Poll*

co-rs 10 Nov 13, 2022
webmention-receiver - a simple program that receives webmentions, records them to a SQLite database

webmention-receiver is a simple program that receives webmentions, records them to a SQLite database, and allows viewing them via a webpage or RSS feed. It has no conception of an "account", and by default will accept webmentions for any domain. It is possible to configure it to only accept webmentions for a specific set of domains, if you'd prefer.

Wesley Aptekar-Cassels 11 Sep 3, 2022
Using embedded database modeled off SQLite - in Rust

Rust-SQLite (SQLRite) Rust-SQLite, aka SQLRite , is a simple embedded database modeled off SQLite, but developed with Rust. The goal is get a better u

Hand of Midas 3 May 19, 2023
Persist EWW histories into SQLite

EWW History Extension Persist EWW histories into SQLite. Besides EWW, packages below are also supported: elfeed Welcome to open an issue if you have a

null 5 Sep 23, 2022
SQLite compiled to WASM with pluggable data storage

wasm-sqlite SQLite compiled to WASM with pluggable data storage. Useful to save SQLite in e.g. Cloudflare Durable Objects (example: https://github.com

Markus Ast 36 Dec 7, 2022
Efficient and fast querying and parsing of GTDB's data

xgt xgt is a Rust tool that enables efficient querying and parsing of the GTDB database. xgt consists of a collection of commands mirroring the GTDB A

Anicet Ebou 7 Apr 1, 2023