Overview
Lich acts as a proxy between your front-end client and the game server. It sits in the middle of the connection, intercepting and modifying game data streams in both directions. This architecture allows scripts to interact with game data, modify output, and inject commands.Supported Front-ends
Lich supports multiple front-end clients, each with different capabilities:Modern Front-ends (XML-based)
Wrayth
Wrayth
Capabilities: XML, Streams, Mono, Room WindowWrayth is the default front-end identity for Lich. It supports full XML parsing, multiple data streams, and monospace formatting.
StormFront
StormFront
Capabilities: XML, Streams, Mono, Room WindowSimutronics’ official XML-based client for Windows.
Profanity
Profanity
Capabilities: XML, StreamsTerminal-based front-end for Linux/macOS. Works via detachable client mode.
Genie
Genie
Capabilities: XML, MonoXML-based client primarily for DragonRealms.
Frostbite
Frostbite
Capabilities: XMLModern XML-based client.
Legacy Front-ends (GSL-based)
Wizard
Wizard
Capabilities: GSL (Game Scripting Language)Simutronics’ original front-end using GSL formatting.
Avalon
Avalon
Capabilities: GSLAlternative GSL-based front-end.
Front-end Capabilities
Capability Matrix
| Front-end | XML | Streams | Mono | Room Window | GSL |
|---|---|---|---|---|---|
| Wrayth | ✅ | ✅ | ✅ | ✅ | ❌ |
| StormFront | ✅ | ✅ | ✅ | ✅ | ❌ |
| Profanity | ✅ | ✅ | ❌ | ❌ | ❌ |
| Genie | ✅ | ❌ | ✅ | ❌ | ❌ |
| Frostbite | ✅ | ❌ | ❌ | ❌ | ❌ |
| Wizard | ❌ | ❌ | ❌ | ❌ | ✅ |
| Avalon | ❌ | ❌ | ❌ | ❌ | ✅ |
Capability Definitions
XML
Supports XML tags for structured game data parsing
Streams
Multiple data streams (experience, thoughts, conversations, etc.)
Mono
Monospace text formatting support
Room Window
Separate room description window
GSL
Game Scripting Language support
Front-end Detection
Lich automatically detects and configures front-end capabilities:lib/common/front-end.rb
How the Proxy Works
Connection Flow
- Front-end connects to Lich (typically on localhost)
- Lich authenticates with the game server using your credentials
- Lich establishes the game connection
- Data flows bidirectionally through Lich:
- Downstream: Game → Lich → Scripts → Front-end
- Upstream: Front-end → Lich → Scripts → Game
Client String Negotiation
When connecting, Lich identifies itself to the game server:lib/common/front-end.rb
- Front-end type: WRAYTH
- Version: 1.0.1.28
- Platform: WIN_UNKNOWN
- Protocol: XML
Session Files
Lich creates session files for detachable clients:lib/common/front-end.rb
Front-end PID Tracking
Lich tracks the front-end process for features like window refocusing:lib/common/front-end.rb
- Windows: Uses Win32 API via FFI
- macOS: Uses AppleScript via
osascript - Linux: Uses
xdotoolfor window management
Detachable Client Mode
Run Lich as a server that clients can connect to:localhost:8000.
Detachable client mode is ideal for:
- Running Lich on a server
- Using terminal-based clients
- Connecting multiple clients to one Lich instance
Headless Mode
Run Lich without any front-end or GUI:- Automated botting on servers
- Background script execution
- CI/CD testing environments
Registering Custom Front-ends
Advanced users can register custom front-ends:Front-end Handshake
For Wizard/Avalon/Frostbite, Lich sends a handshake sequence:lib/common/front-end.rb
Troubleshooting
Front-end Won’t Connect
Stream Data Not Working
XML Parsing Issues
Related Topics
Configuration
Command-line options for front-ends
GTK Interface
Lich’s built-in GUI launcher
Scripts
Writing scripts that work with all front-ends
API Reference
Complete Frontend API documentation
