01
两边的参数对照
中间层是「1080p 下的像素几何」。左右两列是各自游戏里的原生参数,中间是它们共同对应的像素值。
| 几何量 | CS2 参数 | 像素 @1080p | VALORANT 参数 |
|---|
02
代码格式
CS2 分享代码
CSGO- 后 25 个字符,用一套去掉了易混字符(I、g、l、0、1)的 57 字符字典当作大整数,转成 18 字节。
字节 0 是校验和(后 17 字节之和取模 256),其余按位段存放各项设置。
最容易踩的坑:代码字符要倒着读 —— 首字符是最低位。正序读出来的字节校验和永远对不上。
VALORANT 代码
分号分隔的 键;值 序列,按 P(主准星)/ A(开镜)/ S(狙击)分段。
规则是等于默认值的项不写,所以默认值必须准确,否则生成的代码会带一堆冗余项。
本站只迁移主准星段;开镜与狙击段原样保留,不改动。
验证
CS2 用 6 组基准夹具:解码字段逐项比对,且重新编码必须还原出完全相同的原始代码。6/6 通过。
VALORANT 没有公开夹具,改用 35 个真实职业选手代码做语义往返:解析 → 生成 → 再解析,两次结果必须一致。35/35 通过。
这一步抓出了三个真实缺陷:u 被错误地绑定在 c;8 上、0v 被错误地绑定在 0g 上、以及线组关闭后误吞掉后续字段。
03
为什么这个不叫"精确换算"
灵敏度有精确解,准星没有
灵敏度可以锁定 cm/360 —— 那是一个物理量,两边能做到数学上完全相等。
准星不行。两个游戏的绘制逻辑本就不同:VALORANT 有内外双线,CS2 有 split 与描边外扩;CS2 的手臂长度是相对单位,VALORANT 直接是像素。不存在一个"正确答案"。
那这里做的是什么
把两边都归一到「1080p 下的像素几何」再互转,让手臂长度、粗细、间隙、颜色在屏幕上占据相同的像素。
换算基准:CS2 的 cl_crosshairsize 1–3 对应约 2–6 像素,即 1 单位 ≈ 2 像素。这个系数在上方可调。
间隙以 cl_crosshairgap = -2 为视觉闭合的零点。
精确的部分 / 近似的部分
精确:代码的解码与编码。贴进来的代码解析出的每个字段、以及生成的代码,都是可验证的。
近似:几何映射。另外 VALORANT 的长度 / 粗细 / 间隙只接受整数像素,转换后会有取整偏差,上方会标出来。
所以预览才是判据 —— 两边用同一套绘制逻辑画出来,差别只来自参数本身。