posts

在线联机原型全集第 28 章导读:副本脚本系统的沙箱与热更版本化

本页是《在线联机原型全集》第 28 章的章节导读,解读可编程副本原型 proto-028-instance-script。该章提供可编程副本能力,支持 Lua 与 JS 沙箱、事件触发器、热更与版本化、可回放,并与房间、战斗、任务、AI 等子系统解耦。导读提炼了本章六个核心验证目标(六条设计原则、脚本包与触发器数据模型、沙箱资源限制、事件驱动触发器引擎、热更灰度与数据迁移、脚本级可观测与签名校验)、推荐语言栈与相邻章节脉络,适合关心脚本引擎与内容热更的读者。

第 28 章是全集从「写死玩法」到「可编程玩法」的转折。前面各章的副本逻辑都编译在服务端代码里,改一次规则要发一次版本。这一章把副本逻辑抽成脚本包:manifest.json 加脚本与资源,带版本号、依赖与迁移脚本,运行在受限沙箱中,通过统一的触发器模型 on(Event) if Condition then Action 驱动。它同时要解决四个工程问题:隔离、确定性、热更与可观测。

本章定位

核心验证目标

  1. 六条设计原则:隔离、确定性、热更与版本化、事件驱动、可观测、安全,构成脚本系统的约束框架。
  2. 脚本包与实例模型:脚本包含清单、脚本、资源与模式定义,实例持有地图、怪物、机关、任务进度与时间轴状态。
  3. 沙箱资源限制:CPU 用指令计数或时间片中断,内存设虚拟机堆上限,时钟暴露受控的 now() 并可注入回放时钟,随机数可播种复现。
  4. 触发器引擎:事件源、条件、行为、效果四段式,支持声明式配置或内嵌脚本,带节流毫秒数防止风暴。
  5. 热更与灰度:脚本包以整体为单位发布,支持蓝绿与灰度发布,向下兼容的数据迁移脚本保证旧存档可用。
  6. 可观测与安全:脚本级指标(执行耗时、内存峰值、触发频率、错误栈)加结构化日志与分布式追踪,禁用危险库、限制 FFI 与文件网络访问,并对脚本包做签名校验。

技术栈建议

层次推荐选型说明
服务端Go(gopher-lua、yaegi、quickjs-go)Go 生态脚本引擎选择丰富
备选Rust(mlua、rquickjs)或 Java(GraalVM Polyglot)Rust 适合性能与安全要求高的场景
协议TCP 或 UDP 加 WebSocket实时走 WebSocket,管理与发布走 HTTP
调度Cron 或 DelayQueue定时触发器与副本超时
基础设施延迟队列、KV、对象存储、发布订阅、KMS支撑脚本分发、状态与签名

本章文章

文章核心内容
在线联机原型全集:第 28 章 副本脚本系统Lua 与 JS 沙箱、事件触发器、热更与版本化、可回放、与房间战斗任务 AI 解耦

与相邻章节的关系

相关专题

全部文章 Game Golang Saas Rust 游戏开发 客户端开发 GameDev Products Lua 写作