Xodus

The great gaming migration to Linux

Discord

> [!CAUTION] > This is an unofficial project - use at your own risk. It is not affiliated with, endorsed by, or sponsored by Microsoft or XBOX; all trademarks, product names, and company names or logos mentioned herein are the property of their respective owners. > This is the *only official* repository of Xodus. We are not affiliated with any other projects using our name or repository. ## Current state of the project The project can now login, download packages and obtain licenses for games. These parts are still quite scattered around. - [x] Device login - [x] User login - [x] XBOX authorization - [x] MSIXVC download - [x] On-demand .exe decryption [#50](https://github.com/xodus-gaming/xodus/issues/50) - [ ] MSIXVC2 support [#53](https://github.com/xodus-gaming/xodus/issues/53) ## FAQ **Q: What is Xodus** Xodus aims to bring XBOX PC games to Linux and possibly Mac devices. **Q: When can I play my Minecraft Bedrock?** While Xodus is quickly maturing, there is still a lot of work to support it from Wine standpoint to provide necessary XBOX Services to games. _TL;DR_ soontm **Q: How to get involved?** Start by joining our Discord or review any open GitHub issues . **Q: What games will be supported?** We hope to manage to support most of the catalog, the limitation is the game has to be GDK and in MSIXVC format. So far `Gears of War 4` is a prominent unsupported title for the time being. **Q: Will XBOX Backward Compatibility on PC work?** While Xodus is capable of downloading and running those titles. It's possible these games will work only after additional patches to wine, dxvk or vkd3d-proton. ## Building The project structure is as follows. ``` . ├── msixvc - [rlib] common rlib crate for utilities for parsing MSIXVC and XSP files ├── xodus - [rlib] common rlib crate that contains core xodus functionality, API calls abstractions and utilities ├── xodus-cli - [bin] CLI currently used for iterating over new xodus features └── xodus-service - [bin] service process exposing a xodus.sock for IPC communication, it takes care of xgameruntime.dll integration. ``` > [!NOTE] > xodus-service aims to become a main point of integration. All xodus clients will connect to it to interact with games and XBOX services. ### Prerequisites - Rust version 1.98 or later - Right now CLI relies on wry and tao to show a login page. Consult https://docs.rs/wry/latest/wry/#platform-considerations - xodus-service relies on `protoc` to compile `proto/` definitions make sure to install it for your platform ### Running Building all crates in release mode ```bash cargo build --release --workspace ``` Running cli in debug ``` cargo run -- --help ``` Running xodus-service in debug ``` cargo run --bin xodus-service ``` Debug and profile `xodus-cli` or `xodus-service` with [tokio-console](https://github.com/tokio-rs/console) ``` RUSTFLAGS="--cfg tokio_unstable" cargo run --features tokio_console ``` > [!WARNING] > For better performance when decrypting MSIXVC files, the `aes` and `ssse3` features are enabled on `x86_64`, > and the `aes` feature is enabled on `aarch64`. This means that the program will crash with an illegal instruction > error when running on a CPU which doesn't support those instructions. > > See https://en.wikipedia.org/wiki/AES_instruction_set for a list of compatible CPUs (every processor from > 2011 onwards should be supported). ### CLI Usage ``` Usage: xodus-cli Commands: download Download msixvc or xsp files for a given game license Dump CIKs for use with XvdTool extract Extract locally stored msixvc file login streaming Download and extract the game through streaming algorithm clep Generate or decrypt base64-encoded CLEP challenge data sp-license Decode SPLicenseBlock help Print this message or the help of the given subcommand(s) Options: -h, --help Print help -V, --version Print version ``` ## Special Thanks - [XvdTool.Streaming](https://github.com/LukeFZ/XvdTool.Streaming) and [CikExtractor](https://github.com/LukeFZ/CikExtractor) by LukeFZ