Red Dust

✅ 可玩

红尘

hc

🔑 fluffos / Mud@2026 更新 85d6a35 2026-09-02 源码 下载 ZIP

▶ 开始游玩 · Play Now

游戏内全名"红尘录",ES II 引擎家族的一支独立武侠作品。新角色的出生地从四个场景里随机挑选:岳王庙"武庙"正殿(殿内供奉诸葛亮等历史/小说人物,往北通往"名人堂")、泉州铁墙、客店,以及"北疆小镇"——一座维吾尔族聚居的边塞小镇,NPC 会用带方言腔调的台词打招呼("小波郎子呀克西"),是这批档案里比较少见的西域边塞民族风情场景,和其余三个中原/江南背景形成鲜明对比。角色天赋系统包含膂力、悟性、根骨、身法四项明面属性,以及福缘、容貌两项隐藏属性,影响解谜、奇遇与拜师际遇;登入画面还会显示历史累计人数、历史最高在线人数等站务统计信息。

English

An independent wuxia MUD within the ES II engine lineage, whose full in-game title is “红尘录” (Chronicle of the Red Dust). New characters land in one of four randomly-chosen starting locations, the most distinctive being a Uyghur frontier town (北疆小镇) where NPCs greet arrivals in dialect (“小波郎子呀克西”) -- a rare northwestern-frontier setting among this collection's otherwise Jiangnan/central-plains wuxia worlds; the other three are a temple's main hall (housing legendary/historical figures such as Zhuge Liang, leading on to a “Hall of Fame”), a Quanzhou ironclad town, and an inn. Characters roll six attributes -- four visible, two hidden (luck and looks) that quietly influence encounters and mentorship opportunities -- and the login screen displays running lifetime-registration and peak-concurrency statistics. The admin rank hierarchy tops out at (boss), above the more usual (admin).

README

内容亮点

在线试玩

https://mudlibs.fluffos.info/hongchen/

WASM pass修复的 bug

1. include/restart.h 在原始压缩包和转换后的源码里都是真正的空文 件(0 字节)——这是原始代码本身就缺失的内容,不是转换过程弄丢 的——导致 adm/daemons/restartd.lpc 用到的 SHUTDOWN/REBOOT/ HALT/CALLOUT_INTERVAL/RESTART_INTERVAL 全部未定义。已根据 restartd.lpc 自身的使用方式补全这六个常量的合理取值。 2. adm/daemons/logind.lpc 每次连线最开头打印欢迎信息时用 socket_address(ob) 取连接端口——这是 sockets 包的 efun,这个驱 动没有实现——已改成这个驱动真正支持、代码库其他地方也在用的 query_ip_port(ob)

深度功能测试新发现的 bug(详见 NOTES.md)

