From 46d273e5492afadd43581b5b5fc99eabcb890ce2 Mon Sep 17 00:00:00 2001 From: nichinichisou Date: Wed, 30 Sep 2026 01:23:14 +0800 Subject: [PATCH] docs(examples): chart data guide: figures come from a rewrite checked against the game's code --- examples/songs/text.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/examples/songs/text.js b/examples/songs/text.js index 3be4c14..60d74a9 100644 --- a/examples/songs/text.js +++ b/examples/songs/text.js @@ -162,6 +162,7 @@ export const GUIDE = { zh: { title: "定义、推导与成立条件", lead: "本页的数值以游戏客户端的反编译代码为来源:ournotes-deck 按反编译得到的得分逻辑对每张谱面做整局模拟(激走开启与关闭各一次),结果就是 music-data.json 的 deck 统计。" + + "这里的模拟是我们照反编译代码重写的程序,不是在模拟器里直接运行游戏本身的代码;游戏自己的函数只用来分块核对这份重写(见“尚未纳入的机制”一节的“核对范围”)。" + "我们尽量保证正确,但对反编译代码的理解、模型的简化和数据版本都可能出错,所以不能保证。如果本页和其它站点、工具或实机结果有出入,多半是我们这边有误,请以它们为准。" + "下文给出每个量的定义、推导和成立条件;模型没有覆盖的机制单列一节。", sections: [ @@ -291,7 +292,9 @@ export const GUIDE = { ["Snap 技能", "跟随所属成员一起被洗牌;效果多由条件触发(成员乐队、生命、判定数等),取决于具体卡组,本页不计入。条件在整局都满足的加分,相当于在 base 上乘 (1 + y)。"], ["概率发动(条件 4011)", "若发动概率 p 与其它量独立,它的期望贡献等于把该技能值换成 p · x,可以直接填进技能输入;方差会比表中给出的更大。"], ["实机一局耗时", "进入结算的时刻、加载时间都依赖设备和网络,由每局额外耗时 c 表示;支配关系对所有 c ≥ 0 成立。"], - ["核对范围", "deck 的各项规则是对照反编译得到的客户端代码核对的(在模拟器里运行游戏自己的函数,比对输出),还没有拿实机成绩逐局核对。" + ["核对范围", "本页的数值不是直接运行游戏代码得到的:ournotes-deck 是我们照反编译代码重写的模拟,每张谱面的整局都由它计算。" + + "游戏自己的函数只用来分块核对这份重写:在 ARM64 模拟器里单独运行客户端的相关函数(计分、技能的发动与结束、激走连击等),和重写的实现逐例比较,已核对的部分没有发现差异。" + + "没有核对过的部分可能有错;整局从没有用游戏代码跑过,也还没有拿实机成绩逐局核对。" + "判定窗口类技能(4000–4003、13001)尚未接入整局模拟,另有少数激走条件只有合成测试;本页只用普通加分技能,不受这两项影响。游戏更新或热更新补丁也可能改变这些规则。"], ], }, @@ -311,6 +314,7 @@ export const GUIDE = { en: { title: "Definitions, derivations and conditions", lead: "The figures on this page are sourced from the game client's decompiled code: ournotes-deck simulates every chart's whole live (once with Gekisou on, once off) after the score logic read from it, and the results are music-data.json's deck statistics. " + + "The simulation is our own program, rewritten after the decompiled code; it does not run the game's code in an emulator. The game's own functions are used only to check the rewrite piece by piece (see Scope of the checks under the mechanisms left out). " + "We aim for them to be correct but cannot guarantee it: our reading of the decompiled code, the model's simplifications and the data version can all be wrong. Where this page disagrees with other sites, tools or real plays, the mistake is most likely ours; trust them. " + "Below: each quantity's definition, derivation and conditions; the mechanisms the model leaves out have their own section.", sections: [ @@ -440,7 +444,9 @@ export const GUIDE = { ["Snap skills", "Shuffled with their member; mostly conditional (the member's band, life, judgement counts), so deck-specific and left out here. A score up whose condition holds all live multiplies base by (1 + y)."], ["Probability skills (condition 4011)", "With an activation chance p independent of the rest, the expected contribution is that of the value p · x, which can be entered as the skill value; the spread is larger than shown."], ["Real play time", "When the results start and how long loading takes depend on the device and the network; the overhead c stands for them, and dominance holds for every c ≥ 0."], - ["Scope of the checks", "deck's rules are checked against the decompiled client code (the game's own functions run in an emulator and their outputs compared), not yet against real play results live by live. " + ["Scope of the checks", "The figures on this page do not come from running the game's code: ournotes-deck is our simulation, rewritten after the decompiled code, and it computes every chart's whole live. " + + "The game's own functions only check the rewrite piece by piece: the client's relevant functions (scoring, skill execute and finish, the Gekisou combo and others) run alone in an ARM64 emulator and are compared case by case with the rewrite; the parts checked so far show no difference. " + + "Parts not checked may be wrong; no whole live has been run with the game's code, and none has been checked against real play results yet. " + "Judgement window skills (4000–4003, 13001) are not in the whole-live simulation yet, and a few Gekisou conditions only have synthetic tests; the page uses the plain score-up skill only and is affected by neither. A game update or hotfix patch may also change these rules."], ], },