Sonetto-rs is a Rust implementation of a server emulator (PS) for Reverse: 1999 (PC version). This project exists because there was never a PS for Reverse: 1999, so we built one.
- Quick start
- Requirements
- Features
- Known limitations / Not working (confirmed)
- Bug fixes
- Prebuilt binaries
- Contributing
- Known bugs
- Plans / Roadmap
- Todo
- GM Commands
- Discord
These commands assume a Windows command prompt or PowerShell; adjust paths/commands for Linux/macOS.
- Clone this repository:
git clone https://github.com/Yoshk4e/sonetto-rs.git
cd sonetto-rs-
Install Rust: https://rust-lang.org/tools/install
-
Clone the required data repository and place it where Sonetto-rs can read it:
git clone https://gitlab.com/yoncodes/sonetto-data.git-
Add
excel2jsontosonetto-rs/data/(the project expects anexcel2jsonand astaticfolder in the runtimedatadirectory). -
Build the project:
cargo build --release- The built binaries will be in
target/release/:
sdkservergameserver
Create a data/ folder next to those binaries and copy excel2json and the static/ folder into it.
- Apply the client patch so the game talks to your server:
- Use the sonetto-patch to make the game client compatible.
- Start the servers (open two terminals):
./sdkserver
./gameserver- Login using an email address in the game client (DO NOT USE THE REGISTER BUTTON, if the account doesn't exist it will be created automatically).
- Rust toolchain (nightly)
sonetto-datarepository (game data files)excel2jsonplaced indata/alongsidestatic/- The PC version of Reverse: 1999 (official client), the server is built for the PC client.
- Self-contained: uses SQLite (no external DB hosting required)
- All skins, heroes and psychubes unlocked by default
- Starter currency (3,000,000)
- Battles and auto-battle (basic)
- Battle replay support
- Battle teams: save and load team configurations
- Username changes
- Profile hero selection and psychube assignment
- Background music (BGM / jukebox)
- Gacha functionality (partial, see limitations)
- Ripple & Standard banners
- Main story progression
- Items can be added to inventory
- Consumables now work (can choose psychubes, currency, and portraits)
- Pawnshop works(can buy all items, now gets added to inventory)
- Fragment shop
- Equipment can be locked and unlocked
- Characters can be marked as favorite
- Gacha now reduces currency used and converts when low
- GM commands now added (check friend list)
- Resonance system added (can update/add talent styles)
- Premium shop added (can purchase premium items)
- Shop now resets (daily, weekly and monthly)
- Mail added (can claim rewards)
- Insight items added (level heroes to i3 lvl 1)
- Auto use expired items
- Tower battles
- Trial heroes (buggy: replay/load not saved), not fully implemented
Hero talents aren't persisted or applied correctly- Achievements system
- Tasks / quest systems
- Battle pass
Full currency logic (some gacha/currency flows are incomplete)- Profile picture upload/management
- Real-time battle logic: currently battles may be fast-forwarded/skipped to the end
- Drop rates and reward balancing need comprehensive testing
- Psychube upgrade materials no longer locked by default
- Fixed a bug with 7 day sign rewards (users no longer get double rewards)
- Fixed a bug with mail (users can now claim rewards)
Prebuilt releases are available (thanks to Luotianyi-0712). Check the build repository's Releases page and download the release that matches your client version. Note: compatibility is not guaranteed across every client build, Check the upstream and the date of the build because the build repo syncs with upstream everyday at 2AM UTC.
- Fork this repository.
- Create a feature branch (e.g.
feature/cool-thing). - Make your changes, run
cargo build --releaseand test locally. - Open a pull request against the upstream repository with a clear description of your change and any testing notes.
Please follow existing code style and keep changes focused per PR.
- Ezio moxie display: Ezio sometimes shows an incorrect (very large) moxie value; (its part of the battle mechanics. since we only have bare minimum passives aren't implemented yet)
- Month card daily sign-in sometimes ui pops up twice during sign in
If you encounter other bugs, please open an issue with reproduction steps and relevant logs.
Short-term:
- Fix confirmed broken handlers and persistence bugs
- Implement a proper account & progress management system (replace current hardcoded/maxed defaults)
- Finish
currencygacha logic and balance drops - Improve battle logic to match the official game behavior
- Remove dead / unnecessary code
- Remove unused static/starter data
- Improve documentation and setup instructions
- Use currency, item and equip table for ids
- Here are some example commands
- /currency 1 1000
- /item 140001 1000
- /equip 1000 1
Thanks to the upstream contributors and to Luotianyi-0712 for prebuilt artifacts and CI.
Join our discord

