Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Alembic is a cross-platform GUI and CLI Asheron’s Call launcher supporting both Decal and my own minimal Decal reimplementation.

Features

  • Desktop GUI written in egui
    • Complete Servers and Accounts management UI
    • Shows ingame chat
    • Shows game client network activity
    • Cross-platform support (fully works on Windows)
  • CLI for launching and injecting from the command line
  • Settings system for persisting configuration
  • RPC system for communicating between the game client and the GUI/CLI
  • Client Hooks
    • Chat hooks
    • Networking hooks
  • NSIS-based installer

Current Status

ComponentWindowsLinuxmacOS
CLI Launching
CLI Decal
CLI Alembic
Desktop Launching
Desktop Decal
Desktop Alembic

See the Alembic Walkthrough for a video overview.

Architecture

Alembic is managed as a single Cargo Workspace with six crates:

  • cli - Command-line interface (native architecture)
  • desktop - Cross-platform egui desktop application (native architecture)
  • tui - Terminal UI (native architecture)
  • cork - DLL injector utility (32-bit Windows only)
  • dll - The injectable DLL (32-bit Windows only)
  • libalembic - Common and shared functionality

This section covers the architecture and design of each component.

CLI

The CLI crate provides command-line interface for launching game clients and injecting.

Features

  • Launch Asheron’s Call game client
  • Inject Alembic DLL
  • Configure accounts and servers
  • Interact with the game via command line

Usage

See the Building section for instructions on how to build and run the CLI.

Desktop

The desktop crate provides a cross-platform GUI application written in egui.

Features

  • Complete Servers and Accounts management UI
  • Live chat display
  • Network activity monitoring
  • Launching and injecting game clients

Technology

  • egui - Immediate mode GUI library
  • Cross-platform - Supports Windows, Linux, and macOS

Platform Status

  • Windows - Fully functional
  • Linux - Launching works
  • macOS - Launching works

DLL

The DLL crate is the injectable DLL that hooks into the Asheron’s Call client.

Technologies

Features

  • Hooks Asheron’s Call client functions
  • Chat interception
  • Network packet capture
  • In-game UI rendering

Platform

  • ⚠️ Windows only - Builds as 32-bit (i686-pc-windows-msvc)

libalembic

The libalembic crate contains common and shared functionality used across all components.

Key Components

  • RPC System - Communication between game client and GUI/CLI

    • Built on tarpc
    • JSON-based message transport
    • TCP networking
  • Settings System - Persistent configuration management

    • Accounts and servers configuration
    • User preferences
  • Networking - Network packet handling

    • Capture and filtering
    • Message parsing (work in progress)

Architecture

The shared library abstracts common concerns so other crates can focus on their specific domain (CLI, Desktop, DLL injection).

Building

Prerequisites

This project is written in Rust.

Windows

Install the 32-bit MSVC target:

rustup target add i686-pc-windows-msvc

Linux

Install MinGW toolchain for cross-compiling Windows binaries:

# Debian/Ubuntu
sudo apt-get install gcc-mingw-w64-i686

# Add the Rust target
rustup target add i686-pc-windows-gnu

All Platforms

Install cargo-make for the build system:

cargo install cargo-make

Build Instructions

Quick Start

Use cargo-make to build everything:

# Build all components (32-bit and native)
cargo make build

# Run the desktop app
cargo run --bin desktop

The build task automatically:

  1. Builds cork and dll for 32-bit Windows (i686-pc-windows-msvc)
  2. Builds desktop and cli for your native architecture

Manual Build

If you prefer to build manually:

# Build 32-bit components first
cargo build --target i686-pc-windows-msvc -p cork -p dll

# Then build native components
cargo build -p desktop -p cli

Build Artifacts

Build artifacts are placed in the target/ directory. The layout is:

  • target/i686-pc-windows-msvc/ - 32-bit Windows binaries
  • target/debug/ or target/release/ - Native platform binaries

Contributing

Contributions are welcome! Here are some great ways to get involved:

Ways to Contribute

  • Help with Rust - The project was written while learning Rust. If you see improvements, please let us know
  • Data Handling - Network messages aren’t yet parsed into fragments or reconstructed into game messages
  • UI Improvements - The packet UI could be much better
  • Bug Reports - File issues for any bugs you find
  • Testing - Help test the application on different platforms

Getting Started

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/your-username/alembic.git
  3. Create a feature branch: git checkout -b my-feature
  4. Make your changes
  5. Commit: git commit -m "Add my feature"
  6. Push to your branch: git push origin my-feature
  7. Open a Pull Request

Building Locally

See the Building section for instructions on how to set up your development environment.

Questions?

Feel free to open an issue to ask questions or start a discussion. The maintainer is happy to help!