FluffOS是在MUDOS基础上更新完成的,升级为64位,解决了数据上限过低的问题,并增加了许多新功能,修复了大量bug,针对LPC有很好的兼容性,如果你的MUD运行MUDOS V22+版本,可以很容易运行在fluffos上。
广告:欢迎大家捐助支持FluffOS驱动开发:https://bbs.mud.ren/threads/266
驱动的核心文件是driver.exe,如要要启动LIB,需要在命令行界面运行,格式为:
driver.exe config.ini
其中config.ini为游戏的运行时配置文件,具体说明可参考:游戏驱动启动流程详解
下载
FluffOS Windows版下载地址,以下版本都是默认编译,定期更新维护,未修改local_options配置文件。
UTF-8版
v2019版支持UTF-8编码,支持MySQL/SQLite数据库,支持WEBSOCKET,支持TLS,支持调用操作系统中的命令,这里仅提供最新版本下载:
版本提示:当前版本只支持SQLite数据库,不支持MySQL数据库。
新版功能:增加C99风格的变量声明支持(允许在代码块的任何位置声明变量)
编译时间:2026年07月25日
重要提示
在Jan 31, 2024 的 Commit 6bc96f7 中添加的编译时检查,目的是:检测继承链中的未定义函数,帮助开发者发现潜在问题,但过度严格,导致LPC正常特性被误判为bug,造成游戏运行时可能会出现以下警告:
/clone/user/user.c line 131: Warning: BUG: inherit function is undefined or prototype, flags: 2060
return ::set(idx, para)
^
/clone/user/user.c line 131: Warning: BUG: inherit function is undefined or prototype, flags: 2060
return ::set(idx, para)
^
/clone/user/user.c line 131: Warning: BUG: inherit function is undefined or prototype, flags: 2060
return ::set(idx, para)
^
/clone/user/user.c line 131: Warning: BUG: inherit function is undefined or prototype, flags: 2060
return ::set(idx, para)
^
这不是mudlib有BUG,是FluffOS的问题,正常如果调用一个未声明原型且未定义的函数,编译器通常会直接报错(error)并终止编译,而不是仅提示警告(warning)。相关代码在fluffos/src/compiler/internal/compiler.cc的第918行附近,如果你是自己编译的驱动但又不想显示这个Warning,可以修改代码自己重新编译驱动,示例:
if (flags & (FUNC_UNDEFINED | FUNC_PROTOTYPE)) {
if (0) { // 禁用此警告,因为函数在运行时可能已定义
yywarn("DEBUG: inherit function is undefined or prototype, flags: %d", flags);
return 0;
}
}
V2017版
v2017最新版,其中nosave版为推荐版本,旧LIB需要升级代码,而static为mudos驱动兼容版本,可直接运行旧LIB:
- FluffOS v2017_nosave(标准版)
- FluffOS v2017_static(兼容版)
版本说明
关于FluffOS驱动的版本,很多同学还不清楚,这里做一个简要说明,如下所示:
mudos v20 -> mudos v21 -> mudos v22 -> FLuffOS 1.x -> FluffOS 2.x -> FluffOS 3.0 -> FLuffOS v2017 -> FluffOS v2019
| 驱动 | 版本 | 发布时间 | 说明 |
|---|---|---|---|
| MUDOS | 0.8.14 | 1992-4-23 | |
| MUDOS | v20.22 | 1994-11-28 | MUDOS第一个正式版 |
| MUDOS | V21.00 | 1995-3-12 | |
| MUDOS | v22.00 | 2000-8-14 | 国内MUDOS是v22pre11版 |
| MUDOS | v23.05 | 2001-4-1 | |
| FLuffOS | 1.0.0 | 2001-12-22 | FluffOS第一个版本 |
| FluffOS | 1.4.0 | 2006-11-26 | |
| FluffOS | 2.0.6 | 2007-4-21 | |
| FluffOS | 2.27 | 2013-4-29 | FluffOS v2.x最终版 |
| FluffOS | 3.0-alpha2 | 2013-4-29 | |
| FluffOS | 3.0.20170907 | 2017-9-8 | FluffOS v3.x正式版 |
| FluffOS | v2017.2018120701 | 2018-12-8 | FluffOS v2017版 |
| FLuffOS | v2017.2019112002 | 2019-11-21 | FluffOS v2017最终版 |
| FluffOS | v2019.2020010301 | 2020-1-3 | FluffOS v2019版 |
v2019是utf-8编码,后续版本全都统称为v2019。
fluffos 主要更新说明
📅 2026年7月(密集开发期,150+ 次提交)
🔧 编译器大重构
• Flex 词法分析器迁移:手写扫描器替换为生成式 DFA
• 语法现代化:顶层重构、命名引用、规则文件拆分
• Arena 内存分配器:C++ arena allocator,零拷贝扫描,免 malloc 编译
• 分阶段编译输出:lpcc -E / --tokens / --ast / -O0
• 结构化诊断信息:clang 风格的错误位置标注和宏展开提示
• 模板字面量 + mapping 点访问 + 可选链操作符 + %g 格式符
🌐 WebAssembly (WASM) 端口
• 完整驱动运行在浏览器:Emscripten 移植 (#1231)
• 驱动体积极缩:33.5MB → 0.8MB (#1243)
• 多连接 Game 标签 + 驱动日志标签
• PCRE 包在 WASM 启用、崩溃调试弹窗
• 移动端 UX 优化 (#1318)
🛡️ 安全审计(大规模)
• AFL++ 模糊测试:新增 fuzzing harness,发现并修复多个内存安全/DoS 漏洞 (#1317)
• 2026-07-20 审计:一次性修复 10 个确认的驱动稳定性 bug
• 修复 30+ 个内存安全问题(栈溢出、堆溢出、UAF、未初始化内存泄漏等)
• Coverity Scan 缺陷修复(多轮)
• pcre_replace() 堆溢出、sprintf UAF、compress 栈溢出等
✨ 新特性
• recompile_object() efun:原地程序更新,保留对象状态(热重载)(#1237)
• set_clean_up() efun:调度对象的 clean_up 查询 (#918)
• package_ffi:基于 libffi 的 LPC 外国函数接口,支持回调 (#1231)
• & 作为 ref 的语法糖 (#1196)
• 精确十进制运算库 std/decimal
• member_array() flag 4 支持谓词函数
• request_clean_up() 新 efun
• get_os_env() / set_os_env() 环境变量操作
• CRLF 图形簇语义固定 (#1071)
• 浮点指数表示法:2.5e2, 1e3 等
• 每个 efun 都有对应测试(~130 个新测试文件)
📚 文档
• 中文文档国际化 (Docusaurus i18n) (#1246)
• LPC 风格指南 + 格式化器参考
• FFI 参考文档重写
• efun 文档全面补齐
🔨 构建/CI
• 第三方库批量更新:json 3.12.0、fmt 12.2.0、utfcpp 4.1.1、libwebsockets 4.5.8 等
• 月度自动发布流程 (#1253)
• clang-format 全源码格式化
• autogen 版本锁定,防止无意义重编译 (#1263)
📅 2026年6月
- • 文档迁移到 Docusaurus 3.10.1:从 VitePress 迁移,重构文档体系 (#1209)
- • Windows 开发环境支持:新增 Windows 开发环境配置、agent 指南和文档大改 (#1208)
- • 修复 mapping 元素 ref 导致的崩溃和内存泄漏 (#1207)
- • 自动生成驱动配置文档和默认配置文件 (#1206)
- • 修复 dump_trace() 在 Debug 构建中导致 abort (#1192)
- • 修复 first-class functions 编译期错误检测 (#1194)
📅 2025年12月
- • 空值合并运算符:新增 ?? 空值合并、||= &&= ??= 逻辑赋值运算符 (#1149)
- • TLS 服务端 socket 支持:新增证书和密钥配置选项 (#1146)
- • PCRE 标志支持:PCRE 相关 efun 新增标志参数和文档/测试 (#1166)
- • 自动化发布流程:新增多平台自动构建的 release workflow (#1160)
- • 支持 -ftest:/path 单文件测试执行 (#1159)
- • 修复三元运算符无空格编译问题 (#1172)
📅 2025年11月
- • C99 风格变量声明:支持在函数块任意位置声明变量,不再限于函数开头 (#1147)
- • 函数指针简化语法:新增简化版函数指针调用语法 (#1148)
- • 修复默认参数 bug (#1144)、get_argument() 位置参数计数 (#1143)
- • 修复 mixed 值中 function 类型的问题 (#1150)
2024年7月
- 增加on_destruct APPLY方法
- 增加set_notify_destruct和query_notify_destruct二个EFUN
- 更新 efun 文档
2023年12月
- 增加o2json工具
- 增加STREAM_TLS和STREAM_TLS_BINARY模式支持
- 增加socket_get_option和socket_set_option二个EFUN
- 增加函数默认参数功能(重要语法特性变化)
- 更新 efun 文档
2023年10月~11月
- 更新 efun 文档
2023年9月
- 修复
abs(-0.0)的bug - 更新efun文档
2023年8月
- 新增二进制字面量的支持,可用二进制赋值
- 修正部分BUG
- 更新efun文档
2023年5月
- 新增Efun:sys_network_ports
- 新增Efun:sys_reload_tls
- 新增Efun:time_ns
- 修正部分BUG
2022年12月
- 修正external_start()在linux系统下造成僵尸进程的BUG
- 增加支持下划线
_作为数字(包括整数和小数)的分隔符 - 优化编译错误报告,增加了错误位置指示
- 修正造成crash的bug
2022年8月
- nullp增加对class中定义变量的支持
2022年7月
- 修复0.0不为假的BUG
- 增加结构体中使用
.访问属性的语法支持
2022年6月
- 默认开启
PACKAGE_EXTERNAL,支持在游戏中调用系统命令
2022年5月
- 增加MSP的支持,增加apply msp_enable() 和 efun telnet_msp_oob()
2021年7月
- 升级第三方扩展包
- 优化strsrch/explode函数
2021年6月
- 增加efun telnet_ga()
2021年5月
- 增加部分sefun,更新文档
2021年4月
- 增加TLS支持(可以使用https访问)
- 修正部分BUG,更新文档
2021年3月
- 修正部分BUG,更新文档
2021年2月
- 修正部分BUG,更新文档
- 增加对postgresql数据库的支持
- 增加EFUN strptime() 和 strftime()
- EFUN stat() 信息增加文件创建时间
2021年1月
- 增加Efun perf_counter_ns()
- 修正部分BUG,优化部分功能
2020年以前的更新请看代码commit。
fluffos v2019 驱动文件说明
下载解压的文件比较多,其中最核心的文件只有driver.exe一个,只需要这一个文件即可驱动你的LIB,其它的都是一些辅助文件,为方便不同人的需求,不需要的可以无视,具体说明如下:
- bin - 游戏驱动所在目录
- include - 驱动提供的头文件,请直接放到自己LIB的
include中使用 - std - 驱动提供的一些模拟外部函数,可以选择使用,如有需求请在
SIMUL_EFUN_OB中载入 - www - 驱动提供的 websocket http dir,直接放在你的LIB中,可以使用网页连接游戏
- driver.exe - fluffos v2019 驱动文件,需要配合运行时配置文件使用,文件可参考
fluffos.ini - lpcc.exe - lpc代码调试工具,使用方式:
lpcc <config> lpc_file
- include - 驱动提供的头文件,请直接放到自己LIB的
- xMud - 演示LIB,可以直接双击
driver.cmd运行 - driver.cmd - 方便驱动游戏的批处理文件,可直接驱动
xMud测试
如果你没有可驱动的MUDLIB,请从这里下载:MUDLIB fluffos v2017版及v2019版下载汇总
重要提示:在linux或mac系统下,推荐把驱动driver复制到/usr/local/bin目录下,在Windows系统可以直接把driver.exe复制到C:\Windows\目录中,这样你可以在任何地方直接运行驱动,不用配置什么驱动路径。
其它版本
以下版本为特别编译,有修改local_options配置文件,不保证实时更新。
fluffos v2019 dbase版
特别编译版本,内置了自定义efun,适用于泥潭等专版驱动的游戏。
- FluffOS v2019 dbase版(2021年7月更新)
- 内置以下自定义efun:
// 数据存取相关 mixed set(string, mixed, void | object); mixed set_temp(string, mixed, void | object); mixed query(string, void | object); mixed query_temp(string, void | object); mixed addn(string, int, void | object); mixed addn_temp(string, int, void | object); void delete(string, void | object); void delete_temp(string, void | object); // ansi颜色处理相关 string ansi(string); string ansi_part(string); string remove_ansi(string); string remove_bg_ansi(string); string kill_repeat_ansi(string); int noansi_strlen(string); - 对需要存档的对象,请初始化全局变量
mapping dbase = ([]);和nosave mapping tmp_dbase = ([]);。否则会报对象未声明全局映射资料库变量或对象的资料库变量类型错误。 - 注意:本驱动也兼容普通LIB,也就是说官方原始版驱动可以运行的LIB这个版本也可以运行,推荐优先用官方原始版本,本站也只保持官方原始版本驱动的更新,此版驱动不会保持和官方同步更新。
fluffos v2019 DS版
特别编译版本,禁用了PACKAGE_UIDS和OLD_ED适用于DeadSouls等国外没有什么UID系统的MUD。
- FluffOS v2019 DS版(2021年中秋节编译)
- 关于DeadSouls游戏可参考:https://bbs.mud.ren/threads/190
fluffos v2017 Lima版
特别编译版本,禁用了PACKAGE_UIDS和OLD_ED,启用了ARRAY_RESERVED_WORD、NO_ADD_ACTION、NO_LIGHT和NO_WIZARDS等,适用于以Lima为底层的游戏,如三国志。
fluffos 过渡版本
- FluffOS v3.0.20170907(v3.0.20170907版,如果v2017最新版无法使用,可试试此版本)
- FluffOS v2019_gbk.c64dc1b(2019年11月23日编译,支持MySQL数据库,如果v2017最新版无法使用,可试试此版本)
- FluffOS v2019_gbk_static(2019年11月23日编译,可直接运行mudos驱动的LIB,支持MySQL数据库)
说明
v2017版和v2019版的主要区别是v2019 正式版支持多编码输出(源码为utf-8)、支持 WEBSOCKET 访问、支持Full driver tracing、支持更多数据库等,其是对utf-8的支持是最大的区别!
v2019正式版比v2017正式版多了以下efun:
async_db_exec
buffer_transcode
db_close
db_commit
db_connect
db_exec
db_fetch
db_rollback
db_status
dump_jemalloc
dump_stralloc
dump_trace
explode_reversible
hash
parse_add_rule
parse_add_synonym
parse_dump
parse_init
parse_my_rules
parse_refresh
parse_remove
parse_sentence
pcre_match_all
perf_counter_ns
query_encoding
query_notify_destruct
query_privs
secure_random
set_encoding
set_notify_destruct
set_privs
strftime
string_decode
string_encode
strptime
sys_network_ports
sys_reload_tls
telnet_ga
telnet_msp_oob
telnet_nop
time_ns
trace_end
trace_start
如果你的 mud 是MUDOS v21驱动,可以直接使用 v2019_static 版本;
如果要使用 v2017(不支持MYSQL数据库) 或 v2019.c64dc1b,可以对MUD做以下调整:
- static 变量 改为 nosave 变量;
- static 函数 改为 protected 函数;
- 删除#pragram 相关预处理指令(不删除可以运行,但是日志会有warning)
如果使用 v2019 正式版除了按以上要求修改LIB外,还要求LIB必须是utf-8编码,增加 efun 控制输出编码,具体LIB转码教程请参考:国内GBK编码MUDLIB升级UTF-8编码指南
windows系统下为保证驱动在shutdown后自动重启,可以新建批处理文件 runmud.bat,内容如下:
:start
driver.exe config.cfg
goto start
pause
如果你想自己编译驱动,以下内容可能适合你:
如果你想学习MUD游戏开发,以下内容可能适合你:
如果你想使用MUDOS,以下内容可能适合你:
如果你愿意支持LPMUD的发展,支持FluffOS驱动的开发,可以捐助给项目维护和开发者叶雨飞大大,捐助请扫支付宝:
捐赠名单会公布在github主页上 感谢大家支持! 请务必附上要在主页显示的名称!