Eidolon
Member
Hey all, I've been working heavily on a server implementation for Blue Burst in Rust, a relatively new systems language from Mozilla.
IDOLA PSOBB Server Emulator
It is licensed under AGPLv3 (a bit derivative of Sylverant code, though architecturally it's quite a bit different) and works on MacOSX, Linux, and Windows (maybe one of the BSDs as well?). A bug with the low-level IO library I am using causes socket freezing issues on Windows and currently it should only be used for testing.
The server is highly incomplete and under certain circumstances may panic and shutdown (Result values aren't propagated well across parts of the code where error conditions are an unreachable state), but it's very configurable. The current version only has Sqlite3 available as a database backend but the infrastructure allows for hooking in backends for any DB, including flat files (though I don't see a reason since Sqlite3 is much easier to work with).
To build the server on Windows, install 32-bit msys2 and inside a MingW-w64 Win32 shell, run "pacman -S mingw-w64-i686-sqlite3". Then, install the most recent Rust stable build for GNU ABI. Reopen the mingw shell, navigate to the codebase, and run "cargo build". This will download all Rust dependencies and compile them, and may take a few minutes. When it's run, the server will be at "target/debug/idola", it uses a command line interface so run it with --help and look at the "data/default/idola_local.toml" for configuration details.
To enable logging to stderr, set the RUST_LOG environment variable to "info" before running. (RUST_LOG=info target/debug/idola -c data/default/idola_local.toml) Eventually this will be replaced with a logback/log4j-like configuration file.
Use a sqlite3 database editor to create your accounts. The only fields in the "accounts" table you need to set are username and password_hash, the rest can be set to 0 and the server will generate your "bb_guildcard" row for you on connect. You need to sha256sum your password with the template "{username}:{password}:" (with the added colon).
IDOLA PSOBB Server Emulator
It is licensed under AGPLv3 (a bit derivative of Sylverant code, though architecturally it's quite a bit different) and works on MacOSX, Linux, and Windows (maybe one of the BSDs as well?). A bug with the low-level IO library I am using causes socket freezing issues on Windows and currently it should only be used for testing.
The server is highly incomplete and under certain circumstances may panic and shutdown (Result values aren't propagated well across parts of the code where error conditions are an unreachable state), but it's very configurable. The current version only has Sqlite3 available as a database backend but the infrastructure allows for hooking in backends for any DB, including flat files (though I don't see a reason since Sqlite3 is much easier to work with).
- Run any or all of the servers needed by PSOBB in a single process, across multiple processes on one machine, or even across multiple machines. Servers communicate with a central Shipgate server for all database interaction, and eventually a JSON API service will be available to interact with the shipgate as well.
- Can configure ships with as many blocks as desired.
- Fast, native, safely concurrent and (mostly) stable.
- Very easy to compile, only a single non-Rust dependency to install (Sqlite3)
- The BB gameplay loop -- patch, login, ship, block, lobby, party.
- Characters are saved and loaded (incorrect default stats atm)
- Exp gains for all episodes.
- Central shipgate DB server.
To build the server on Windows, install 32-bit msys2 and inside a MingW-w64 Win32 shell, run "pacman -S mingw-w64-i686-sqlite3". Then, install the most recent Rust stable build for GNU ABI. Reopen the mingw shell, navigate to the codebase, and run "cargo build". This will download all Rust dependencies and compile them, and may take a few minutes. When it's run, the server will be at "target/debug/idola", it uses a command line interface so run it with --help and look at the "data/default/idola_local.toml" for configuration details.
To enable logging to stderr, set the RUST_LOG environment variable to "info" before running. (RUST_LOG=info target/debug/idola -c data/default/idola_local.toml) Eventually this will be replaced with a logback/log4j-like configuration file.
Use a sqlite3 database editor to create your accounts. The only fields in the "accounts" table you need to set are username and password_hash, the rest can be set to 0 and the server will generate your "bb_guildcard" row for you on connect. You need to sha256sum your password with the template "{username}:{password}:" (with the added colon).
Last edited: