Skip to content

Commit 671ae4a

Browse files
committed
Rewrite README as Wammer - Android.
1 parent 8a08a02 commit 671ae4a

File tree

1 file changed

+87
-35
lines changed

1 file changed

+87
-35
lines changed

README.md

Lines changed: 87 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,108 @@
1-
# Contributors Notice
1+
# Wammer - Android
22

3-
I am accepting pull requests, feature requests and issues using the github project tracking tools. If you need more help setting up the code base for compilation, assistance in finding out how something works, or where to go to look for "x", please feel free to ask me. This is the first time I've ever managed an open source project so I could use feedback on how I could do things better. Or let me know if I've got something out of bad practice checked into source code, BlowTorch is a work in progress; It can always be better.
3+
[![Build](https://github.com/ncmud/Wamdroid/actions/workflows/ci.yml/badge.svg)](https://github.com/ncmud/Wamdroid/actions/workflows/ci.yml)
4+
[![Kotlin](https://img.shields.io/badge/Kotlin-2.3-blue)](https://kotlinlang.org)
5+
[![API](https://img.shields.io/badge/API-31%2B-brightgreen)](https://developer.android.com/about/versions/12)
6+
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
7+
![It's dangerous!](https://img.shields.io/badge/You_are_likely_to_be_eaten_by_a-grue-red.svg)
8+
[![Take this.](https://img.shields.io/badge/get-lamp-yellow.svg)](http://getlamp.com)
49

5-
# BlowTorch Source Code Repository
10+
A MUD client for Android with Lua scripting, plugin support, and multi-connection capability. This is a fork of [BlowTorch](https://github.com/petter-syn/bloern) by Dan Block, modernized to build with current tools and target Android 16.
611

7-
## To Build BlowTorch you will need the following things downloaded:
12+
See also [Wammer - iOS](https://github.com/ncmud/Wammer), the sister project for iPhone, iPad, and macOS.
813

9-
* Android SDK (latest version is fine)
10-
* Android NDK, specifically any version that isn't the latest. r15c is what I use.
11-
* Unpack these, note the paths, they will be needed later
12-
* For now the LuaJit, SQLite3, LuaJava, and Lua extension modules have their source code checked in for ease of use. I am pretty sure this is bad practice so it will probably be replaced by a downloader script or instructions here on what version to download and where to extract it.
14+
## About MUDs
1315

16+
[MUDs (Multi-User Dungeons)](https://en.wikipedia.org/wiki/MUD) 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.
1417

15-
## Now set the following Environment Variables:
18+
## Features
1619

17-
* export ANDROID_SDK_ROOT=path to sdk root
18-
* export NDK_HOME=path to ndk root
19-
* export NDK_HOST_CC_TARGET=darwin-x86_64 for mac, linux-x86_64 for unix, i dont know for windows
20-
* NDKABI=14 is defined in build_ndk_libraries.sh this should be moved.
21-
* The current build script hard codes the compiler as GCC v.7. This should be pulled out into an environment variable.
20+
- **Multi-connection** — connect to multiple MUDs simultaneously and switch between them
21+
- **Lua scripting** — LuaJIT-powered plugin system with access to triggers, aliases, timers, and the UI
22+
- **Triggers and responders** — pattern-matched triggers with actions: colorize, gag, replace, script execution, notifications, and more
23+
- **Configurable button bars** — customizable button layouts per connection
24+
- **MCCP** — Mud Client Compression Protocol v2 (zlib) for compressed data transfer
25+
- **ANSI color** — full color rendering
26+
- **Per-connection settings** — independent configuration for each MUD connection
2227

23-
## Now execute the NDK build script:
28+
## Getting Started
2429

25-
* ./build_ndk_libraries.sh
30+
### Prerequisites
2631

27-
## With the native libraries built, the android project can be built with gradle:
32+
- Android SDK (set `ANDROID_SDK_ROOT`)
33+
- Android NDK (set `NDK_HOME`)
34+
- Java 17+
2835

36+
### Build native libraries
2937

30-
* ./gradlew :BT_Free:assembleDebug
31-
* ./gradlew :BT_Free:assembleDebug
38+
The app uses LuaJIT and native extensions (luajava, lsqlite3, marshal, luabins) that must be compiled for each target ABI.
3239

33-
or
40+
```bash
41+
./build_ndk_libraries_modern.sh
42+
```
43+
44+
This builds for `arm64-v8a` and `x86_64` and copies `.so` files to `BTLib/src/main/jniLibs/`.
45+
46+
### Build the app
47+
48+
```bash
49+
./gradlew :BT_Free:assembleDebug
50+
```
51+
52+
Output: `BT_Free/build/outputs/apk/debug/`
53+
54+
### Install on a connected device
55+
56+
```bash
57+
./gradlew :BT_Free:installDebug
58+
```
59+
60+
### Release builds
61+
62+
Release builds require a signing keystore at `BTLib/key/bt_privatekey.keystore` and the `BT_RELEASE_PASS` environment variable:
3463

35-
* ./gradlew :BT_Free:assembleRelease
36-
* ./gradlew :BT_Aard:aasembleRelease
64+
```bash
65+
export BT_RELEASE_PASS=your_keystore_password
66+
./gradlew :BT_Free:assembleRelease
67+
```
68+
69+
## Architecture
70+
71+
The app is split into two modules:
3772

38-
note: the gradle project will attempt to sign the apk with a non existant certificate, drop your certificate into the appropriate location and the gradle project will pull the password from an environment variable, BT_RELEASE_PASS for the stock BlowTorch and BT_AARD_PASS for the Aardwolf client. If you do not know about apk signing, please see the android developer documentation.
73+
| Module | Purpose |
74+
|--------|---------|
75+
| **BTLib** | Shared library containing all core logic (`com.offsetnull.bt`) |
76+
| **BT_Free** | Thin app wrapper with the launcher activity |
3977

40-
double note: the location that the build scripts look for certificates is in the build.gradle for the respective project. For the stock BlowTorch client it looks for BTLib/key/bt_privatekey.keystore and for the aardwolf client it looks for BT_Aard/key/signiture_cert the passwords are passed via system environment variable.
78+
### Key components
79+
80+
- **StellarService** — background service managing all connections, runs in a separate process (`:stellar`)
81+
- **Connection** — per-connection handler orchestrating data flow, triggers, and plugins
82+
- **DataPumper** — network I/O thread with socket read/write management
83+
- **Processor** — telnet protocol parser with option negotiation and MCCP decompression
84+
- **Plugin** — Lua plugin system exposing Java API to Lua scripts
85+
- **MainWindow** — main activity with terminal UI, input handling, and button bars
86+
87+
### Data flow
4188

42-
If you want to set the password from the command line without seeing it use the following:
43-
```shell
44-
#!/bin/bash
45-
46-
read -s -p "Enter Password: " BT_RELEASE_PASS
47-
export BT_RELEASE_PASS
4889
```
49-
Taking special care to source the script into your current environment, or the script will execute inside of its own session, set the variable and then the environment terminates with the program.
50-
```shell
51-
source ~/bt_enter.sh
90+
MUD Server -> Socket -> DataPumper -> Processor (telnet/MCCP) -> Connection (triggers/plugins) -> MainWindow (render)
91+
User Input -> MainWindow -> Service -> Connection -> DataPumper -> Socket -> MUD Server
5292
```
5393

54-
The output from the gradle build is in BT_[Free|Aard]/build/outputs/apk.
55-
94+
### IPC
95+
96+
AIDL-based communication between `MainWindow` (foreground) and `StellarService` (background process).
97+
98+
## Contributing
99+
100+
Pull requests, feature requests, and issues are welcome.
101+
102+
## Credits
103+
104+
This project is a fork of [BlowTorch](https://github.com/petter-syn/bloern) 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.
105+
106+
## License
56107

108+
Available under the MIT License. See [LICENSE](LICENSE) for details.

0 commit comments

Comments
 (0)