A MUD client for Android with Lua scripting, plugin support, and multi-connection capability. This is a fork of BlowTorch by Dan Block, modernized to build with current tools and target Android 16.
See also Wammer - iOS, the sister project for iPhone, iPad, and macOS.
MUDs (Multi-User Dungeons) are online multiplayer text-based games. Thousands of players today are on hundreds of MUDs in all manner of worlds: fantasy, absurdist, sci-fi, horror, and more. Many MUDs have been continuously online for decades.
- Multi-connection — connect to multiple MUDs simultaneously and switch between them
- Lua scripting — LuaJIT-powered plugin system with access to triggers, aliases, timers, and the UI
- Triggers and responders — pattern-matched triggers with actions: colorize, gag, replace, script execution, notifications, and more
- Configurable button bars — customizable button layouts per connection
- MCCP — Mud Client Compression Protocol v2 (zlib) for compressed data transfer
- ANSI color — full color rendering
- Per-connection settings — independent configuration for each MUD connection
- Android SDK (set
ANDROID_SDK_ROOT) - Android NDK (set
NDK_HOME) - Java 17+
The app uses LuaJIT and native extensions (luajava, lsqlite3, marshal, luabins) that must be compiled for each target ABI.
./build_ndk_libraries_modern.shThis builds for arm64-v8a and x86_64 and copies .so files to lib/src/main/jniLibs/.
./gradlew :app:assembleDebugOutput: app/build/outputs/apk/debug/
./gradlew :app:installDebugRelease builds require a signing keystore at lib/key/bt_privatekey.keystore and the BT_RELEASE_PASS environment variable:
export BT_RELEASE_PASS=your_keystore_password
./gradlew :app:assembleReleaseThe app is split into two modules:
| Module | Purpose |
|---|---|
| lib | Shared library containing all core logic (org.ncmud.mudwammer) |
| app | Thin app wrapper with the launcher activity |
- StellarService — background service managing all connections, runs in a separate process (
:stellar) - Connection — per-connection handler orchestrating data flow, triggers, and plugins
- DataPumper — network I/O thread with socket read/write management
- Processor — telnet protocol parser with option negotiation and MCCP decompression
- Plugin — Lua plugin system exposing Java API to Lua scripts
- MainWindow — main activity with terminal UI, input handling, and button bars
MUD Server -> Socket -> DataPumper -> Processor (telnet/MCCP) -> Connection (triggers/plugins) -> MainWindow (render)
User Input -> MainWindow -> Service -> Connection -> DataPumper -> Socket -> MUD Server
AIDL-based communication between MainWindow (foreground) and StellarService (background process).
Pull requests, feature requests, and issues are welcome.
This project is a fork of BlowTorch by Dan Block. BlowTorch was an impressive piece of work — a full-featured Android MUD client with Lua scripting and plugin support that served the MUD community for years. We are grateful for Dan's contribution to the community and for open-sourcing the project.
Available under the MIT License. See LICENSE for details.