adm/daemons/logind.lpc 有两处独立的调试用 printf("%O\n", ob)—— 分别在 get_name()(手打中文名字)和 get_resp()(接受系统随机建 议的名字)两条平行路径上,紧接在名字确认之后、密码提示之前,导致 每一个新玩家(不管走哪条取名路径)都会看到一行登录物件的内部路径 (如 /clone/user/xxx#N)。已删除两处(AGENTS.md §7.34)。

管理员账号 / Admin account

警告:对外公开架设前请务必修改此密码。

本地运行

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

游戏端口:40107

NOTES · 移植与修复记录

红尘.rar → hongchen

Status: DONE — boots clean, full registration with a real Chinese name verified, playable

What was fixed

1. Standard encoding + .c.lpc rename via convert_lib.sh. 2. New instance of AGENTS.md §4.3's shim-collision class: adm/obj/master.lpc (and 4 other files sharing the same header) had #ifndef __SENSIBLE_MODIFIERS__ / #define nosave static / #define protected static / #endif. The blanket staticnosave sed turned this into #define protected nosave — silently aliasing protected to nosave even though both are real, distinct keywords on this driver. Deleted both now-nonsensical #define lines (nosave nosave / protected nosave) from all 5 affected files (include/globals.h, adm/obj/master.lpc, adm/obj/simul_efun.lpc, adm/obj/ simul_efun.ahxia.lpc, adm/obj/simul_efun_bak.lpc). 3. §8.1 class: adm/simul_efun/chinese.lpc's is_chinese() (GBK byte-range test) and adm/daemons/logind.lpc's check_legal_name() (byte-oriented 2-10 bound + i%2==0 window, message said "1 到 5 个 中文字") — standard fix. Verified: real Chinese name 秦风六 registers correctly end-to-end into the game world (武庙/Wu Temple). 4. adm/daemons/network/dns_master and adm/daemons/ftpd were actively preloaded — commented out per the standing no-sockets-package policy. 5. Admin seeding: registered fluffos through the normal flow, appended fluffos (admin) to adm/etc/wizlist. Verified: update /adm/obj/ master succeeds as fluffos ("重新编译 /adm/obj/master.lpc:成功!").

Compile sweep

10014 pass / 150 fail out of ~10164 files. All core system files (master/simul_efun/logind/chinesed/securityd) compile and run correctly; remaining failures are individual room/NPC/item content files, not chased further per the standing "content bugs are logged, not exhaustively fixed" convention. adm/daemons/restartd.lpc has a couple of undefined-variable errors (CALLOUT_INTERVAL/RESTART_INTERVAL) — non-fatal at boot (preload catches the failure), not fixed.

Full registration/gameplay verification

New character with a real Chinese name (秦风六) registers end-to-end: gender selection, attribute roll+confirm, email, into the game world at 武庙 (Wu Temple, with 诸葛亮/Zhuge Liang and a NPC magician present). look and score (full character sheet: attributes, HP/food/water bars, combat exp) both work correctly. quit drops starting items and prints a clean farewell message with no errors.

WASM pass (follow-up)

Native boot above was already clean; the WASM sandbox surfaced two gaps the native driver doesn't hit:

1. include/restart.h is genuinely empty (0 bytes) in both the raw archive and the converted source -- a pre-existing incomplete-source bug in the original codebase, not something the conversion lost. adm/daemons/restartd.lpc's SHUTDOWN/REBOOT/HALT/ CALLOUT_INTERVAL/RESTART_INTERVAL were all undefined as a result (previously masked because restartd.lpc fails to compile silently at preload and isn't load-bearing for boot). Reconstructed all six constants from the daemon's own usage. 2. adm/daemons/logind.lpc's very first per-connection banner line used socket_address(ob) (sockets package efun, undefined on this driver) to extract the connecting port -- broke EVERY connection attempt under WASM. Switched to query_ip_port(ob), already used elsewhere in this same codebase.

Also upgraded the admin wizlist entry from fluffos (admin) (seeded in the native pass above) to fluffos (boss) -- this lineage's wiz_levels ranks (boss) above (admin) as the actual top tier, and securityd.lpc's trusted_read/trusted_write["/"] both include (boss). Verified: update /adm/daemons/securityd.lpc succeeds as fluffos ("重新编译 ... :成功!").

LPC formatter run across all 10328 .lpc/.h files (10141 written). Blind-spot check found 2 files with the classic stray-\ n/unquoted- string corruption (cmds/adm/hbless.lpc, d/city/diaoyuchi1.h) and, via a same-text-despaced-matches-old-file scan across all 112 formatter-touched files containing CJK-space-CJK sequences, 1 file with confirmed genuine re-spacing corruption (d/player/fyue_room.lpc); all 3 reverted. The other 109 flagged files were pre-existing author spacing, unchanged by the diff. Post-formatter: clean boot, zero compile errors, registration and (boss) permission display both re-verified.

Status: WASM playable

GitHub Pages packaging for this lib specifically is still deferred to a later batch pass; the WASM boot/gameplay/admin verification above is now complete.

WASM 修复摘要(迁移自 meta.json 的 group_note)

