守望先锋地图工坊 · OverPy
写地图工坊,心里有数。
服务器负载的隐患在哪,不用再靠猜。Wright 静态分析地图工坊和 OverPy 代码,把每个问题指到具体一行。
curl -fsSL https://install.wrightkit.dev/wright/install.sh | bash $ wright lint rules.txtWARN lint 1 warning, 1 info findingLint findings warning[min-wait-loop]: loop body waits at the workshop minimum rate; the loop runs at maximum frequency --> rules.txt:31:3 | 31 | While(Is Alive(Event Player)); | | ^ = evidence: static-indicator info[expensive-loop-check]: geometry predicate evaluated inside a loop body may be expensive per iteration --> rules.txt:51:7 | 51 | If(Is In Line of Sight(Event Player, Vector(0, 0, 0), Barriers Do Not Block LOS)); | | ^ = evidence: heuristic 1 file affectedNext wright lint --fix wright analyze wright inspect cost复制,保存,检查。
- 1
从游戏复制
像平时分享代码那样,复制规则或整套设置。
- 2
粘贴成文件
存成文本文件,比如 rules.txt。中英文客户端的代码都可以。
- 3
运行 Wright
每条结果都指向文件里的具体行。改好后粘回游戏。
wright lint rules.txt
能查出什么。
写错名字
动作或值的名字写错了,粘回游戏前就能发现。
治愈(事件玩家, 空, 10);error[unknown-action]: unknown action spelling '治愈' for locale 'zh-cn' (did you mean '治疗'?)
没有等待的 While
循环一直不停,容易让服务器过载。
While(存活(事件玩家)); 治疗(事件玩家, 空, 10); End;warning[while-without-wait]: loop body contains no wait call and the loop's boundedness is unknown (data-dependent condition with no static counter pattern), so the loop may repeat without yielding
只等 0.016 秒
循环会以游戏允许的最快速度运行。
While(存活(事件玩家)); 等待(0.016, 无视条件); 治疗(事件玩家, 空, 10); End;warning[min-wait-loop]: loop body waits at the workshop minimum rate; the loop runs at maximum frequency
循环里做视线检测
每一轮都算一次几何检测,开销可能很大。
While(存活(事件玩家)); 等待(0.25, 无视条件); If(在视线内(事件玩家, 矢量(0, 0, 0), 屏障不会阻挡视线)); 治疗(事件玩家, 空, 10); End; End;info[expensive-loop-check]: geometry predicate evaluated inside a loop body may be expensive per iteration
更多工具。
分析
元素开销、最复杂的规则、服务器负载隐患,以及被最多规则共用的变量。每条结果都标明是精确值、静态推断还是经验估计。
wright analyze结构
查询规则、符号、引用、控制流和调用关系。inspect cost 列出每条规则的元素开销,并和上一次运行对比。
wright inspect修改先校验
重命名变量或子程序,或用 lint --fix 应用修复。Wright 先给出校验过的 diff,加 --write 才写入。
wright rename查名字
从相近的拼写查到动作或值的准确名称和签名,地图工坊和 OverPy 都能查。
wright lookup编辑器
在支持语言服务器的编辑器里边写边报错。地图工坊文件支持悬停提示、跳转到定义和查找引用;OverPy 文件支持跳转和重命名。VS Code 扩展暂时还没有。
wright-lspCI
在 GitHub Actions 中运行,问题直接标在 PR 上。
wright lint
地图工坊、OverPy 和 OSTW。
地图工坊
已支持完整支持原生语法,英文和简体中文客户端的代码都能直接检查。
workshop-rsOverPy
部分支持照常写 .opy。Wright 负责检查、lint、分析和重命名,并编译成地图工坊代码,结果以原版 OverPy 编译器为准。
opy-rsOSTW
已暂停deltin-rs 能解析和类型检查 OSTW,但功能开发已暂停,Wright 暂不支持。
deltin-rs
AI 编程助手,也能用。
JSON 输出
任何命令加上 --format json。统一格式,带版本号。
固定编号
诊断编号、规则 ID 和退出码固定不变,助手可以放心判断。
Agent 指南与 MCP
wright agent install 把 Wright 指南装进项目;加上 --mcp claude、cursor 或 vscode,同时注册 MCP 服务器。
- 从需求到改动
获取 Wright。
一次安装,wright 和 wright-lsp 都有。
Homebrew
Apple 芯片与 Intelbrew install wrightkit/tap/wright 安装已发布的 wright 和 wright-lsp 可执行文件。
安装脚本
curl -fsSL https://install.wrightkit.dev/wright/install.sh | bash 各平台的发布包和校验和都在 GitHub Releases 页面。