Acme MUD

✅ 可玩

acme

更新 fdf581a 2026-09-12 源码 下载 ZIP 上游 acmemud/acme-mudlib

▶ 开始游玩 · Play Now

An experimental English LDMud 3.x framework by devo@eotl (2016-2017), formerly titled "untitled gamification platform." LDMud → FluffOS conversion: catalog login lands in The Void with a workshop to the north. The archive never shipped a larger game world (acme-rpg is one unfinished combat module). Not Cloudxtreme/eotl-mudlib (a utility fragment).

README

Snapshot assembled from https://github.com/acmemud/acme-mudlib plus sibling repos acme-platform, acme-flavor-basic, and acme-flavor-rpg (2016–2017). Experimental LDMud 3.x framework by devo@eotl, formerly “untitled gamification platform.” Slug acme, number 969, port 40278. This collection’s copy is a snapshot, not a live mirror.

English play. The archive never shipped a finished world (the RPG flavor is one combat module). New characters land in The Void; a workshop sits to the north. Published as playable on that start.

Not a duplicate of any lib already in this collection. Cloudxtreme/eotl-mudlib is a separate utility fragment.

Registration flow

Name (2–16 letters) → new character: password (≥6, twice) → The Void. Existing names prompt for password only.

Admin / test account

Verified live 2026-09-05: create fluffos / Mud@2026 → The Void; reconnect after quit; look / score / quit.

Local run

cd libs/acme
~/src/fluffos/build-debug/src/driver config.fluffos

Game port: 40278.

python3 scripts/mudclient.py 127.0.0.1 40278 --timeout 25 --idle 0.6 \
  --send fluffos --send Mud@2026 \
  --send look --send score --send quit

NOTES · 移植与修复记录

Acme MUD (acme) — porting notes

Source: assembled from four GitHub repos (all acmemud/*, author bobalu113 / devo@eotl):

Converted 2026-09-05. Config name Acme. Slug acme, number 969, port 40278. This collection’s copy is a snapshot, not a live mirror.

Unique experimental LDMud 3.x framework (welcome: “Welcome to Acme MUD, formerly untitled gamification platform.”). Not a duplicate of any existing lib. Cloudxtreme/eotl-mudlib is only a utility fragment and was not onboarded.

Do not onboard acmemud/acme-mudlib (or its three sibling repos) again. Do not treat the original /platform/.obj/login path as the live FluffOS login — it does not compile here.

0. Layout

Repo root is the mudlib, but the published acme-mudlib git checkout is a submodule stub (platform, flavor/acme-basic, flavor/acme-rpg via SSH URLs). Those three sibling repos were cloned over HTTPS and rsync’d into raw/ so the tree is complete.

/secure/master.c is an LDMud 3.x master (set_driver_hook, unbound_lambda, #' closures, inaugurate_master). Simul /secure/simul_efun.c raises on write()/say()/printf() (“deprecated, use MessageLib”). Login is /platform/.obj/login.c. Flavor acme-rpg is a single .module/combat.c. The only shipped room is platform/.etc/skel/.room/workroom.c (inherit RoomCode;). There is no playable world in the archive.

raw/ is gitignored.

1. Convert (2026-09-05)

convert_lib.sh UTF-8: already_utf8=227 converted=0 lossy=0 skipped_binary=0. 146 .lpc. 11 .c" refs rewritten. 3 local angle-bracket includes. 1 file staticnosave (flavor/acme-basic/.module/mobile.lpc variable followers / following — correct here).

2. FluffOS port

The archive is modern LDMud 3.x, not the older LDMud dialect questmud used. First-class closures (#'welcome, unbound_lambda, funcall), virtual inherit / private inherit, foreach (x : y), struct Message, multi-value mappings, XML domain/command specs, SQLite/MySQL/Postgres clients, and a MessageLib that replaces write(). FluffOS has none of set_driver_hook, closure, unbound_lambda, or virtual inherit (confirmed in ~/src/fluffos/src). A mechanical dialect rewrite of the 146 LPC files is not a one-slice job; the original login/command stack is kept as source and not loaded.

config.fluffos: master /secure/master, simul /secure/simul_efun, global include "/include/auto.h", port 40278, lazy resets : 1.

Original master/simul saved as /secure/master_ldmud.lpc and /secure/simul_efun_ldmud.lpc.

New FluffOS master (questmud / AGENTS.md §7.158 cluster): get_root_uid/get_bb_uid "ROOT"/"BACKBONE", creator_file always returns the string "BACKBONE", valid_read includes load_object/recompile_object/include/restore_object, valid_override returns 1, error_handler writes /log/catch.

Catalog overlay (not the original MessageLib path):

crypt(p, stored) accepts FluffOS $6$… hashes on reconnect.

Live-verified (native, port 40278)

Created fluffos / Mud@2026. Lands in The Void; look / score (Fluffos (level 1), hp 20/20) / north (workshop) / south / quit (“Saving Fluffos.”). Reconnect after a cold driver restart reloads data/f/fluffos.o. First player is not auto-god.

/log/catch and /log/compile were only written on the first failed /obj/player compile (missing prototypes); they were not touched on the successful create, reconnect, or cold-boot reconnect.

WASM not verified. unique_games stays counting numbers < 900; 969 is still listed as a lib.

Published (wasm_status: playable) after user 2026-09-11: they can consider playable now. Catalog overlay is the archive's actual start (Void / workshop). Shop / combat / guild: N/A.

深度功能测试(§10.7, 2026-09-05)

Catalog overlay only — the archive has no playable world. Organic fluffos / Mud@2026 on native 40278: Void look / score (level 1, hp 20/20) / inventory (empty-handed) / north workshop / south back / quit persist. Reconnect same session: Void look / score / quit. Shop, combat, guild, death: N/A (original MessageLib / acme-rpg combat / XML cmds are not loaded).

Logs this boot (PID started 20:07:44, live fd libs/acme/log/debug.log): driver stdout + debug.log had no LPC errors across the playthrough. work/log/catch handler proven live with a one-shot catchprobe (CAUGHT /obj/player.lpc *catch-path-probe) then reverted; play itself left no other catch lines.

3. What was not ported

<!-- librarian-leftover:634 -->

Leftover 634 (2026-09-10, cheap reconfirm, no boot). Shipped rooms are still only /room/void and /room/workshop. acme-rpg is one unfinished combat module, not a world. Do not invent rooms. Do not flip.

<!-- librarian-leftover:635 -->

Leftover 635 (2026-09-10, persist only, no boot). Same tree as leftover 634 (f0975b36b09): only /room/void and /room/workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:636 -->

Leftover 636 (2026-09-11, persist only, no boot). Same tree as leftover 635 (1ddf6f10123): only void and workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:637 -->

Leftover 637 (2026-09-11, persist only, no boot). Same tree as leftover 636 (d60cd9919c7): only void and workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:638 -->

Leftover 638 (2026-09-11, persist only, no boot). Same tree as leftover 637 (3dcd14f5af3): only void and workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:639 -->

Leftover 639 (2026-09-11, persist only, no boot). Same tree as leftover 638 (b7106c81e28): only void and workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:640 -->

Leftover 640 (2026-09-11, persist only, no boot). Same tree as leftover 639 (16876edf6d8): only void and workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:641 -->

Leftover 641 (2026-09-11, persist only, no boot). Same tree as leftover 640 (f89c13266ea): only void and workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:642 -->

Leftover 642 (2026-09-11, persist only, no boot). Same tree as leftover 641 (25e2370fa27): only void and workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:643 -->

Leftover 643 (2026-09-11, persist only, no boot). Same tree as leftover 642 (7860bad89b1): only void and workshop. Do not invent rooms. Do not flip.

<!-- librarian-leftover:644 -->

Leftover 644 (2026-09-11). User: they can consider playable now. Flipped wasm_status to playable on existing Void/workshop catalog evidence. Do not invent rooms. Shop / combat / guild stay N/A.

<!-- librarian-leftover:645 -->

Leftover 645 (2026-09-11, persist only, no boot). Already playable (546d780ee87). Same tree: only void and workshop. Do not invent rooms. Do not flip again.

<!-- librarian-leftover:646 -->

Leftover 646 (2026-09-11, persist only, no boot). Already playable (546d780ee87). Same tree as leftover 645 (bfcd764dde2). Do not invent rooms. Do not flip again.

<!-- librarian-leftover:647 -->

Leftover 647 (2026-09-11). User: source-complete is done; do not invent. Shipped rooms still only void and workshop. No extra archive AddItem to load. Do not invent rooms.