SuperAPI AI 工具集

roblox-performance

通用与其它

查看项目

更新于 10-15 21:37

技能介绍

用途:用于 Roblox 游戏的性能诊断与优化,先测量再优化,判断瓶颈属于服务器计算、客户端计算(CPU/GPU)、内存、网络还是加载时间,再选用对应工具。

主要工具:开发者控制台(游戏内 F9)查看错误、按类别的服务器/客户端内存、网络与脚本活动,可在线上服务器使用;MicroProfiler(Ctrl+Alt+F6,⌘⌥F6;服务器端经开发者控制台)查看逐帧耗时、尖峰并可导出单帧细节;脚本分析器(Studio/开发者控制台)采样 Luau 耗时函数;Luau 堆快照(开发者控制台→内存→Luau 堆)查看表、闭包、实例的持有关系以定位泄漏;场景分析(Studio)查看脚本内存、未挂载实例、实例构成、音频/动画内存与三角形数,也可经 Studio MCP 使用 SceneAnalysisService;性能统计/调试统计(Ctrl+Alt+F7 / Shift+Ctrl+F1–F5)显示实时 CPU/GPU/内存/网络浮层;网络模拟(Studio Alt+S)测试延迟、抖动与丢包;Creator Hub 性能仪表盘查看按设备的实时 FPS、服务器心跳、内存与崩溃率。

标注自有代码:用 debug.setmemorycategory("EnemyAI") 将线程分配的内存归入指定类别,用 debug.profilebegin("EnemyAI.think")/debug.profileend() 在 MicroProfiler 中显示带标签的条。

目标参考:客户端在中端手机约 60 FPS(约 16.6 ms/帧);服务器心跳接近 60 Hz;低端设备客户端内存远低于约 1–1.5 GB,关注 PlaceMemory、LuaHeap、GraphicsTexture、Sounds、Animation 等类别。

常见问题与修复:内存随时间增长多因连接泄漏、以玩家/实例为键的表、已销毁仍被引用或未挂载实例,需按玩家与角色断开清理、在 PlayerRemoving 清表,并用场景分析与堆快照排查;多玩家服务器卡顿多因每帧逐玩家循环、while true do task.wait() end、重负载远程处理与大量未锚定部件物理,应改为事件驱动、单一调度循环、限流思考频率、锚定静态部件;客户端 FPS 下降多因部件/绘制调用过多、多光源阴影、透明与粒子过度绘制、逐帧 UI 更新,应合并/实例化网格、对小部件关闭阴影、减少阴影光源与粒子、仅在变化时更新 UI;周期性尖峰多因自动保存/GC 突发、玩家间同步循环、大 Clone,应随机错峰、对象池、跨帧分摊;高延迟/回弹多因远程刷屏、大负载、大量属性复制,应批处理、增量压缩、限流、客户端补间;加入时间长多因场景过大、唯一资源多、未启用流式加载,应启用流式加载、SLIM LOD、减少唯一网格/纹理,仅对关键资源用 ContentProvider:PreloadAsync。

Luau 热路径:在循环外缓存服务、实例与 RaycastParams;避免每帧 FindFirstChild/GetDescendants,改用 CollectionService 标签或维护集合;用 Heartbeat/PreSimulation 的 deltaTime 而非 task.wait() 循环;避免热循环中每帧创建闭包/表,用 table.clear 复用缓冲;数学密集代码可用 --!native(整脚本)或 @native(单函数),但不要全量开启,因编译时间与全局原生代码内存上限;--!optimize 2 是线上编译方式,不要用 Studio 计时做微基准。

渲染与资源:更少更大的部件;共享 MeshId 的 MeshParts 会被实例化;并集(PartOperation)可能昂贵,用场景分析检查三角形数;细节网格用 RenderFidelity = Automatic/Performance,装饰网格用 CollisionFidelity = Box/Hull,纯装饰设 CanCollide/CanQuery/CanTouch = false;限制投射阴影的 PointLight/SpotLight/SurfaceLight,限制 ParticleEmitter.Rate 与粒子尺寸,控制 Beam/Trail 数量;纹理复用并保持合理分辨率(多数 1024² 上限),少用 SurfaceAppearance;启用流式加载,静态模型设 Model.LevelOfDetail = SLIM,StreamOutBehavior = Opportunistic 释放内存。

物理:锚定所有不需要移动的部件;减少并简化碰撞(CollisionFidelity、碰撞组跳过配对),不需要 Touched 时设 CanTouch = false;避免每帧设置未锚定部件的 CFrame,改用约束或锚定加 CFrame;用 workspace:BulkMoveTo(parts, cframes, Enum.BulkMoveMode.FireCFrameChanged) 批量移动锚定部件;PhysicsSteppingMethod = Adaptive 可降低物理 CPU。

并行 Luau:不同 Actor 下的脚本可并行运行,用 RunService.Heartbeat:ConnectParallel 进入并行阶段,task.synchronize()/task.desynchronize() 切换阶段;同一 Actor 内脚本串行,需拆分到多个 Actor;并行阶段不能 require 或修改多数实例,可用 Actor:SendMessage/BindToMessageParallel 或 SharedTable 通信。适合射线检测校验、程序化生成、寻路相关数学与大型模拟,不适合微小任务与实例密集工作。

限制与说明:资料未提供具体收费、价格与平台支持信息;部分工具入口与快捷键以官方当前版本为准。相关技能包括 roblox-architecture(流式加载)、roblox-networking(带宽)、roblox-physics、roblox-npc-ai、roblox-studio-mcp。