Omnicite2
Omnicite2 (or just Omnicite) is a private server for the EOS gacha game Dragalia Lost. It is designed to run on device, either as a standalone app, or embedded within the main game.
This software is barely maintained. I have bursts of motivation every couple of months, probably. Maybe. It's in a usable enough state.
Acknowledgements
This project would not be possible without the great work of everyone involved with Dragalia Lost Revived. This project is based on both Orchis and Dawnshard.
Supported platforms:
- Android (arm64-v8a, armeabi-v7a, x86_64)
- Linux (For development) (windows/mac may work, but no support)
Features
- Runs entirely offline and on-device: No internet connection is required to play. All implemented features are available offline. (Except the 3 comics.)
- Rotating banners: A new rate up banner every week! (Not that it matters, since the static banners allow you to obtain every character)
- Can be embedded directly within the DL app: The server can be embedded within the app, making the experience seamless. (And you don't have to patch!)
Downsides
- No online features: Omnicite2 does not support any online features, such as co-op, guilds, or friends.
- Manually building requires Nix
- Some large features are not currently implemented
- Very opinionated, will not be 100% accurate to the original game (its my server, i make the rules.)
TODOS (in order of priority):
- Replace the baked structs & the baker with master asset data read from data.bin & other things
- Master Asset Data
- Replace Static Routes with a proc-macro (i love proc macros! yay!)
- Banners (???)
- Mod support with master asset generation
- Finish implementing routes
- Make the code less garbage
Downloading prebuilt apks
You can find pre-built unsigned apks in CI artifacts. Standalone is not currently built in ci because gradle :(
Building & Usage
Requirements
- Nix
- Nix expiremental features
flakes&nix-commandenabled
Flake packages
default: Builds everythingstandalone: Builds the standalone server appembedded64: Builds & patches the embedded server for aarch64embedded32: Builds & patches the embedded server server for armv7
Patching the original game for standalone
- Start Omnicite2 in the app. (The server must be running during the patching process.)
- Follow the instructions here to setup DragaliaPatch correctly. (DON'T PATCH YET!)
- Patch with the URL
http://localhost:3030 - Wait for the patch to complete.
- Install, and enjoy!
Development
When developing in an android emulator, patch with the url http://10.0.2.2:3030 instead of http://localhost:3030, then use task run or task run-headless to run the server on the host machine (for easier development).
Crate explanations:
- baker: Used to generate the source files in the
omnicite_bakedcrate. Run withtask bake - omnicite: The main library, contains all server logic.
- omnicite_baked: Contains all the baked data, such as characters, dragons, etc.
- omnicite_embed: Embedded server.
- omnicite_gui_server: A gui server, for dev and debugging
- omnicite_headless: A headless server, for dev and debugging
- omnicite_http: Contains http types and logic.
- omnicite_msgpack: Contains messagepack serialization and deserialization logic.
- onnicite_msgpack_derive: Contains derive macros for messagepack serialization and deserialization.
- omnicite_rotating: Contains rotating logic, for things such as banners (and maybe events in the future).
- omnicite_patch: Patcher program to patch the original game with the embedded server.
- omnicite_types: Contains types shared by all of the crates.
- omnicite_uniffi: Contains the uniffi bindings for the omnicite crate.
- router: Contains an implementation of a http router.
- router_macros: Proc macro for creating routers.