.onedev-buildspec.yml Loading last commit info...
.config
.crow
.idea
.vscode
DragaliaManifests
baker
data
nix
omnicite
omnicite_android_app
omnicite_assetbundle
omnicite_assetbundle_helper
omnicite_baked
omnicite_databin
omnicite_databin_builder
omnicite_embed
omnicite_gui_server
omnicite_headless
omnicite_http
omnicite_msgpack
omnicite_msgpack_derive
omnicite_patch
omnicite_registry
omnicite_rotating
omnicite_types
omnicite_uniffi
router
router_macros
uniffi-bindgen
workspace-hack
.dockerignore
.envrc
.gitignore
.gitmodules
Cargo.lock
Cargo.toml
LICENSE
README.md
Taskfile.yml
about.hbs
about.toml
baker.watch
data.bin
deny.toml
flake.lock
flake.nix
gui-server.watch
logo.png
logo.svg
README.md

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.

Warning

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-command enabled

Flake packages

  • default: Builds everything
  • standalone: Builds the standalone server app
  • embedded64: Builds & patches the embedded server for aarch64
  • embedded32: Builds & patches the embedded server server for armv7

Patching the original game for standalone

  1. Start Omnicite2 in the app. (The server must be running during the patching process.)
  2. Follow the instructions here to setup DragaliaPatch correctly. (DON'T PATCH YET!)
  3. Patch with the URL http://localhost:3030
  4. Wait for the patch to complete.
  5. 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_baked crate. Run with task 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.
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover