info.html · 介绍 · play.html · 游玩 · llms.txt · 下载与本地运行 · ZIP · GitHub
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
- name:
fluffos - password:
Mud@2026 - privilege: seeded mortal (level 1). This lib does not auto-god the first player.
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.fluffosGame 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 quitNOTES · 移植与修复记录
Acme MUD (acme) — porting notes
Source: assembled from four GitHub repos (all acmemud/*, author
bobalu113 / devo@eotl):
https://github.com/acmemud/acme-mudlibcommit8bfa42587d1cb4a7606b73cdce760673582a924d(“renamed project”, 2017-01-15) — mudlib root (secure/master.c,.gitmodules)https://github.com/acmemud/acme-platformcommitd210b0335889c82266cef22bef296666eb14ac9f(2017-02-01)https://github.com/acmemud/acme-flavor-basiccommitaf56a1b8d56943362d0b4e92b399c3945d98356d(2017-01-15)https://github.com/acmemud/acme-flavor-rpgcommitc2b2160727f84d0405e0e751c164962cbdf17daf(“got login prompt working”, 2016-04-09)
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 static→nosave
(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):
/obj/login.lpc— name / new-or-existing password;execinto/obj/player/obj/player.lpc—look/score/quitplus north/south into the two catalog rooms;process_inputismixed(returning1swallows the command; astringreturn type plus forward-refs failed compile with “No program in object '/obj/player'”)/room/void.lpc,/room/workshop.lpc— start + one adjacent room. The archive has no world to port.
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
- Original
/platform/.obj/login(closures + ConnectionTracker telnet negotiation + MessageLib/PostalService) - XML command controllers, logger factory, SQL clients, HookService
acme-basiclook/say/walk (those commands callwrite(), which the original simul raises on)acme-rpgcombat (one unfinished file)
<!-- 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.