ES II 血统,独立分支;来自 2026-07-29 批量 mudlib.rar 投放。原生启动在之前一轮已经验证过(详见 NOTES.md);这次 WASM 修复解决了两个原生驱动碰不到的 WASM 专属缺口:(1)include/restart.h 在原始压缩包和转档后的源码里都真的是空文件(0 字节)——这是转档之前就存在的原始源码不完整问题,不是转档产生的 artifact——导致 adm/daemons/restartd.lpc 的 SHUTDOWN/REBOOT/HALT/CALLOUT_INTERVAL/RESTART_INTERVAL 全部未定义;已根据这个精灵自己的用法重建了全部六个常量(restartd.lpc 会被预载但不是关键精灵,所以这个问题此前一直被开机流程掩盖)。(2)adm/daemons/logind.lpc 每次连线的第一条消息用 socket_address(ob)(sockets 包 efun,这个驱动上未定义)来取得连线端口——已改用这份代码库里其它地方本来就在用的真实 efun query_ip_port(ob)。另外把管理员 wizlist 条目从之前播种的"fluffos (admin)"升级成了"fluffos (boss)"——这条血统的 wiz_levels 阶梯把 (boss) 排在 (admin) 之上作为真正的顶层,securityd.lpc 的 trusted_read/trusted_write['/'] 表里也确认了 (boss) 的存在。完整注册(id→确认→中文名字→密码→确认→天赋摇点→电子邮件→性别)→进入游戏→look→score→quit 均验证正常,管理员 id "fluffos" 显示 (boss),格式化前 update 也成功。LPC 格式化工具对全部 10328 个档案运行;还原了 2 个确认有历史损坏的档案(cmds/adm/hbless.lpc、d/city/diaoyuchi1.h——都是经典的 \n/未加引号 CJK 字符串损坏,源自本来就不配对的引号)和 1 个确认有 CJK 重新加空格损坏的档案(d/player/fyue_room.lpc),是通过对格式化工具触碰过的全部 112 个含"CJK-空格-CJK"序列的档案做去空格后比对旧档案的扫描找到的——其余 109 个都是原作者本来就有的间距,未受影响。格式化后重新验证:启动干净,零编译错误,注册流程和 (boss) 权限显示都仍然正确。

深度功能测试(第二轮,2026-08-03)

此前的验证只做到浅层冒烟测试(注册→look/score/quit→(boss) 权限确 认)。本轮启动前先主动排查了本次会话已经反复确认过的几类高价值 bug 模式,提前发现并修复了一处;随后完整走通了注册、探索、丢弃道 具、退出的完整流程。

主动排查发现并修复:get_resp()/get_name() 里两处调试用的 printf("%O", ob)

adm/daemons/logind.lpc 里有两处独立的 printf("%O\n", ob); (AGENTS.md §7.34 已经收录的经典模式,esI/xianlvqiyuan/cctx 都出现过同一类问题)——分别出现在两条平行的中文取名路径上: get_name()(玩家自己手打中文名字)和 get_resp()(接受系统随机 建议的名字),两处都紧接在名字校验通过、ob->set("name", ...) 之 前,也就是每一个新玩家不管走哪条取名路径,都会在"请给自己取一个中 文名字:"和"请设定您的密码:"两个提示之间看到一行登录物件的内部路 径(如 /clone/user/xxx#N)。已把两处都删除。启动前主动 grep 未 发现 private command_hook、未加保护的 MESSAGE_D-> 呼叫、或 stat/waterstat/drink 键名不一致——本轮没有再发现其它此前已 知模式的实例。

完整验证:从注册到探索

用全新账号在原生驱动上完整走通:英文 id(3-10 个英文字母)→ y 确 认 → 中文名字(无泄漏问题)→ 密码 + 确认 → 天赋摇点(0-4,0 为随 机,摇完需要 y/n 二次确认)→ 电子邮件 → 性别 → 进入"北疆小镇"——一 座维吾尔族聚居的边塞小镇,NPC"维吾尔族妇女"用带方言腔调的台词打招 呼("小波郎子呀克西"),是这批档案里比较少见的西域边塞民族风情场 景,和常见的江南水乡/中原武侠背景形成鲜明对比。个人档案(score) 面板显示完整六维天赋(膂力/悟性/根骨/身法/福缘/容貌,后两项隐藏显 示为"[???]")、食物/饮水槽全满,没有类似 zsdsj 那种初始化缺失的 问题。i(背包)显示随身携带的"布衣"和"魔法传送帖"(magic teleport talisman,量:1 单:张,暗示一种一次性传送道具机制)。e 移动进入"巴依家院"("巴依"是维吾尔语对富裕地主的称呼),院中"小 孩"和"巴依"两个 NPC 在场。quit 干净退出,自动丢弃了不值钱的布衣 和传送帖("因为这样东西并不值钱,所以人们并不会注意到它的存在"), 和 hell/cctx 已经见过的同一种"退出自动清理不值钱物品"机制一 致,不是 bug。debug.log 只有驱动启动期的诊断噪音,没有来自本次实 际游玩会话的运行时错误。

未覆盖范围(诚实说明)

预算集中在验证调试泄漏修复和基础注册/移动/背包/退出流程,没有走 到:拜师、战斗、经济系统(钱庄存款机制看起来存在但未实测)。这些 留给下一轮,目前的验证边界如上所述。

§7.86 跨库扫描修复(留言板 post 崩溃)

深度功能测试(2026-08-13,round two,新驱动重测)

上面"第二轮"(2026-08-03)那次早于今天的驱动重建(全库 quest_times/win_times %-operator 修复 + Warning/warning 驱动 文本回退),不能算作针对当前驱动的覆盖——这是真正针对今天驱动的重 测。管理员账号 fluffos/Mud@2026(boss) 级)此前已用真实注册 流程创建并提交,本轮复用,只做登录验证。

