SuperAPI AI 工具集

roblox-networking

设计与创作

查看项目

更新于 10-16 02:32

技能介绍

用途:设计或审查 Roblox 客户端—服务器通信,涵盖 remotes、bindables、复制、网络所有权、输入校验、限流和防漏洞。

权威边界:服务器对游戏状态与模拟具权威性;客户端为响应性做模拟并渲染服务器下发的信息。经济、进度、战斗结果、竞技移动等可被滥用内容必须在服务器验证或模拟。

通信工具:RemoteEvent 为跨边界即发即忘,客户端用 RemoteEvent:FireServer(...),服务器处理函数收到 (player, ...);服务器用 FireClient(player, ...) 或 FireAllClients(...)。RemoteFunction 为请求/响应且会让出,客户端 InvokeServer(...) 对应服务器 OnServerInvoke(player, ...);服务器调用 InvokeClient 会让服务器阻塞至客户端返回,恶意或卡顿客户端可无限挂起服务器,应避免,若必须则设超时并把客户端视为不可信。BindableEvent/BindableFunction 只在同一侧通信。通则:客户端发送意图,服务器决定结果并复制。

服务器权威技术:验证每个客户端动作(距离、频率、前置条件、体力、视线等);关键系统在服务器模拟;以服务器表或 Attributes 为真值源,而非 leaderstats 或客户端可见值;按需复制,避免每帧广播整个背包。

网络所有权:未锚定部件与装配体有网络所有者(通常为最近玩家或服务器)。服务器可调用 BasePart:SetNetworkOwner(player 或 nil) 设置整个连通装配体所有权;锚定部件恒由服务器拥有且不可手动更改。对载具、弹射物、可推动物很关键,误用会导致回弹或易被利用。

常见漏洞与防御:速度/飞行/穿墙用服务器移动验证或物理所有权加校正;Remote 刷屏或复制用按玩家限流、服务器冷却与参数校验;LocalScript 注入或免费模型后门要审计资产并做服务器验证;篡改 leaderstats 视为纯显示;信息泄露避免把秘密模型放在复制位置,使用 ServerStorage/ServerScriptService,CanQuery 与碰撞组仅影响空间查询与物理碰撞,不是保密手段。限流可维护每玩家每动作的上次时间表,用 Remote 检查间隔,滥用则警告或踢出。Capabilities 为实验性安全层,需设 Workspace.SandboxedInstanceMode = Enum.SandboxedInstanceMode.Experimental,再设 Sandboxed = true 并分配 SecurityCapabilities。

访问控制:用 Instance streaming 控制客户端可见内容,机密数据留在服务器。变现方面游戏通行证仅在 PromptGamePassPurchaseFinished 且 wasPurchased == true 时授予,并在 PlayerAdded 用 UserOwnsGamePassAsync 复验;开发者产品与订阅仅在服务器 ProcessReceipt 回调内授予;DataStore 只从服务器脚本写入;客户端声称已购买并索取物品的 Remote 必须忽略或仅作提示并在服务器复验。

放置规则:权威逻辑、经济、进度、战斗解算、DataStore 访问放在 ServerScriptService 或仅服务器模块;UI、输入、外观预测、本地特效放在客户端;共享纯函数、常量、Remote 定义放在 ReplicatedStorage 模块;不确定处用 RunService 上下文检查。脚本 scripts/RateLimiter.lua 提供按玩家按动作限流器,含最小间隔、令牌容量与补充、有界动作键分配与拒绝原因,专用实例调用 destroy() 清理,RateLimiter.default 为共享单例。

参考文件:exploits-and-defenses.md 用于移动漏洞、Remote 滥用、资产后门、数据暴露审查;remote-and-bindable-patterns.md 用于选择事件与函数或定义负载;server-authority-and-validation.md 用于校验 Remote 参数、执行冷却、审查客户端预测。