关于 roblox-luau-architecture
Roblox Luau Architecture 用于将 Roblox 游戏代码组织为模块化、由服务器负责权威控制的系统。它指导脚本检查、模块边界、远程调用契约,以及通过试玩和控制台检查进行验证。
主要功能
- 01架构调整前检查脚本
- 02按客户端与服务器职责放置逻辑
- 03定义并验证远程调用契约
- 04设计聚焦且内聚的模块
- 05规划迁移与试玩检查
适用场景
- 01将分散脚本重构为服务
- 02审查客户端与服务器的信任边界
- 03按清晰模块职责添加功能
- 04在试玩中验证架构变更
MCP 相关
该技能指导使用 Roblox Studio MCP 检查脚本、应用编辑、启动或停止试玩,并查看控制台输出。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ashexplained/ roblox-skills --skill roblox-luau-architecture安装后在 Claude Code 中输入/roblox-luau-architecture确认已加载。
详细介绍
Roblox Luau 架构
目标
让 Roblox 游戏代码保持模块化、以服务器为权威,并且易于扩展。更改架构前,使用 Roblox Studio MCP 检查现有脚本。
MCP 工作流
- 从
list_roblox_studios、必要时的set_active_studio和get_studio_state开始。 - 使用
script_search或script_grep定位代码。 - 编辑前,使用
script_read阅读相关脚本。 - 使用
multi_edit应用编辑。 - 使用
start_stop_play进行游戏测试。 - 检查
get_console_output,确认没有引入回归问题。
放置规则
- 将权威游戏逻辑放在
ServerScriptService或服务器拥有的模块中。 - 将共享常量、类型定义、远程对象和纯共享辅助函数放在
ReplicatedStorage中。 - 将玩家输入、摄像头、仅本地 UI 和视觉预测放在客户端脚本中。
- 尽量少用工作区脚本,并确保用途明确;优先使用管理带标签实例或已配置文件夹的服务式脚本。
- 避免在客户端和服务器之间分散重复常量。
远程边界
- 将客户端发来的每个远程载荷都视为不可信。
- 优先使用范围明确的远程对象,并为其指定明确的操作名称和类型化载荷检查。
- 对可能影响经济系统、库存、战斗或放置操作的玩家触发远程调用进行限流。
- 谨慎使用 RemoteFunctions;避免从客户端调用会长时间挂起的服务器调用。
- 绝不允许客户端决定货币、库存、所有权、伤害、任务完成状态或购买发放内容。
模块模式
以下情况使用模块:
- 具有
Init和Start式生命周期的服务。 - 数据访问封装层。
- 经济计算。
- 奖励表和数值平衡常量。
- 客户端 UI 控制器。
- 确定性强且副作用少的共享实用函数。
模块应保持精简,让其他系统可以依赖它,而无需导入无关行为。
优先使用深模块
目标是构建深模块:以小巧、稳定的接口封装大量行为。浅模块的接口几乎和实现一样复杂,只有在它确实隐藏了复杂性时才值得保留。
- 接口 = 调用方必须了解的一切:函数签名,以及不变量、执行顺序、错误模式和可调用它的一方(客户端/服务器)。在 Roblox 中,远程对象的约定也是其接口的一部分。
- **删除测试:**设想删除某个模块。如果复杂性随之消失,它只是一个传递层,应将其内联。如果同样的复杂性在多个调用点重新出现,它就发挥了作用,应予以保留并加深。
- **内聚性:**将相关行为及其重要状态规则放在同一个模块中,这样修改、错误或推理所需的知识都能集中在一处,而不是分散在 LocalScript、服务器 Script 和三个常量文件中。
- 一个适配器满足某个接口只是设想中的接缝;两个才是真正的接缝。不要为单一实现增加间接层。
好的接缝应以游戏自身的术语命名(例如“硬币经济服务”“任务追踪器”),而不是泛化的名称(例如“Handler”“Manager”)。
重构输出
提出或进行架构更改时,请包含:
- 当前脚本的位置和职责。
- 建议的模块/服务边界。
- 远程约定的更改。
- 迁移步骤。
- 游戏测试和控制台检查。
后续步骤
使用 roblox-to-issues 将架构工作拆分成小任务,一次安全地落地一项,并使用 roblox-playtest-qa 验证每项更改。对于重要状态模块,使用 roblox-security-economy 审查信任边界;对于清理现有技术债,使用 roblox-code-maintenance-refactor。
评论
支持 Markdown