Skip to content

GenieClient/Genie5

Genie 5

Discord Releases License: GPL-3.0

A cross-platform, modern successor to Genie 4 — the long-running Windows client for DragonRealms, Simutronics' text-based MMO.

⚠️ Alpha — Genie 5 is in active development. The first public alpha targets feature parity with the most-used 80% of Genie 4 while running natively on Windows, macOS, and Linux. Expect rough edges. File issues; PRs welcome.

Why Genie 5

The Genie 4 codebase is WinForms + Windows-only and hasn't kept pace with modern .NET, cross-platform tooling, or the broader scripting ecosystem. Genie 5 is a clean rewrite that:

  • Runs everywhere — Windows, macOS, and Linux native, courtesy of Avalonia UI and .NET 8
  • Stays compatible — runs your existing Genie 4 .cmd scripts, profile files, and .map zone data
  • Plays well with the ecosystem — supports direct SGE auth, Lich 5 proxy, and dev-replay from recorded sessions
  • Is built for inspection — clean Genie.Core library with no UI dependencies; embed it in other clients, plugins, or test harnesses

Status

Layer State
SGE authentication (StormFront + Wizard modes) ✅ Working
DragonRealms XML parser (<component>, <d>, <a href>, <container>, <roundTime>, etc.) ✅ Working
Live game session — connect, play, type commands ✅ Working
Genie 4 .cmd script engine (labels, MATCH, GOSUB, $variables, WAITFOR, etc.) ✅ Working
Rules engines (#alias, #trigger, #highlight, #substitute, #gag, #macro, #class, #var) ✅ Working with .cfg persistence
Per-character profile storage with AES-GCM password encryption ✅ Working
Dockable UI panels (vitals, room, inventory, mapper, stream tabs) ✅ Working
Mapper with click-to-goto, zone fingerprinting, Less Obvious Paths ✅ Working (auto-walk is a roadmap item)
Session Recorder for raw-XML capture ✅ Working
Lich 5 proxy mode (ConnectionMode.LichProxy) ✅ Working
Dev-replay mode (replay recorded sessions through the engine) ✅ Working (via Console)
LAMP 2.0 cross-platform updater ❌ Canceled — superseded by the in-app updater below
In-app updater (Velopack) — Core / Maps / Plugins update tabs, Help-menu badge, startup background check ✅ Working (macOS/Linux Core packaging on the roadmap)
Plugin host — IGeniePlugin/IPluginHost contract, per-plugin assembly-load-context (load/unload/reload), Plugins menu + #plugin command, first external plugin (Plugin_EXPTrackerV5) ✅ Working (marketplace + plugin signing/trust on the roadmap)
JavaScript script support (.js array scripts) 🚧 Roadmap
Visual trigger / flow designer 🚧 Roadmap
AI-assisted automation (advisor-only mode) 🚧 Roadmap

See backlog for the full feature roadmap.

Installation

Prerequisites

  • .NET 8 SDK (until pre-built alpha artefacts ship)

Build from source

git clone https://github.com/GenieClient/Genie5.git
cd Genie5
dotnet build -c Release
dotnet run --project src/Genie.App

On first launch Genie 5 will:

  1. Migrate any existing Genie 4 scripts from %USERPROFILE%\Documents\Genie 4\Scripts\ into its own Scripts/ folder (Windows only — no-op elsewhere)
  2. Migrate any existing Genie 4 maps from %USERPROFILE%\Documents\Genie 4\Maps\ (Windows only)
  3. Create {AppData}/Genie5/Config/ for .cfg rule files and per-character profile data

Pre-built artefacts

Once the release pipeline lands, look for Genie5-v5.0.0-alpha.3.4-{win-x64, osx-arm64, osx-x64, linux-x64} on the Releases page.

Quick start

  1. Launch Genie 5 and use File → Connect…
  2. Enter your DragonRealms account name + password, then click Fetch to retrieve your character list
  3. Pick a character and click Connect
  4. Type commands in the input bar at the bottom; click <d> links in game text to send the underlying command
  5. Save the connection as a profile so you don't have to retype next time — passwords are encrypted on disk (AES-256-GCM)

Running your first script

Genie 4 .cmd scripts go in {AppData}/Genie5/Scripts/. From the game window:

.myscript           # runs Scripts/myscript.cmd
.myscript arg1 arg2 # passes %1 = arg1, %2 = arg2
#scripts            # lists running scripts
#stop myscript      # aborts a running script

The script engine is a faithful port of Genie 4's Wizard-derived dialect — labels, GOSUB/RETURN, MATCH/MATCHRE, $variables, %variables, PAUSE, WAIT, WAITFOR, PUT, def(), the whole vocabulary. If a script worked in Genie 4 and doesn't work here, file an issue — we treat script-compat regressions as bugs.

Lich 5 interoperability

Genie 5 plays nicely with Lich 5. Two integration paths:

  • Lich proxy mode — Lich runs as your auth front-end and forwards a clean DR stream to Genie on 127.0.0.1:8000. Pick Lich Proxy in the Connect dialog. Your Lich Ruby scripts continue to work; Genie sees them as ordinary game output.
  • Direct SGE + Lich passive — Genie handles auth itself (no Lich required), and you can run any Lich-managed automation in parallel using Lich's own command channel.

DragonRealms policy compliance

Genie 5 aims to be a good DragonRealms frontend. DR's Scripting Policy asks that you stay responsive to the game while you play — it does not require the client window to stay focused, and Genie doesn't try to police how you play. Staying within policy is the player's call. That said, a few design choices keep Genie firmly on the responsive side, and the client itself avoids unattended automation:

  • No auto-reconnect. If you disconnect, you reconnect by hand.
  • No agentive AI mode. AI features (when they ship) are advisor-only — they surface suggestions in a panel you read, never drive game commands directly.
  • No headless mode. Genie is a UI client, not a background service.
  • No shipping other players' speech to external services. The AI context buffer filters out whisper / talk / thoughts / familiar / tells before any external API call.

There's also an optional idle backstop for click-to-walk / #goto travel that can pause a walk after the window has been unfocused for a while. It's off by default and fully configurable — purely for users who want it.

See docs/POLICY.md for the details.

Architecture

TCP bytes
  └─► GameConnection          (SgeAuthClient or LichProxy)
        └─► RawXmlStream      (hot IObservable<string>, always on)
              ├─► DrXmlParser.Feed()
              │     └─► GameEvents  (typed records: TextEvent, NavEvent, …)
              │               └─► GameStateEngine → GameState (live snapshot)
              └─► AiRawStream (toggleable, never blocks parser)
                    └─► AiContextBuffer → AI vendor API → AnalysisReady event
  • Genie.Core — pure class library, zero UI dependencies. Connection, parser, game state, script engine, AI pipeline, rules engines.
  • Genie.App — the Avalonia GUI host; binds to Core observables, owns no game-logic state.

Reference

Resource Why it's relevant
Genie 4 source Original Windows client; canonical reference for .cmd parity
Lich 5 Ruby proxy that runs on top of Genie, not a competitor
DR-Genie-Scripts Largest community script collection; our compatibility test set
Elanthipedia DR's community wiki
Mudlet Cross-platform MUD client; possible expansion target for SGE/DR support

Contributing

See CONTRIBUTING.md. Bug reports, feature requests, and PRs all welcome. Security issues go through the process in SECURITY.md.

Community

  • Discorddiscord.gg/MtmzE2w — the long-running Genie community server, shared with Genie 4. Drop in for alpha-tester chat, scripting help, mapper questions, or general DR conversation.
  • IssuesGitHub Issues for bug reports + feature requests
  • DiscussionsGitHub Discussions (TBD)

Code signing policy

Free code signing for Windows release builds is provided by SignPath.io, with a free code signing certificate from the SignPath Foundation.

Signed Windows binaries will be published on the Releases page once SignPath Foundation approval is granted — code-signing activates in an upcoming release. Every release is built from this repository's source via GitHub Actions and is manually approved before signing.

Roles

  • Authors / Committers: @monil2233 (project maintainer; commits to this repository).
  • Reviewers: @monil2233 (reviews each signing request in the SignPath UI before approval).
  • Approvers: @monil2233 (final approval that triggers the signing operation).

For solo-maintainer alpha-stage projects, all three roles consolidated on the maintainer is the standard SignPath Foundation arrangement. As the contributor base grows and a co-maintainer takes ownership, this section will be updated to reflect a separation between Reviewer and Approver per SignPath's two-person-rule guidance.

Privacy policy

This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it. Genie 5 connects only to Simutronics' official DragonRealms authentication and game servers (play.net / simutronics.net) and, when the user configures it, to a local Lich 5 proxy. Account credentials are stored locally, encrypted with AES-256-GCM, and are transmitted only to the official authentication servers. No data is collected by the Genie 5 maintainers.

Credits

See CREDITS.md for art and non-code attributions. The app icon, status-indicator glyphs, and compass-direction icons are by @dylb0t, donated under GPL-3.0.

License

GPL-3.0. Same license as Lich 5, aligning Genie 5 with the broader DR-tooling ecosystem.

About

Cross-platform .NET 8 + Avalonia successor to Genie 4 — DragonRealms client with full Genie 4 .cmd script compatibility, AutoMapper with cross-zone routing, and dockable UI.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors