[UIAF] 讨论 v1.2 :扩展为多游戏成就交换格式,并支持绝区零与崩坏:星穹铁道 #18
Replies: 5 comments 2 replies
|
大大大大肘子😭 |
|
昨天Tibo按按钮了,故继续添加了HSR成就的相关分析 依旧https://github.com/Guest-Liang/HSRAchievementExporter 崩坏:星穹铁道正式样本在我的 4.4 账号完整成就快照HSRae-achievements-20260729-042750.json中:
字段组合
字段 3 使用 protobuf wire type 2 单独编码为 packed varint 数组,不计入上表的 varint 字段组合。 当前字段判断
字段 1 的进度证据包括: 字段 3 的 packed 数组样本当前 1887 条记录中只有 6 条包含字段 3:
其中多组数值可直接对应角色 ID:
这几组可核对样本的字段 1 恰好等于字段 3 数组长度,符合“保存已经命中过的不同条件键并据此累计进度”的解释。 字段 3 与完成或领奖状态无关:它只出现在 6 条未完成记录中,本次完成和领奖的记录均没有字段 3。交换格式也不需要它,因此可以只在完整原始备份中保留。 状态值的三次受控样本点击展开详细分析过程三次快照分别为:
第二次快照中新完成的 5 条正式记录全部发生: 第三次快照中,这 5 条记录又全部发生: 这 5 个 ID 为: 两次导出之间另完成的 正式成就状态语义已经由前后差分确认:
18 个元数据外 ID 的状态始终为 6 条 4.4 空文本但实际可达成的正式 ID (像fate联动的成就)目前 Liyin
游戏内这些成就实际可以达成,服务端快照中也存在对应记录。本次已实际观察到:
因此更可能是当期成就文本元数据没有更新完整,而不是 ID 无效。 星穹铁道互斥成就的实际表现liyin.space 当前通过 当期文件定义了:
与 4.4 服务端快照交叉检查后:
Liyin 显示的最大可完成数量为 1806,正好满足 因此星铁的互斥状态应当与绝区零一样由消费端推导:
尤其需要注意:
|
|
因为现在整个米家相关的开发社区都十分的疲软,如果提了新标准其实可以自家的App先做上,形成事实标准,后面有兼容问题了再慢慢调整就行了
|



Uh oh!
There was an error while loading. Please reload this page.
自己搓了个绝区零的成就导出 Guest-Liang/ZZZAchievementExporter,本来想pr一下添加到UIGF-org的,不过翻了一下目前针对成就记录导出的UIAF还只有原神一个,故提出此提案
Note: 部分内容由AI生成,并经过本人人工核对
现行 UIAF v1.1 面向原神成就,根对象只有一份
info + list。 UIAF 或许可以参考UIGF v4.2 的一级游戏键名,在后续版本中以hk4e、nap区分不同游戏,并加入绝区零成就支持。或许说不定还有崩坏:星穹铁道呢正式样本
在我的3.0账号样本ZZZae-full-20260724-142544 - 副本.json中:
各字段组合如下:
{1,3,4}{1,3,4,5}{1}{1,2}目前的字段判断为:
字段 2 的证据相当好:
“累计喂食 3 次”的未完成记录,字段 2 为 1;

“累计 9 次通关”的未完成记录,字段 2 为 3;

“回复 10 条帖子”的未完成记录,字段 2 为 7;

字段 5 的几个样本则包括:
累计登录 365 天,字段 5 为 751;(后来又登录了几天,和导出不是同一天)

持有不少于 50 枚鸣徽,字段 5 为 73;

累计获得 2000 积分,字段 5 为 3077;

单次伤害超过 1000000,字段 5 为 573692416;

总得分达到 30000,字段 5 为 40000。

互斥成就的实际表现
zzz.liyin.space 当前通过
MultipleChoice.json维护互斥成就组,并在导入一条已完成分支后,将同组其他分支推导为“已选其他”。相关状态处理可参考
achievement.js。当前
MultipleChoice.json定义了 6 个互斥组,共 14 个分支 ID。与样本快照交叉检查后:因此,目前没有发现服务端直接返回的“已选其他”状态数字。互斥状态需要:
这与 zzz.liyin.space 的纯导入行为一致:交换文件只提供已完成的分支,Liyin 根据自己的互斥组元数据自动把其他分支标记为“已选其他”。
建议增加 UIGF 的一级游戏键名
UIGF v4.2 使用
hk4e、hkrpg、nap等一级字段区分游戏。它的各游戏字段实际是账号数组,每个元素带uid、timezone和list,因此 UIGF 同时支持同一文件中的多游戏和多账号。UIAF v1.1 当前没有 UID,ZZZae 目前的成就导出也暂时没有提取 UID。建议先用 UIGF 的“按游戏键名读取”思路:
这样,一个只支持原神的工具只读取
hk4e,一个只支持绝区零的工具只读取nap,同时支持两款游戏的工具可以在同一文件中读写两者。各游戏共享基础记录结构,并分别定义状态语义
目前原神与绝区零的成就记录都可以使用相同的基础字段:
hk4e原神可以完整保留 UIAF v1.1 的现有记录语义:
nap基于当前绝区零正式服样本:
建议的状态语义为:
绝区零的转换规则可以是:
id;timestamp;status = 2;status = 1;【分支成就也可以理解为完成不了的成就,UNFINISHED语义上应该也没问题】253402271999(9999-12-31 23:59:59)哨兵;All reactions