发现并修复的 PROGRAMMING bug

1. log_error()adm/obj/master.lpc)完全没有严重度检查(AGENTS.md §7.34-class,与本轮 wdxtym/ffxymud/fy2mg/fys 同一原始形 状)if (this_player(1)) efun::write("编译时段错误:" + message + "\n");——不区分巫师/玩家,也不区分警告/错误。修复:加 上 strsrch(message, "arning:") == -1 判断。 2. log_file()adm/simul_efun/file.lpc)完全没有 assure_file() 保护(AGENTS.md §7.11-class 的又一确认实例)adm/daemons/ logind.lpcget_gender()新角色注册流程的最后一步)紧 跟着调用 log_file("login/newid.log", ...)——和本轮 ffxymud 最初发现的那个 bug完全同一形状LOG_DIR 下的 login/ 子目录若不存在,会在每一个全新角色注册完成的那一刻未捕获抛出。 这台开发机本地 work/log/login/ 当前确实存在(早年测试留下的 newid.log),但 work/log/ 整条路径被项目级 .gitignore 排除在外,本地存在不代表新检出安全。修复:补上 assure_file(LOG_DIR + file);(含前向声明)。

Proactive checks(无需改动)

实测过程与一次误报排查

第一次登录时,紧接着 password 之后立刻发送 update 指令,收到了 一句没头没脑的"什麽?"而不是正常的编译结果——起初怀疑是 log_error/ error_handler 相关的又一个 bug,但检查后发现"什麽?"其实来自 feature/alias.lpcdisable_inputs 临时标志检查,和编译诊断无 关。进一步查 log/debug.log(时间戳恰好落在这次测试期间,被误认为 "有新错误")确认真正原因:这是全新驱动进程下首次触发 make_body() 整条 /clone/user/user 继承链冷编译导致的 *Too long evaluation. Execution aborted.(AGENTS.md §7.90/§10.8 已 归档的冷启动惰性编译级联类别,注册流程本身仍然完整走完,只是紧接着 的下一条指令因为 eval cost 预算刚好在那次调用耗尽而被中止,留下 disable_inputs 卡在真值状态)。带着几秒钟的额外等待时间重新登录、 重新发送 update 指令,第二次完全干净,确认是一次性冷启动状态,非 持久性 bug,不需要修复,也不代表 log_error()/log_file() 的修复 无效。

已清理

§7.100 修复(ROOM 基类的同一"多余 replace_program()"形状,全档案扫描第 6 批)

深度功能测试(第四轮,2026-08-20)——拜师/战斗/经济系统补测

第二轮(2026-08-03)明确留白的三块——拜师、战斗、经济系统(含"钱庄 存款"机制)——本轮全部补测完毕,均为干净通过,未发现任何编译错 误或运行时崩溃。管理员账号 fluffos/Mud@2026(boss) 级)复用, 另注册全新测试账号 hctestqin(中文名"秦风试")做实际游玩验证,用 双 Python socket 连线(管理员 + 玩家)配合 goto/summon 把玩家搬 运到各测试地点。

