Private server for Dragalia Lost, that runs entirely on device and offline.
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| .idea | ||
| .vscode | ||
| baker | ||
| data | ||
| omnicite | ||
| omnicite_android_app | ||
| omnicite_baked | ||
| omnicite_embed | ||
| omnicite_gui_server | ||
| omnicite_headless | ||
| omnicite_http | ||
| omnicite_msgpack | ||
| omnicite_msgpack_derive | ||
| omnicite_patch | ||
| omnicite_rotating | ||
| omnicite_types | ||
| omnicite_uniffi | ||
| router | ||
| router_macros | ||
| uniffi-bindgen | ||
| .dockerignore | ||
| .gitignore | ||
| about.hbs | ||
| about.toml | ||
| baker.watch | ||
| Cargo.lock | ||
| Cargo.toml | ||
| deny.toml | ||
| gui-server.watch | ||
| LICENSE | ||
| logo.png | ||
| logo.svg | ||
| README.md | ||
| Taskfile.yml | ||
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.
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)
- Windows/Linux/macOS (For development)
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.
TODOS:
- Make the code less garbage
- Custom assetbundles + CDN
- Finish implementing routes
Installation (Separate App)
Requirements
- Android SDK 35+
- Android NDK 29+
- Latest Rust stable
- Rust targets aarch64-linux-android armv7-linux-androideabi x86_64-linux-android
- cargo-ndk (install with
cargo install cargo-ndk) - Task
- Java 17+ (OpenJDK is recommended)
Steps
Installing the android app
- Run
task androidto build the project. The unsigned apk will be located inomnicite_android_app/app/build/outputs/apk/release/app-release-unsigned.apk. - Sign the apk with whatever method you prefer.
- Install the apk on your device.
Patching the original game
- 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!
Installation (Embedded Server) (Beta)
Requirements
Same as above
Steps
- Running
task patchwill generate two patched apksout/omnicite-32.apkandout/omnicite-64.apk. These are the patched apks that contain the server embedded within it. There is no need to patch, and the app will not conflict with the patched game. (It doesn't have the same package name). - Sign and install the apk for your device. (32 bit for armeabi-v7a, 64 bit for arm64-v8a)
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.