守望先锋地图工坊 · OverPy
写地图工坊,心里有数。
服务器负载的隐患在哪,不用再靠猜。Wright 静态分析地图工坊和 OverPy 代码,把每个问题指到具体一行。
curl -fsSL https://install.wrightkit.dev/wright/install.sh | bash $ wright lint rules.txtWARN lint 2 finding(s) across 6 rule(s)warning[min-wait-loop]: loop body waits at the workshop minimum rate; the loop runs at maximum frequency --> rules.txt:18:3info[expensive-loop-check]: geometry predicate evaluated inside a loop body may be expensive per iteration --> rules.txt:20:4复制,保存,检查。
- 1
从游戏复制
像平时分享代码那样,复制规则或整套设置。
- 2
粘贴成文件
存成文本文件,比如 rules.txt。中英文客户端的代码都可以。
- 3
运行 Wright
每条结果都指向文件里的具体行。改好后粘回游戏。
wright lint rules.txt
能查出什么。
写错名字
动作或值的名字写错了,粘回游戏前就能发现。
治愈(事件玩家, 空, 10);error[unknown-action]: unknown action spelling '治愈'
没有等待的 While
循环一直不停,容易让服务器过载。
While(存活(事件玩家)); 治疗(事件玩家, 空, 10); End;warning[while-without-wait]: loop body contains no wait call
只等 0.016 秒
循环会以游戏允许的最快速度运行。
While(存活(事件玩家)); 等待(0.016, 无视条件); 治疗(事件玩家, 空, 10); End;warning[min-wait-loop]: loop body waits at the workshop minimum rate
循环里做视线检测
每一轮都算一次几何检测,开销可能很大。
While(存活(事件玩家)); 等待(0.25, 无视条件); If(在视线内(事件玩家, 矢量(0, 0, 0), 屏障不会阻挡视线)); 治疗(事件玩家, 空, 10); End; End;info[expensive-loop-check]: geometry predicate evaluated inside a loop body
更多工具。
分析
找出最复杂的规则,以及被最多规则共用的变量。
wright analyze结构
项目里所有规则、变量和引用。
wright inspect编辑器
在支持语言服务器的编辑器里边写边报错,还能跳转、补全和重命名。VS Code 扩展暂时还没有。
wright-lspCI
在 GitHub Actions 中运行,问题直接标在 PR 上。
wright lint
地图工坊、OverPy 和 OSTW。
地图工坊
已支持完整支持原生语法,英文和简体中文客户端的代码都能直接检查。
workshop-rsOverPy
部分支持照常写 .opy。Wright 负责检查,并编译成地图工坊代码,结果以原版 OverPy 编译器为准。
opy-rsOSTW
开发中deltin-rs 开发中,之后接入 Wright。
deltin-rs
AI 编程助手,也能用。
JSON 输出
任何命令加上 --format json。统一格式,带版本号。
固定编号
诊断编号、规则 ID 和退出码固定不变,助手可以放心判断。
Agent Skill
装上 wrightkit/skills 里的 wright skill,助手就会用 Wright。
- 从需求到改动
- 修改先校验
- 项目查询
- 开销评估
获取 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 页面。