拜师(结果:正常通过)

目标 NPC:d/newbie/npc/hssz.lpc("华山使者",inherit F_MASTERcreate_family("华山派", 15, "弟子")),房间 /d/newbie/hsroom。全 新角色 bai hs:一次通过——attempt_apprentice() 接受,recruit_ apprentice() 落实师徒关系,score 面板正确显示"华山派第十六代弟 子"、"你的师傅:华山使者"。机制本身工作正常(接受/拒绝两种结果都算 合理通过,本次是接受路径)。

战斗(结果:正常通过)

目标:d/city2/wuchang.lpc(练武场)里的"木人"(d/city/npc/mu- ren.lpc)——一个专门设计的安全陪练木人:accept_fight() 会把它自 己的六维属性/技能/气血/内力全部临时替换成挑战者的镜像数值,set( "no_die", 1) 使其不会真死,只会在多次陪练后进入"damaged"状态。kill mu 后完整走通了多回合攻防判定(拳脚招式描述、命中/闪避/格挡三态、 双方血条状态提示逐步下降),最终测试角色不敌木人(因为是镜像战,几 乎是公平的 50/50 对局)力竭死亡——死亡记录 +1,combat_exp 按标准 比例扣减(100000→97500),干净复活回武庙(起始/复活点),全程零 driver 报错。确认多回合攻防结算、伤害、死亡/复活转换均正常工作。

经济系统 + 钱庄存款机制(结果:正常通过;确认"两层货币"是既有设

计,非 bug)

顺带修复的一处真实 programming bug:cmds/adm/eval.lpc

/tmp 目录缺失(AGENTS.md §7.11 同形状)

测试经济系统途中尝试用管理员 eval 指令直接改玩家背包数值时触发: EVAL_FILE = "/tmp/tmp_eval.lpc"(即 work/tmp/tmp_eval.lpc), work/tmp/ 目录在这份归档里从未存在过,write_file() 未加保护直接 抛出运行时错误("Wrong permissions for opening file /tmp/tmp_eval.lpc for append" + "No such file or directory"),debug.log 里有完整栈。 eval 是巫师专用调试指令,不在普通玩家可达路径上,但这确实是一处会 在 debug.log 留痕的真实 crash,且与 AGENTS.md §7.11 记录的"目录缺 失导致未捕获 write_file() 中止"完全同形状,顺手修了:在 write_file() 前加 assure_file(EVAL_FILE);adm/simul_efun/ file.lpc 里的既有 simul_efun,feature/save.lpc/cmds/adm/xcp.lpc 等文件已经这样直接调用,不需要额外声明)。踩坑记录:第一次尝试 按 §7.11 条目里"含前向声明"的措辞加了一行 void assure_file(string file); 前向声明,结果导致 Undefined function called: assure_file ——在这个驱动上,给一个 simul_efun 名字加没有函数体的前向声明会 让编译器把它当成"本地声明但未实现"的函数,反而挡住了向 simul_efun 的正常回退解析;去掉声明、直接裸调用 assure_file(...)(和 feature/save.lpc/cmds/adm/xcp.lpc 里的写法一致)后 update 重编 译成功,eval 1+1 正确返回 Result = 2debug.log 无新错误。

标准 checklist 抽查结果(均已在此前批次修过,本轮仅复核未发现异

常)

已清理

§7.30 uninitialized-mapping accessor sweep (2026-08-20)

Corpus-wide mechanical sweep of the feature/skill.lpc shared-lineage bug (confirmed independently on xiakexing2017/jqxz2015/haiyang2 via round-four testing): 4 accessor(s) in this file returned a raw never-initialized mapping instance variable (defaults to int 0, not ([]), until first assigned), crashing any unguarded keys()/sizeof()/indexing caller for a fresh/untrained character. Fixed at the accessor level (mapp(x) ? x : ([])) per the documented remedy. Verified via lpcc --batch static compile check only (not a live boot) as part of a large mechanical sweep; not individually functionally re-tested live on this lib.