Compare commits

...

4 Commits

44 changed files with 6695 additions and 701 deletions

View File

@ -0,0 +1,144 @@
---
name: th1-game-archive
description: TH1 project-specific guide for the new local save/archive system: GameRecord, GameRecordKind Ended/Manual/Quick, GameArchiveManager, begin/quick_continue/continue/end files, single-player and multiplayer resume from records, manual saves, quick saves, end records, archive validation, spectator/OSS/bug-report archive packaging, and removal of legacy map_archive/PlayerPrefs continue flows. Use whenever Codex works on TH1 continue game, save/load, game records, local archives, surrender/end save behavior, bug report save attachments, spectator archive loading, or any change that might affect single/multiplayer resume reliability.
---
# TH1 Game Archive
## Core Rule
The current save system is `GameRecord`-indexed. Continue/resume must start from a `GameRecord`, not by scanning files or using `MapID`.
`GameRecord` is only an index and display row. The real `MapData` bytes live under `Config/GameArchives`.
## First Files To Read
- `Unity/Assets/Scripts/TH1_Logic/GameArchive/GameArchiveManager.cs`
- `Unity/Assets/Scripts/TH1_Logic/GameRecord/GameRecordManager.cs`
- `Unity/Assets/Scripts/TH1_Logic/Core/Main.cs`
- `Unity/Assets/Scripts/TH1_Data/MapData.cs`
- `Unity/Assets/Scripts/TH1_Logic/Core/GameLogic.cs`
- `Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideMenuView.cs`
- `Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideMultiplayView.cs`
- `Unity/Assets/Scripts/TH1_Logic/Editor/SpectatorEditorWindow.cs`
- `Unity/Assets/Scripts/TH1_Logic/Oss/PlayerBugReportService.cs`
- `Tools/PlayerBugViewer/player_bug_viewer.py` when changing player bug report archive restore.
If the change touches multiplayer host resume or `GameStart`, also use `th1-network-sync`.
If the change touches surrender or other action execution side effects, also use `th1-action-logic`.
## Data Model
`GameRecordKind` has three business categories:
- `Ended`: complete finished match record. It indexes `BeginArchiveId` and `EndArchiveId`; it is not resumable.
- `Manual`: player-created general save. It indexes `BeginArchiveId` and `ContinueArchiveId`; it is resumable and can have many records.
- `Quick`: automatic quick save. It indexes `BeginArchiveId` and `ContinueArchiveId`; it is resumable, but only one exists globally.
Archive files are grouped by folder:
- `Config/GameArchives/begin/{beginArchiveId}.dat`
- `Config/GameArchives/quick_continue/quick.dat`
- `Config/GameArchives/continue/{continueArchiveId}.dat`
- `Config/GameArchives/end/{endArchiveId}.dat`
`Quick` uses fixed record id and file id `quick`. Manual/end/begin ids are GUID-like strings from `GameArchiveManager`.
## Write Flow
- New single-player game: write begin after map generation, before first turn refresh.
- New multiplayer host game: write begin only after `GameStart` broadcast succeeds.
- Ended game: `FinishState.Enter` calls `GameArchiveManager.SaveEndRecord(Main.MapData)`.
- Per-turn quick save: `MapData.RefreshTurn` calls `SaveQuickContinueRecord`.
- Manual save: UI or upper layer should call `GameArchiveManager.SaveManualGameRecord(recordName)`.
- Manual delete: call `GameArchiveManager.DeleteManualGameRecord(record)`; do not delete quick/end records through this path.
Do not save archives directly from surrender action. Surrender should mutate game state through the action flow; `AfterExecute` refreshes settlement, `GameLogic.Update` enters `Finished`, and `FinishState.Enter` writes end and clears quick.
`SaveEndRecord` writes end, creates an `Ended` record except for Tutor, and deletes the current begin's quick record/file. Manual saves survive game end until the player deletes them.
## Resume Flow
Public resume should go through:
```csharp
Main.Instance.ResumeMatch(GameRecord record, MapData prereadMap = null)
```
That method:
- validates/loads the `Quick` or `Manual` continue archive via `GameArchiveManager.TryLoadContinueArchive`;
- rejects null records, bad archive files, wrong `NetMode`, and surrendered continue saves;
- calls `GameArchiveManager.SetActiveRecord(record)` so future quick/manual/end saves keep using `record.BeginArchiveId`;
- dispatches by `record.NetMode` to single-player resume or host multiplayer resume.
Resume methods must not create a new begin. New games create begin; record resume reuses the record's begin.
For UI availability:
- single-player quick resume button: `GameArchiveManager.HasQuickResumeArchive(NetMode.Single)`
- multiplayer host resume toggle: `GameArchiveManager.HasQuickResumeArchive(NetMode.Multi)`
- per-record validation: `GameArchiveManager.HasUsableResumeArchive(record)`
These checks validate only the relevant record/file, not all local archives.
## Read/Export Flows
Use `GameArchiveManager` helpers:
- Continue: `TryLoadContinueArchive(record, out map)`
- Begin: `TryLoadBeginArchive(record, out map)`
- End: `TryLoadEndArchive(record, out map)`
- Current begin for OSS end upload: `TryLoadCurrentBeginArchive(expectedMode, out map)`
- File path for packaging: `TryGetArchivePath(kind, archiveId, out path)`
Spectator tools, OSS collect upload, and player bug reports should build archive pairs from `GameRecordData.Records`, then use the helper APIs above. Do not parse archive filenames.
Player bug report zip manifests include `archiveFolder`, and the viewer restores files under `Config/GameArchives/{archiveFolder}`. The Python viewer cannot safely synthesize `game_record.dat` because it is MemoryPack data.
## Compatibility
`GameRecord` and `GameRecordData` are MemoryPack types. Do not reorder existing fields. New fields must be appended at the end, and compatibility-sensitive MemoryPack changes require explicit user confirmation.
`MapID` is legacy. Keep it for old record display/compatibility if needed, but do not use it to locate current archives or resume games.
The legacy flow is removed:
- no `MapData.SaveMapData`
- no `MapData.GetMapData`
- no `MapData.HasMapArchive`
- no `PlayerPrefs` keys `Archive` / `MultiArchive`
- no `map_archive_*.dat` scanning or filename parsing
- no resume by `mapId`
## Checks Before Finishing
Run:
```powershell
dotnet build Unity/Assembly-CSharp.csproj --no-restore
```
Also run editor build if editor windows/tools changed:
```powershell
dotnet build Unity/Assembly-CSharp-Editor.csproj --no-restore
```
Search for legacy regressions:
```powershell
rg "SaveMapData|GetMapData\\(|HasMapArchive|HasArchive\\(|HasMultiArchive\\(" Unity/Assets/Scripts -n
rg "map_archive|PlayerPrefs\\.(SetInt|GetInt)\\(\"(Archive|MultiArchive)\"" Unity/Assets/Scripts Tools MD -n
rg "useCurrentArchiveSession|ResumeMatch\\(uint|MainMemberResumeMatch\\(" Unity/Assets/Scripts -n
```
## Pitfalls
- Do not scan all local saves to build a continue list; use GameRecord lists and validate one selected record.
- Do not show a record as resumable until `TryLoadContinueArchive` or `HasUsableResumeArchive` passes.
- Do not let single-player and multiplayer quick resumes share UI state; always filter by `NetMode`.
- Do not close multiplayer room UI or advance local host state until `GameStart` succeeds.
- Do not let a failed resume leave `GameArchiveManager.CurrentBeginArchiveId` bound to the attempted record.
- Do not delete manual saves on game end.
- Do not write end from action execution before settlement refresh; let `FinishState.Enter` own end saving.

View File

@ -0,0 +1,4 @@
interface:
display_name: "TH1 Game Archive"
short_description: "TH1 GameRecord-indexed saves, resume, quick/manual/end archives"
default_prompt: "Use $th1-game-archive when working on TH1 GameRecord, GameArchiveManager, continue/resume, quick/manual/end saves, archive validation, or bug-report/spectator save packaging."

View File

@ -0,0 +1,82 @@
# TMP 下划线渲染数组越界
- 分类blocking
- Issue 数1
- `0.7.2b` 最近一天次数1046
- 设备数合计1
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [637c0d4ba7ab3a62cd267fe52b58d805](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/637c0d4ba7ab3a62cd267fe52b58d805?pid=10) | IndexOutOfRangeException | 1046 | 1 | 2026-05-31 21:29:36 | Index was outside the bounds of the array. |
## 解码结论
- 栈完全落在 `TMPro.TextMeshProUGUI.GenerateTextMesh -> TMPro.TMP_Text.DrawUnderlineMesh`,没有项目 C# 调用层。
- 1046 次全部来自 1 台设备,像是某个特定文本/字体/富文本下划线组合触发了 TMP 内部数组越界,而不是全量玩家路径。
- CrashSight 样本 `hasLogFile=false`,无法看到具体 UI 文本;同设备前置 ERROR 多为联机/同步诊断,不能证明是本异常源头。
- 建议优先排查当前版本含 `<u>`、下划线 FontStyle、超长本地化文本的 `TextMeshProUGUI`,必要时对动态文本关闭富文本或规避下划线渲染。
## 设备上下文
### 637c0d4ba7ab3a62cd267fe52b58d805
- 样本 CrashId`f9d67a6f2bad4c6cb175c1eebea5ee13`
- 样本 DeviceId`40-c7-3c-e0-51-f9`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
IndexOutOfRangeException
Index was outside the bounds of the array.
TMPro.TMP_Text.DrawUnderlineMesh (UnityEngine.Vector3 start, UnityEngine.Vector3 end, System.Int32& index, System.Single startScale, System.Single endScale, System.Single maxScale, System.Single sdfScale, UnityEngine.Color32 underlineColor) (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.GenerateTextMesh () (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.OnPreRenderCanvas () (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.Rebuild (UnityEngine.UI.CanvasUpdate update) (at <00000000000000000000000000000000>.0)
UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate () (at <00000000000000000000000000000000>.0)
UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate()
TMPro.TMP_Text.DrawUnderlineMesh (UnityEngine.Vector3 start, UnityEngine.Vector3 end, System.Int32& index, System.Single startScale, System.Single endScale, System.Single maxScale, System.Single sdfScale, UnityEngine.Color32 underlineColor) (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.GenerateTextMesh () (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.OnPreRenderCanvas () (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.Rebuild (UnityEngine.UI.CanvasUpdate update) (at <00000000000000000000000000000000>.0)
UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate () (at <00000000000000000000000000000000>.0)
UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate()
TMPro.TMP_Text.DrawUnderlineMesh (UnityEngine.Vector3 start, UnityEngine.Vector3 end, System.Int32& index, System.Single startScale, System.Single endScale, System.Single maxScale, System.Single sdfScale, UnityEngine.Color32 underlineColor) (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.GenerateTextMesh () (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.OnPreRenderCanvas () (at <00000000000000000000000000000000>.0)
TMPro.TextMeshProUGUI.Rebuild (UnityEngine.UI.CanvasUpdate update) (at <00000000000000000000000000000000>.0)
UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate () (at <00000000000000000000000000000000>.0)
UnityEngine.UI.CanvasUpdateRegistry.Perfo
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 00:44:00 | 7aec17b6048d7981249d7dea16ae8419 | | |
| 2026-06-01 00:44:00 | 31cbaea700a7e8c8a613de4abe5a7578 | | |
| 2026-06-01 00:43:59 | 37c3a6f1b4b5b39220ee5ed7563118bf | | |
| 2026-06-01 00:43:59 | 4de7d427f16ede45dbd3693fc3431ac3 | | |
| 2026-06-01 00:43:59 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 00:43:59 | 37c3a6f1b4b5b39220ee5ed7563118bf | | |
| 2026-06-01 00:43:59 | 9b415b4bbb546c66eba3a6b67f916d35 | | |
| 2026-06-01 00:43:58 | 37c3a6f1b4b5b39220ee5ed7563118bf | | |
## 代码位置
- 未通过固定文本直接定位;需要结合解码栈继续追。
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,171 @@
# Steamworks 未初始化
- 分类blocking
- Issue 数5
- `0.7.2b` 最近一天次数210
- 设备数合计29
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [a677446e4ae77a510aba5cf0ba9de019](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a677446e4ae77a510aba5cf0ba9de019?pid=10) | UnityLogError | 17 | 8 | 2026-06-01 14:11:21 | [UIOutsideMultiplay] LeaveRoom exception: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000 |
| [341f705a3c788ba90fbf37396a4c9470](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/341f705a3c788ba90fbf37396a4c9470?pid=10) | InvalidOperationException | 147 | 5 | 2026-06-01 14:11:20 | Steamworks is not initialized. |
| [93c9ce84e1edba72583b2e7607f7bf7b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/93c9ce84e1edba72583b2e7607f7bf7b?pid=10) | UnityLogError | 17 | 9 | 2026-06-01 14:11:16 | EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] i… |
| [c18ed0f5f203fc2440ebfcd5a69c917a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c18ed0f5f203fc2440ebfcd5a69c917a?pid=10) | InvalidOperationException | 20 | 3 | 2026-05-31 18:40:33 | Steamworks is not initialized. |
| [6e0dc137d04a6e570d8767e63558c030](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6e0dc137d04a6e570d8767e63558c030?pid=10) | UnityLogError | 9 | 4 | 2026-05-31 18:32:33 | EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] i… |
## 解码结论
- 解码栈稳定为 `UIOutsideMultiplayView.OnRefreshLobbyClicked -> SteamLobbyManager.SearchPublicLobbies -> SteamMatchmaking.AddRequestLobbyListDistanceFilter -> Steamworks.InteropHelp.TestIfAvailableClient`
- `SetNoRoom()` 会自动调用 `OnRefreshLobbyClicked()`,打开/离开联机面板时也会走同一条刷新路径。
- 同设备样本中 `a677/341/93c` 连续出现,说明根因是同一 UI 流程反复触发 Steam lobby 搜索,而不是 5 个独立问题。
- 建议在 `UIOutsideMultiplayView.OnRefreshLobbyClicked()``SteamLobbyManager.SearchPublicLobbies()` 前增加 Steam 初始化/可用性 guardSteam 不可用时只展示不可用提示,不调用 SteamMatchmaking。
## 设备上下文
### a677446e4ae77a510aba5cf0ba9de019
- 样本 CrashId`d155313de2a44a31b2a9c1ae33d64132`
- 样本 DeviceId`40-b0-76-de-03-45`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
[UIOutsideMultiplay] LeaveRoom exception: System.InvalidOperationException: Steamworks is not initialized.
at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0
at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000000000000000000>:0
at bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.dio () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.bei () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.cou () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent (System.Int32 id) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.Process () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.EventSystem.Update () [0x00000] in <00000000000000000000000000000000>:0
UnityEngine.Debug.LogError(Object)
TH1_UI.View.Outside.UIOutsideMultip
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 14:11:21 | a677446e4ae77a510aba5cf0ba9de019 | | |
| 2026-06-01 14:11:20 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:11:16 | 93c9ce84e1edba72583b2e7607f7bf7b | | |
| 2026-06-01 14:11:12 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:09:50 | a677446e4ae77a510aba5cf0ba9de019 | | |
| 2026-06-01 14:08:39 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:08:34 | 93c9ce84e1edba72583b2e7607f7bf7b | | |
### 341f705a3c788ba90fbf37396a4c9470
- 样本 CrashId`82c19ddf19924ef8a56b5d41a3ce4426`
- 样本 DeviceId`40-b0-76-de-03-45`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
InvalidOperationException
Steamworks is not initialized.
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
InvalidOperationException
Steamworks is not initialized.
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 14:11:21 | a677446e4ae77a510aba5cf0ba9de019 | | |
| 2026-06-01 14:11:20 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:11:16 | 93c9ce84e1edba72583b2e7607f7bf7b | | |
| 2026-06-01 14:11:12 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:09:50 | a677446e4ae77a510aba5cf0ba9de019 | | |
| 2026-06-01 14:08:39 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:08:34 | 93c9ce84e1edba72583b2e7607f7bf7b | | |
### 93c9ce84e1edba72583b2e7607f7bf7b
- 样本 CrashId`77b484b2f137468fb4f6f05797a4d045`
- 样本 DeviceId`40-b0-76-de-03-45`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.InvalidOperationException: Steamworks is not initialized.
at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0
at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000000000000000000>:0
at bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.dio () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.bei () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.geh (TH1_Core.Events.ShowUIOutsideMultiplay a) [0x00000] in <00000000000000000000000000000000>:0
at epw.etu (System.Action a) [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000000000000>:0
at ern.gyd (TH1_Core.Events.ShowUIOutsideMultiplay a) [0x00000] in <00000000000000000000000000000000>:0
at erk.fcv[c] (c a) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) [0x00000]
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 14:11:21 | a677446e4ae77a510aba5cf0ba9de019 | | |
| 2026-06-01 14:11:20 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:11:16 | 93c9ce84e1edba72583b2e7607f7bf7b | | |
| 2026-06-01 14:11:12 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:09:50 | a677446e4ae77a510aba5cf0ba9de019 | | |
| 2026-06-01 14:08:39 | 341f705a3c788ba90fbf37396a4c9470 | | |
| 2026-06-01 14:08:34 | 93c9ce84e1edba72583b2e7607f7bf7b | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Steam\SteamLobbyManager.cs:1151: public void SearchPublicLobbies(ELobbyDistanceFilter filter = ELobbyDistanceFilter.k_ELobbyDistanceFilterWorldwide,`
- `Unity/Assets/Scripts\TH1_Logic\Editor\SteamEditorWindow.cs:168: if (InspectorUtils.InspectorButtonWithTextWidth("搜索")) lobby.SearchPublicLobbies();`
- `Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideMultiplayView.cs:1973: _lobby.SearchPublicLobbies();`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,156 @@
# Steam API DLL 缺失
- 分类blocking
- Issue 数6
- `0.7.2b` 最近一天次数100
- 设备数合计95
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [a2953c646aa11a95f841d94c914fc7e4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a2953c646aa11a95f841d94c914fc7e4?pid=10) | DllNotFoundException | 21 | 19 | 2026-06-01 15:35:23 | Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - 找不到指定的模块。 (WinError:0000007e) |
| [135c9d2628a684cc2f485cf4b0ab6fff](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/135c9d2628a684cc2f485cf4b0ab6fff?pid=10) | UnityLogError | 32 | 32 | 2026-06-01 15:30:26 | [UIOutsideMultiplay] LeaveRoom exception: System.DllNotFoundException: Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - 找不到指定的模块。 (WinError:0000007e) at Steamworks.CSteamAPIContext.Init () [0x00000] in <000000 |
| [71daaae143e1bfb8c693cfe811c9c8c2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/71daaae143e1bfb8c693cfe811c9c8c2?pid=10) | UnityLogError | 33 | 33 | 2026-06-01 15:30:23 | EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.DllNotFoundException: Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - 找不到指定的模块。 (WinError:0000007e) at Steamworks.CSteamAPIContext.Init () … |
| [2714c1d9c23fc1cb11241be2cf56577e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2714c1d9c23fc1cb11241be2cf56577e?pid=10) | DllNotFoundException | 10 | 9 | 2026-06-01 14:02:51 | Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - 找不到指定的模块。 (WinError:0000007e) |
| [a2b1b0cab9eff4ce9ec89cda7b3d9fd2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a2b1b0cab9eff4ce9ec89cda7b3d9fd2?pid=10) | UnityLogError | 2 | 1 | 2026-06-01 09:24:47 | [UIOutsideMultiplay] LeaveRoom exception: System.DllNotFoundException: Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - Module not found. (WinError:0000007e) at Steamworks.CSteamAPIContext.Init () [0x00000] in… |
| [ae58c1f5e2a647198b896974ffbed7a1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ae58c1f5e2a647198b896974ffbed7a1?pid=10) | UnityLogError | 2 | 1 | 2026-06-01 09:24:44 | EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.DllNotFoundException: Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - Module not found. (WinError:0000007e) at Steamworks.CSteamAPIContext.… |
## 解码结论
- 与 “Steamworks 未初始化” 共用触发路径:`OnRefreshLobbyClicked -> SearchPublicLobbies -> Steamworks.CSteamAPIContext.Init`
- 差异在于此类样本抛出 `DllNotFoundException: steam_api64`,说明运行环境无法加载 Steamworks native DLL常见于未通过 Steam 启动、包体 DLL 缺失、或运行目录异常。
- 多个 Issue 只是同一 DLL 缺失在直接异常、`EventManager Publish` 包装、`LeaveRoom exception` 包装下的不同 CrashSight 聚类。
- 建议同时做两层处理:包体/启动环境校验 `steam_api64.dll`,以及 UI/SteamManager 侧在 Steam native 不可用时降级,避免联机大厅刷新继续抛异常。
## 设备上下文
### a2953c646aa11a95f841d94c914fc7e4
- 样本 CrashId`588c3bfe661d452fb21b2496d381b4b5`
- 样本 DeviceId`00-a6-44-02-c9-f3`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
DllNotFoundException
Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - 找不到指定的模块。 (WinError:0000007e)
Steamworks.CSteamAPIContext.Init () (at <00000000000000000000000000000000>.0)
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
Steamworks.CSteamAPIContext.Init () (at <00000000000000000000000000000000>.0)
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
Steamworks.CSteamAPIContext.Init () (at <00000000000000000000000000000000>.0)
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
DllNotFoundException
Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x0600
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 15:35:23 | a2953c646aa11a95f841d94c914fc7e4 | | |
| 2026-05-31 20:12:54 | 135c9d2628a684cc2f485cf4b0ab6fff | | |
| 2026-05-31 20:12:47 | 71daaae143e1bfb8c693cfe811c9c8c2 | | |
### 135c9d2628a684cc2f485cf4b0ab6fff
- 样本 CrashId`97a8370a1a254cbf83e7d9bd7b4354c5`
- 样本 DeviceId`fc-34-97-00-6e-14`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
[UIOutsideMultiplay] LeaveRoom exception: System.DllNotFoundException: Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - 找不到指定的模块。 (WinError:0000007e)
at Steamworks.CSteamAPIContext.Init () [0x00000] in <00000000000000000000000000000000>:0
at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0
at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000000000000000000>:0
at bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.dio () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.bei () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.cou () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent (System.Int32 id) [0x00000] in <00000000000000000000000000000000>:0
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 15:30:26 | 135c9d2628a684cc2f485cf4b0ab6fff | | |
| 2026-06-01 15:30:23 | 71daaae143e1bfb8c693cfe811c9c8c2 | | |
### 71daaae143e1bfb8c693cfe811c9c8c2
- 样本 CrashId`c7b3eeda09be4206b71defd1c68ddd17`
- 样本 DeviceId`fc-34-97-00-6e-14`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.DllNotFoundException: Unable to load DLL 'steam_api64'. Tried the load the following dynamic libraries: Unable to load dynamic library 'steam_api64' because of 'Failed to open the requested dynamic library (0x06000000) - 找不到指定的模块。 (WinError:0000007e)
at Steamworks.CSteamAPIContext.Init () [0x00000] in <00000000000000000000000000000000>:0
at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0
at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000000000000000000>:0
at bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.dio () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.bei () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.geh (TH1_Core.Events.ShowUIOutsideMultiplay a) [0x00000] in <00000000000000000000000000000000>:0
at epw.etu (System.Action a) [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000000000000>:0
at ern.gyd (TH1_Core.Events.ShowUIOutsideMultiplay a) [0x00000] in <00000000000000000000000000000000>:0
at erk.fcv[c] (c a) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 15:30:26 | 135c9d2628a684cc2f485cf4b0ab6fff | | |
| 2026-06-01 15:30:23 | 71daaae143e1bfb8c693cfe811c9c8c2 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Steam\SteamLobbyManager.cs:1151: public void SearchPublicLobbies(ELobbyDistanceFilter filter = ELobbyDistanceFilter.k_ELobbyDistanceFilterWorldwide,`
- `Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideMultiplayView.cs:1973: _lobby.SearchPublicLobbies();`
- `Unity/Assets/Scripts\TH1_Logic\Editor\SteamEditorWindow.cs:168: if (InspectorUtils.InspectorButtonWithTextWidth("搜索")) lobby.SearchPublicLobbies();`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,179 @@
# 单位类型转换技能空引用
- 分类blocking
- Issue 数3
- `0.7.2b` 最近一天次数19
- 设备数合计7
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [a0e61c12efdd065cb3098fa874ff7a96](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a0e61c12efdd065cb3098fa874ff7a96?pid=10) | UnityLogError | 15 | 3 | 2026-06-01 13:44:08 | UnitTypeTransform ReservedOnTransform failed. skill:fos ex:Object reference not set to an instance of an object. |
| [e9f3d3b75f11f41baf8d8dd950e6026b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e9f3d3b75f11f41baf8d8dd950e6026b?pid=10) | UnityLogError | 3 | 3 | 2026-06-01 08:02:13 | UnitTypeTransform ReservedOnTransform failed. skill:ean ex:Object reference not set to an instance of an object. |
| [0b969e4835cea675957736a5da0ce1f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0b969e4835cea675957736a5da0ce1f?pid=10) | UnityLogError | 1 | 1 | 2026-05-31 22:00:19 | UnitTypeTransform ReservedOnTransform failed. skill:foq ex:Object reference not set to an instance of an object. |
## 解码结论
- 解码栈为 `UnitAttackAllyAction.Execute -> UnitLogic.UnitTypeTransform -> SkillBase.ReservedOnTransform`,触发点是 SuwakoHebi 合并/友军攻击治疗后的单位类型升级。
- 具体技能聚类为 `STIFF``PEACE``STATIC`,异常被 `UnitLogic.UnitTypeTransform` 捕获后用 `LogError` 上报所以属于“LogError 包装的真实异常”。
- `SkillBase.ReservedOnTransform()` 内重新读取 `originInfo/targetInfo` 后直接访问 `Skills`,缺少对 `GetUnitTypeInfo` 失败和 `Skills == null` 的防护;这比单个技能实现更像共同根因。
- 建议在 `SkillBase.ReservedOnTransform()``originInfo``targetInfo``Skills` 做显式空保护,并在日志中补充 `self.UnitFullType` 和目标 `fullType`,这样后续能直接定位是哪条配置不完整。
## 设备上下文
### a0e61c12efdd065cb3098fa874ff7a96
- 样本 CrashId`ab16d6a3677c4f0a8c0cad9d7dbc05b0`
- 样本 DeviceId`a0-29-42-eb-9c-67`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
UnitTypeTransform ReservedOnTransform failed. skill:fos ex:Object reference not set to an instance of an object.
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
gr.enr(cfo, ctu, UnitType, GiantType, UInt32)
gr.goc(cfo, ctu, UnitFullType)
fzp.guo(hz)
ib.ham(hz)
gi.bla(cfo, bsr)
fu.bjc()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
gr.enr(cfo, ctu, UnitType, GiantType, UInt32)
gr.goc(cfo, ctu, UnitFullType)
fzp.guo(hz)
ib.ham(hz)
gi.bla(cfo, bsr)
fu.bjc()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
gr.enr(cfo, ctu, UnitType, GiantType, UInt32)
gr.goc(cfo, ctu, UnitFullType)
fzp.guo(hz)
ib.ham(hz)
gi.bla(cfo, bsr)
fu.bjc()
TH1_Logic.Core.Main.Update()
UnityLogError
UnitTypeTransform ReservedOnTransform failed. skill:fos ex:Object reference not set to an instance of an object.
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
gr.enr(cfo, ctu, UnitType, GiantType, UInt32)
gr.goc(cfo, ctu, UnitFullType)
fzp.guo(hz)
ib.ham(hz)
gi.bla(cfo, bsr)
fu.bjc()
TH1_Logic.Core.Main.Update()
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 14:58:17 | bb81bce180d8672f500aa9f2021ec9f8 | | |
| 2026-06-01 14:33:55 | 83c5b5b46447ac4e50101f1148f4ab70 | | |
| 2026-06-01 14:03:05 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 13:44:09 | 46ee29218c6d89be077e23027b87707e | | |
| 2026-06-01 13:44:08 | a0e61c12efdd065cb3098fa874ff7a96 | | |
| 2026-06-01 13:44:08 | 96d3832bc2b13cad4cab14d287a1add1 | | |
| 2026-06-01 13:44:08 | 8107c16369fb00417c1682a0350ec64f | | |
| 2026-06-01 13:44:08 | 10d4df507992c1a66a90693df20b21c3 | | |
### e9f3d3b75f11f41baf8d8dd950e6026b
- 样本 CrashId`5104a42d38f244f68838c225913378ca`
- 样本 DeviceId`d4-5d-64-ee-83-f3`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
UnitTypeTransform ReservedOnTransform failed. skill:ean ex:Object reference not set to an instance of an object.
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
gr.enr(cfo, ctu, UnitType, GiantType, UInt32)
gr.goc(cfo, ctu, UnitFullType)
fzp.guo(hz)
ib.ham(hz)
gi.bla(cfo, bsr)
fu.bjc()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
gr.enr(cfo, ctu, UnitType, GiantType, UInt32)
gr.goc(cfo, ctu, UnitFullType)
fzp.guo(hz)
ib.ham(hz)
gi.bla(cfo, bsr)
fu.bjc()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
gr.enr(cfo, ctu, UnitType, GiantType, UInt32)
gr.goc(cfo, ctu, UnitFullType)
fzp.guo(hz)
ib.ham(hz)
gi.bla(cfo, bsr)
fu.bjc()
TH1_Logic.Core.Main.Update()
UnityLogError
UnitTypeTransform ReservedOnTransform failed. skill:ean ex:Object reference not set to an instance of an object.
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
gr.enr(cfo, ctu, UnitType, GiantType, UInt32)
gr.goc(cfo, ctu, UnitFullType)
fzp.guo(hz)
ib.ham(hz)
gi.bla(cfo, bsr)
fu.bjc()
TH1_Logic.Core.Main.Update()
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 14:41:14 | e72101cce36cd8bd113c888ef63d7562 | | |
| 2026-06-01 14:38:59 | 683af7e6fbb1a3d4bf25311b223076bb | | |
| 2026-06-01 10:40:01 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 10:25:52 | 46ee29218c6d89be077e23027b87707e | | |
| 2026-06-01 10:25:48 | a0e61c12efdd065cb3098fa874ff7a96 | | |
| 2026-06-01 10:25:47 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 10:25:46 | bb81bce180d8672f500aa9f2021ec9f8 | | |
| 2026-06-01 08:02:15 | 46ee29218c6d89be077e23027b87707e | | |
### 0b969e4835cea675957736a5da0ce1f
- 样本 CrashId`9e1da63034fa4377be060c8f3c5973d8`
- 样本 DeviceId`fc-34-97-12-26-24`
- CrashSight 附带日志文件:`False`
该样本未能从 API 取得可用 device 上下文,根因判断保持不完整。
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:1697: LogSystem.LogError($"UnitTypeTransform ReservedOnTransform failed. skill:{skill.GetType().Name} ex:{e.Message}");`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,80 @@
# 底栏 SL/Resume 空引用
- 分类blocking
- Issue 数1
- `0.7.2b` 最近一天次数14
- 设备数合计9
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [4c22419620a2f97f41d4182f807a8806](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4c22419620a2f97f41d4182f807a8806?pid=10) | NullReferenceException | 14 | 9 | 2026-06-01 12:54:57 | Object reference not set to an instance of an object. |
## 解码结论
- 解码栈定位到 `UIBottomBottomBarView.OnSLButtonClicked()`
- 该方法只检查了 `Main.MapData`、当前玩家和单机模式,没有检查 `Main.MapData.CurPlayer``Main.MapData.Net``Main.Instance``Main.Instance.GameLogic``Timer.Instance` 等后续对象。
- 同设备前置多为重连/同步类 ERROR说明玩家可能在状态切换或数据不稳定时点击了 S/LCrashSight 无完整日志,不能确定具体为空对象。
- 建议在 S/L 按钮点击路径增加状态机防抖和完整空保护,切换 `GameState.Menu``ResumeMatch` 期间禁用按钮。
## 设备上下文
### 4c22419620a2f97f41d4182f807a8806
- 样本 CrashId`5e5d1a6e454b442998317699c6dbd29b`
- 样本 DeviceId`9c-2d-cd-fe-56-d6`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
NullReferenceException
Object reference not set to an instance of an object.
TH1_UI.View.Bottom.UIBottomBottomBarView.grv () (at <00000000000000000000000000000000>.0)
UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) (at <00000000000000000000000000000000>.0)
UnityEngine.Events.UnityEvent.Invoke () (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent (System.Int32 id) (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.StandaloneInputModule.Process () (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.EventSystem.Update () (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.EventSystem.Update()
TH1_UI.View.Bottom.UIBottomBottomBarView.grv () (at <00000000000000000000000000000000>.0)
UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) (at <00000000000000000000000000000000>.0)
UnityEngine.Events.UnityEvent.Invoke () (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) (at <00000000000000000000000000000000>.0)
UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data)
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 16:04:15 | 01eaa6aefd9162eccc930c2450a63779 | | |
| 2026-06-01 14:29:42 | bb3abc26831f37e1233b6d33933a662a | | |
| 2026-06-01 14:24:03 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 14:17:16 | 96f8b995fac2c7d6ffe13ed651df71c1 | | |
| 2026-06-01 14:17:14 | 0697babdf87a5ec4c4516d18674e7faf | | |
| 2026-06-01 14:17:13 | d52fa3494ab9075129fbddda3b7ae271 | | |
| 2026-06-01 14:13:40 | fe6744a1382118a1b8f70034f879f21f | | |
| 2026-06-01 14:13:40 | bdae619bb49f23e7f92e847c957b90e6 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_UI\View\Bottom\UIBottomBottomBarView.cs:153: SLButton.onClick.AddListener(OnSLButtonClicked);`
- `Unity/Assets/Scripts\TH1_UI\View\Bottom\UIBottomBottomBarView.cs:239: private void OnSLButtonClicked()`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,170 @@
# 重大事件公告 UI 空引用
- 分类blocking
- Issue 数2
- `0.7.2b` 最近一天次数13
- 设备数合计9
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [0af437dc7c73331f892ca95178c964cc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0af437dc7c73331f892ca95178c964cc?pid=10) | UnityLogError | 10 | 6 | 2026-05-31 22:06:11 | EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object. at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0 at era.bvr () [0x00000] in <00 |
| [f5e2775f98f29836622f7f514a5a059d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5e2775f98f29836622f7f514a5a059d?pid=10) | UnityLogError | 3 | 3 | 2026-05-31 22:06:11 | EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object. at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0 at era.bvr () [0x00000] in <00 |
## 解码结论
- 解码栈为 `MainMemberStartMatch/MainMemberResumeMatch timer -> EventManager.Publish<ShowUIAnnounceMajorEvent> -> UIAnnounceMajorEventController.OnOpen -> UIAnnounceMajorEventView.SetContent()`
- `SetContent(StartGame)` 只保护了 UI 组件引用,没有保护 `Main.MapData``PlayerMap.SelfPlayerData``PlayerInfo``UICenterMessageInfo``ChatBubbleText` 等数据链。
- 同设备前置包含进房失败、重连、行动不一致等联机状态诊断,符合“多人开局/恢复中数据尚未完整但公告 UI 已打开”的触发模型。
- 建议 `ShowUIAnnounceMajorEvent(StartGame)` 发布前确认地图和 self player 可用;`UIAnnounceMajorEventView.SetContent` 侧也要对 player/info/text 为空时降级显示或跳过公告。
## 设备上下文
### 0af437dc7c73331f892ca95178c964cc
- 样本 CrashId`d18b5c7301644251b5fb8df038b3507e`
- 样本 DeviceId`c4-c6-e6-9a-d5-56`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0
at era.bvr () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000000000000>:0
at eri.fvd (System.Action a) [0x00000] in <00000000000000000000000000000000>:0
at erl.fcy () [0x00000] in <00000000000000000000000000000000>:0
at erl.cug (erh a, System.Boolean b) [0x00000] in <00000000000000000000000000000000>:0
at ern.fdq (TH1_Core.Events.ShowUIAnnounceMajorEvent a) [0x00000] in <00000000000000000000000000000000>:0
at erk.fcv[c] (c a) [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main+<>c.lpz () [0x00000] in <00000000000000000000000000000000>:0
at i.oj () [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.lpz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.lpz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.lpz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityLogError
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0
at era.bvr () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-05-31 22:26:31 | 31cbaea700a7e8c8a613de4abe5a7578 | | |
| 2026-05-31 22:11:05 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-05-31 22:07:14 | 60d84edf5f69d3592e1dc8aef452a038 | | |
| 2026-05-31 22:07:14 | a0830cd150cf6348c957fa17694ae9f6 | | |
| 2026-05-31 22:06:12 | 24fa653e2e11d1e45438b6f0532126b0 | | |
| 2026-05-31 22:06:11 | 0af437dc7c73331f892ca95178c964cc | | |
| 2026-05-31 22:05:07 | 01eaa6aefd9162eccc930c2450a63779 | | |
| 2026-05-31 22:03:04 | 10d4df507992c1a66a90693df20b21c3 | | |
### f5e2775f98f29836622f7f514a5a059d
- 样本 CrashId`50b6096bb9064534b09df814eea62377`
- 样本 DeviceId`b0-25-aa-85-f3-76`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0
at era.bvr () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000000000000>:0
at eri.fvd (System.Action a) [0x00000] in <00000000000000000000000000000000>:0
at erl.fcy () [0x00000] in <00000000000000000000000000000000>:0
at erl.cug (erh a, System.Boolean b) [0x00000] in <00000000000000000000000000000000>:0
at ern.fdq (TH1_Core.Events.ShowUIAnnounceMajorEvent a) [0x00000] in <00000000000000000000000000000000>:0
at erk.fcv[c] (c a) [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main+<>c.mmz () [0x00000] in <00000000000000000000000000000000>:0
at i.oj () [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.mmz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.mmz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.mmz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityLogError
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0
at era.bvr () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-05-31 22:56:01 | 01eaa6aefd9162eccc930c2450a63779 | | |
| 2026-05-31 22:43:30 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-05-31 22:29:47 | 9b415b4bbb546c66eba3a6b67f916d35 | | |
| 2026-05-31 22:26:55 | 01eaa6aefd9162eccc930c2450a63779 | | |
| 2026-05-31 22:26:31 | fe6744a1382118a1b8f70034f879f21f | | |
| 2026-05-31 22:26:31 | 267ee4c6d81420011154b0f4e52f32a5 | | |
| 2026-05-31 22:07:08 | bdae619bb49f23e7f92e847c957b90e6 | | |
| 2026-05-31 22:07:07 | 9b415b4bbb546c66eba3a6b67f916d35 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:16: public class UIAnnounceMajorEventView : Base.View`
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:63: LogSystem.LogError("UIAnnounceMajorEventView.SetContent(): Title or Content or Image or Image is null");`
- `Unity/Assets/Scripts\TH1_UI\Controller\Announce\UIAnnounceMajorEventController.cs:15: public class UIAnnounceMajorEventController : ViewController<UIAnnounceMajorEventView>, IEscClosable // 泛型参数是对应的View脚本`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,49 @@
# TMP 输入框光标数组越界
- 分类blocking
- Issue 数1
- `0.7.2b` 最近一天次数2
- 设备数合计1
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [7506613af0c386104713b2e8c86fc93b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7506613af0c386104713b2e8c86fc93b?pid=10) | IndexOutOfRangeException | 2 | 1 | 2026-05-31 21:29:35 | Index was outside the bounds of the array. |
## 解码结论
- 栈在 `TMP_InputField.OnDrag -> TMP_TextUtilities.GetCursorIndexFromPosition -> FindNearestCharacterOnLine`,属于 TMP 输入框内部光标定位越界。
- 只有 1 台设备 2 次CrashSight 未提供具体输入框和文本内容;当前只能判断为低频、交互触发的输入框渲染/拖拽异常。
- 建议优先关注可拖拽选择文本的长文本输入框,例如 BugReport、聊天、房间名/密码、Mod 上传说明;对异常频发输入框限制超长文本或升级/规避 TMP 拖拽路径。
## 设备上下文
### 7506613af0c386104713b2e8c86fc93b
- 样本 CrashId`68e38466a1dc42ecbac76e6592d7d1f5`
- 样本 DeviceId`40-c7-3c-e0-51-f9`
- CrashSight 附带日志文件:`False`
该样本未能从 API 取得可用 device 上下文,根因判断保持不完整。
## 代码位置
- `Unity/Assets/Scripts\TH1_UI\View\Global\UIGlobalBugReportView.cs:17: public TMP_InputField DescriptionInput;`
- `Unity/Assets/Scripts\TH1_UI\View\Global\UIGlobalBugReportView.cs:177: DescriptionInput = GetComponentInChildren<TMP_InputField>(true);`
- `Unity/Assets/Scripts\TH1_UI\View\Common\UIChatAreaMono.cs:85: public TMP_InputField TextInputArea;`
- `Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideModView.cs:36: public TMP_InputField ExportModNameInput; // mod 名(留空自动生成)`
- `Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideModView.cs:53: public TMP_InputField UploadTitleInput;`
- `Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideModView.cs:54: public TMP_InputField UploadDescriptionInput;`
- `Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideMultiplayCreateRoomPanelMono.cs:32: public TMP_InputField RoomNameInput;`
- `Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideMultiplayCreateRoomPanelMono.cs:37: public TMP_InputField PasswordInput;`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,42 @@
# 早苗治疗技能空引用
- 分类blocking
- Issue 数1
- `0.7.2b` 最近一天次数2
- 设备数合计2
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [481281fb8ec7b99399c304b9379457a3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/481281fb8ec7b99399c304b9379457a3?pid=10) | UnityLogError | 2 | 2 | 2026-06-01 13:44:20 | Timer任务执行异常: 错误信息: SANAEDIVINE - SANAENINE - OnHeal 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at bsr.guy () [0x00000] in <00000000000000000000000000000000>:0 at bsr.guz () [0x00000] in <00000000000000000000000000000000>:0 at edc.ial (cfo a, bsr b, bsr c, Logic.Skill.SanaeDivineType d) [0x00000] in … |
## 解码结论
- 解码栈为 `SanaeDivineSkill.OnHealOther` 注册的 `TimerRegister("SANAEDIVINE - SANAENINE - OnHeal") -> SanaeDivineSkill.OmikujiAnim()`
- 这是延迟视觉回调里的真实空引用,常见触发是治疗/三连发后目标格、地图、Table、MapRenderer 或 VFX 组件在延迟播放时已经变化。
- 现有代码已有 live unit/grid 检查,但 `OmikujiAnim` 内仍应对当前地图是否仍是同一局、`Table.Instance``GridToWorld` 所需配置、`MapRenderer.Instance` 和目标 renderer 做更严格的短路。
## 设备上下文
### 481281fb8ec7b99399c304b9379457a3
- 样本 CrashId`74950b5f099f42b99d9900a6d63b816a`
- 样本 DeviceId`2c-98-11-7e-47-83`
- CrashSight 附带日志文件:`False`
该样本未能从 API 取得可用 device 上下文,根因判断保持不完整。
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Skill\AllSkill\SanaeDivineSkill.cs:82: timer.TimerRegister(this, playOmikuji,1.1f * i,"SANAEDIVINE - SANAENINE - OnHeal");`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,45 @@
# 移动攻击高亮字典 Key 缺失
- 分类blocking
- Issue 数1
- `0.7.2b` 最近一天次数2
- 设备数合计1
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [0bbff28f08b867749349762f2e47eac2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0bbff28f08b867749349762f2e47eac2?pid=10) | KeyNotFoundException | 2 | 1 | 2026-06-01 15:53:26 | The given key '1986' was not present in the dictionary. |
## 解码结论
- 解码栈定位到 `TH1Renderer.MapRenderer.SetUnitAllMoveAttackTargetHighlight(uint uid)`,从 `MapInteraction.OnTileClicked` 的选择单位路径进入。
- Key `1986` 缺失说明移动/攻击高亮计算时,逻辑 `MapData` 或渲染字典中已经没有该单位/格子的对应项。
- 该样本没有可用 device 上下文;根因仍是不完整判断,但直接风险点是 `SetUnitAllMoveAttackTargetHighlight` 未对 `GetUnitDataByUnitId``GetGridDataByUnitId``ROUnitMap/ROGridMap` 查找失败做退出。
- 建议高亮前重新确认单位仍在当前地图且渲染对象存在,失败时清理选择态并跳过高亮。
## 设备上下文
### 0bbff28f08b867749349762f2e47eac2
- 样本 CrashId`02e7f4ce7a464d528ecddbbb9e25c740`
- 样本 DeviceId`58-11-22-3d-24-32`
- CrashSight 附带日志文件:`False`
该样本未能从 API 取得可用 device 上下文,根因判断保持不完整。
## 代码位置
- `Unity/Assets/Scripts\TH1_Renderer\MapRenderer.cs:577: public bool SetUnitAllMoveAttackTargetHighlight(uint uid) //渲染所有可移动位置的高亮,其中可以攻击的位置要标红,如果是自己人或者敌人在移动范围内但是不在攻击范围内,则不能高亮`
- `Unity/Assets/Scripts\TH1_Logic\Map\MapInteraction.cs:269: MapRenderer.Instance.SetUnitAllMoveAttackTargetHighlight(unitData.Id);`
- `Unity/Assets/Scripts\TH1_Logic\Skill\AllSkill\InfiltrateSkill.cs:140: // 依赖 CalcUnitMoveInfo 已对 self 计算过(玩家点击路径由 SetUnitAllMoveAttackTargetHighlight 保证;`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,44 @@
# 点击移动字典 Key 缺失
- 分类blocking
- Issue 数1
- `0.7.2b` 最近一天次数1
- 设备数合计1
- 报告生成2026-06-01 16:49:36
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [c468364b1b357f80622937c65e566365](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c468364b1b357f80622937c65e566365?pid=10) | UnityLogError | 1 | 1 | 2026-06-01 04:26:17 | Timer任务执行异常: 错误信息: MapInteraction_OnTileClicked_Move 异常类型: System.Collections.Generic.KeyNotFoundException 异常信息: The given key '1122' was not present in the dictionary. 调用堆栈: at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x00000] in <00000000000000000000000000000000>:0 at fj.bgn (System.UInt32 a) [0x00000] in <0000000000000000 |
## 解码结论
- 栈来自 `TimerRegister("MapInteraction_OnTileClicked_Move")` 的延迟回调,回调里再次调用 `OnTileClicked(mapData, gridData)`
- Key `1122` 缺失表示移动动画等待期间,旧的 `gridData`、选中单位或渲染字典已被行动执行/同步/死亡/变形改变。
- 同设备上下文不足,但这是确定的异步时序问题:延迟回调不能直接复用旧对象引用,应按 ID 在当前 `Main.MapData` 中重新取 live unit/grid。
- 建议 `MapInteraction_OnTileClicked_Move` 回调中先验证当前状态、选中单位仍存活且仍在地图上,失败时取消后续 `OnTileClicked`
## 设备上下文
### c468364b1b357f80622937c65e566365
- 样本 CrashId`25810188ff334ad4bb234e71d52aaebb`
- 样本 DeviceId`9c-6b-00-1a-38-d0`
- CrashSight 附带日志文件:`False`
该样本未能从 API 取得可用 device 上下文,根因判断保持不完整。
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Map\MapInteraction.cs:251: },Table.Instance.AnimDataAssets.MoveAnimTime,"MapInteraction_OnTileClicked_Move");`
- `Unity/Assets/Scripts\TH1_Logic\Map\MapInteraction.cs:299: },Table.Instance.AnimDataAssets.MoveAnimTime,"MapInteraction_OnTileClicked_Move");`
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,60 @@
# CrashSight 0.7.2b 最近一天 ERROR 分析
- 捕获时间2026-06-01 16:49:36
- 筛选范围:`0.7.2b``last_1_day`ERROR未处理/处理中
- CrashSight numFound495
- 去重 Issue495
- blocking22 个 Issue1409 次
- logerror473 个 Issue84312 次
- 原始数据:`Temp\CrashSight\Daily_2026-06-01_0.7.2b`
## 阻断家族
| 家族 | Issue 数 | 次数 | 报告 |
|---|---:|---:|---|
| TMP 下划线渲染数组越界 | 1 | 1046 | [blocking/001_tmp-underline-indexoutofrange.md](blocking/001_tmp-underline-indexoutofrange.md) |
| Steamworks 未初始化 | 5 | 210 | [blocking/002_steamworks-not-initialized.md](blocking/002_steamworks-not-initialized.md) |
| Steam API DLL 缺失 | 6 | 100 | [blocking/003_steam-api64-dll-missing.md](blocking/003_steam-api64-dll-missing.md) |
| 单位类型转换技能空引用 | 3 | 19 | [blocking/004_unit-transform-reserved-null.md](blocking/004_unit-transform-reserved-null.md) |
| 底栏 SL/Resume 空引用 | 1 | 14 | [blocking/005_bottom-sl-resume-null.md](blocking/005_bottom-sl-resume-null.md) |
| 重大事件公告 UI 空引用 | 2 | 13 | [blocking/006_announce-major-event-null.md](blocking/006_announce-major-event-null.md) |
| TMP 输入框光标数组越界 | 1 | 2 | [blocking/007_tmp-inputfield-cursor-indexoutofrange.md](blocking/007_tmp-inputfield-cursor-indexoutofrange.md) |
| 早苗治疗技能空引用 | 1 | 2 | [blocking/008_sanae-onheal-null.md](blocking/008_sanae-onheal-null.md) |
| 移动攻击高亮字典 Key 缺失 | 1 | 2 | [blocking/009_maprenderer-highlight-keynotfound.md](blocking/009_maprenderer-highlight-keynotfound.md) |
| 点击移动字典 Key 缺失 | 1 | 1 | [blocking/010_map-click-move-keynotfound.md](blocking/010_map-click-move-keynotfound.md) |
## 非阻断高频
| 类别 | Issue 数 | 次数 |
|---|---:|---:|
| 行动执行玩家不一致 | 43 | 45150 |
| P2P/大厅连接失败诊断 | 13 | 9286 |
| 相似 Action 重复诊断 | 62 | 6688 |
| AI 计算死循环保护 | 3 | 5791 |
| 网络发送失败诊断 | 84 | 5512 |
| 行动同步版本/索引不一致 | 6 | 3522 |
| 断线重连/ForceUpdate 诊断 | 8 | 3150 |
| 多语言 ID 为空 | 8 | 1172 |
| MapData 序列化差异诊断 | 140 | 985 |
| FragmentCityConnectExpUp 数值异常 | 1 | 937 |
| Fragment 运行时保护日志 | 1 | 553 |
| UI/Renderer 空保护诊断 | 2 | 499 |
## 报告
- [LogError Summary](logerror_summary.md)
- [TMP 下划线渲染数组越界](blocking/001_tmp-underline-indexoutofrange.md)
- [Steamworks 未初始化](blocking/002_steamworks-not-initialized.md)
- [Steam API DLL 缺失](blocking/003_steam-api64-dll-missing.md)
- [单位类型转换技能空引用](blocking/004_unit-transform-reserved-null.md)
- [底栏 SL/Resume 空引用](blocking/005_bottom-sl-resume-null.md)
- [重大事件公告 UI 空引用](blocking/006_announce-major-event-null.md)
- [TMP 输入框光标数组越界](blocking/007_tmp-inputfield-cursor-indexoutofrange.md)
- [早苗治疗技能空引用](blocking/008_sanae-onheal-null.md)
- [移动攻击高亮字典 Key 缺失](blocking/009_maprenderer-highlight-keynotfound.md)
- [点击移动字典 Key 缺失](blocking/010_map-click-move-keynotfound.md)
## 说明
blocking 的判定只认真实异常类型、异常对象或调用栈;纯 `LogSystem.LogError` 业务状态诊断归入 logerror。
本次通过 CrashSight OpenAPI 抓取样本详情和同设备最近 ERROR 上报序列;若样本 `hasLogFile=false`,文档会明确标记上下文限制。

View File

@ -0,0 +1,515 @@
# LogError Summary
- 筛选范围:`0.7.2b``last_1_day`ERRORstatus `0,2`
- 捕获时间2026-06-01 16:49:36
- 非阻断 Issue473
- 非阻断次数84312
## 分类汇总
| 类别 | Issue 数 | 次数 | 设备数 | 代码位置 | 示例 Issue |
|---|---:|---:|---:|---|---|
| 行动执行玩家不一致 | 43 | 45150 | 3257 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1113: LogSystem.LogError($"CompleteExecute Player 不一致 {ActionId.GetStringLog()}"); | 10d4df507992c1a66a90693df20b21c3, 94791c770730cb4f8e7af22d25e2920c, f89e921477792e9da1a09ca11578b9cc |
| P2P/大厅连接失败诊断 | 13 | 9286 | 1547 | Unity/Assets/Scripts\TH1_Logic\Steam\SimpleP2P.cs:479: LogSystem.LogError($"Connection failed - Reason: {endReason}"); | 9b415b4bbb546c66eba3a6b67f916d35, 01eaa6aefd9162eccc930c2450a63779, bc7e88e9811a3e38d26e15577210e3d7 |
| 相似 Action 重复诊断 | 62 | 6688 | 1529 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:230: if(_sameCount > 5) LogSystem.LogError($"存在相似action ,记录点为:{MainEditor.Instance.BTNodeId} ," + | 8107c16369fb00417c1682a0350ec64f, d2253454d7e4d68496b0b2943b9cec3c, 43f14319d1b258affd890dcee07175f4 |
| AI 计算死循环保护 | 3 | 5791 | 1661 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:179: LogSystem.LogError($"死循环了,最终记录点为:{MainEditor.Instance.BTNodeId}");<br>Unity/Assets/Scripts\TH1_Logic\AI\AIActionBase.cs:528: LogSystem.LogError($"死循环了"); | bb81bce180d8672f500aa9f2021ec9f8, 83c5b5b46447ac4e50101f1148f4ab70, c9329efbc0d8f6af32351d8bd2b28935 |
| 网络发送失败诊断 | 84 | 5512 | 2075 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1140: LogSystem.LogError($"ActionConfirm send failed, abort local execute: {ActionId.GetStringLog()}"); | d7a74e6e95985e97e0bbecc7de0c0f44, dbce2880e5ad9287fcca2bf271f97622, daec796293ecae6d73a5eef8f5e3707c |
| 行动同步版本/索引不一致 | 6 | 3522 | 955 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetReceiver.cs:131: LogSystem.LogError($"OnReceivedActionConfirm Version 不一致"); | 7aec17b6048d7981249d7dea16ae8419, 31cbaea700a7e8c8a613de4abe5a7578, 2412d572023132e0496b38e90c91b0f8 |
| 断线重连/ForceUpdate 诊断 | 8 | 3150 | 1185 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:422: public void SendRequestForceUpdate()<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:429: LogSystem.LogWarning($"客户端请求重连冷却中: SendRequestForceUpdate, remain={RequestForceUpdateCooldown - (now - _lastRequestForceUpdateTime):F1}s");<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:434: LogSystem.LogError($"客户端请求重连: SendRequestForceUpdate"); | bb3abc26831f37e1233b6d33933a662a, fe6744a1382118a1b8f70034f879f21f, 4de9527a59d2c07d37e8b3ff32f3c989 |
| 多语言 ID 为空 | 8 | 1172 | 851 | Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:176: LogSystem.LogError($"多语言ID为空");<br>Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:200: LogSystem.LogError($"多语言ID为空"); | f5d6caefc1e5ac72cd5c21a56e3dfddb, 691253c2a412f07945231dd650f58213, ea2c22182f1187fccfaa5e605b3072c0 |
| MapData 序列化差异诊断 | 140 | 985 | 304 | Unity/Assets/Scripts\TH1_Data\MapData.cs:3104: differences.Add($"{name} differs (serialized data mismatch)"); | a10787fadf4b9940d0011cef9f7eb895, bdae619bb49f23e7f92e847c957b90e6, 524180fcd1e9fe1693c6dbf5ec93599b |
| FragmentCityConnectExpUp 数值异常 | 1 | 937 | 344 | Unity/Assets/Scripts\TH1_Anim\Fragments\FragmentCityConnenctExpUp.cs:69: LogSystem.LogError($"Wrong With FragmentCityConnectExpUp lv={Level},exp={LevelExp}"); | 96d3832bc2b13cad4cab14d287a1add1 |
| Fragment 运行时保护日志 | 1 | 553 | 336 | Unity/Assets/Scripts\TH1_Anim\Fragments\FragmentCityExpUp.cs:69: LogSystem.LogError($"Wrong With FragmentCityExpUp lv={Level},exp={LevelExp}");<br>Unity/Assets/Scripts\TH1_Anim\Fragments\FragmentCityConnenctExpUp.cs:69: LogSystem.LogError($"Wrong With FragmentCityConnectExpUp lv={Level},exp={LevelExp}"); | 394b7b66613aa8840ff6cc1529b92b52 |
| UI/Renderer 空保护诊断 | 2 | 499 | 21 | Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:403: Debug.LogError("OnGridInfoAction Error: Main.MapData is null");<br>Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:410: Debug.LogError("OnGridInfoAction Error: Main.MapData.PlayerMap?.SelfPlayerData is null");<br>Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:421: Debug.LogError("OnGridInfoAction Error: UIManager.Instance?.UIInfoManager is null"); | 65db1d60ea0aaf171cc5d70c01c39643, 4c23c0cf4f10b92b30e82da3148c6a99 |
| STS/OSS 上传失败诊断 | 18 | 409 | 346 | Unity/Assets/Scripts\TH1_Logic\Oss\OssManager.cs:124: LogSystem.LogError($"CollectData upload failed: {ex.Message}"); | 93509b23a954c79d835f4138bab9f3f7, 4519111d864a8906a22e97fb6b1dafde, 600050c9105bb97985338060934d9f77 |
| 不可执行行动圈诊断 | 6 | 340 | 191 | Unity/Assets/Scripts\TH1_UI\View\Info\UIInfoCommonBaseActionCircleMono.cs:141: LogSystem.LogError($"CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :{cantType}"); | b8bbf46c799fc64adba48fa5070a2891, 7a6ba3b9578ca2f7a60f998a17075b83, 789da56c26d7bf1335be14e6ed615517 |
| 结算卡住兜底诊断 | 39 | 92 | 90 | Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:328: MatchSettlementStuckGuard.CheckAndRecover(map, info, MatchSettlementType.Normal, kv.Key);<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:424: public static class MatchSettlementStuckGuard<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:484: sb.Append("[MatchSettlementStuck] 触发兜底:"); | 3e22e08c43db203c29689f86e8addba9, 6bd22a2a6ee31e8e8e34144c082e7850, 4e5577b8620259d901db838dedfd5262 |
| 地图反序列化/版本兼容诊断 | 14 | 82 | 64 | Unity/Assets/Scripts\TH1_Data\MapData.cs:2217: LogSystem.LogError($"地图数据反序列化失败,可能是版本不兼容: {ex.Message}");<br>Unity/Assets/Scripts\TH1_Data\MapData.cs:2582: LogSystem.LogError($"地图数据反序列化失败,可能是版本不兼容: {ex.Message}"); | 879342965b3e2cf8dfb3f6e6be2f3b0c, 91d688174ef23090b88f12727851de26, fc053b598247d784ed22b79252dd711f |
| ForceUpdate 玩家网络映射失败 | 1 | 47 | 7 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetReceiver.cs:328: LogSystem.LogError("OnReceivedForceUpdate 玩家网络映射失败"); | 974c98893bbef75ff005eef661098908 |
| 地图/同步状态不一致诊断 | 3 | 27 | 5 | Unity/Assets/Scripts\TH1_Data\MapData.cs:3315: LogSystem.LogError($"Map不一致前后Action 前:空" +<br>Unity/Assets/Scripts\TH1_Data\MapData.cs:3320: LogSystem.LogError($"Map不一致前后Action 前:{Main.MapData.Net.Actions[i - 1].ActionId.GetStringLog()}" + | 9474bfe98e77682b012343635c22eeb2, 247c22b2000f35ac38a00a9cb98860b1, 5a510674d8b9372c2ce9b79c4ed373f4 |
| Origin Player 为空诊断 | 5 | 24 | 24 | Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:658: LogSystem.LogError($"Origin Player is null target.id:{target.Id}");<br>Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:713: LogSystem.LogError($"RecoverHealth Origin Player is null target.id:{target.Id}"); | e72101cce36cd8bd113c888ef63d7562, 589373c458d67eceb1a52ffc4f2b59b8, 128b8663fa3b97602250c9e4ff548eb9 |
| OSS/创意工坊上传失败诊断 | 4 | 23 | 16 | Unity/Assets/Scripts\TH1_Logic\Oss\OssUploadService.cs:50: $"OSS PostObject 上传失败: {request.error}, HTTP {request.responseCode}, Response: {request.downloadHandler.text}"); | e588fdcf5ece4872586965261dd16fef, 9e004d52e5ba61a1cd8a5ba76ea3202d, dcf3b81d738484ecdc63ef3034d4f17e |
| 本机音频/显卡能力诊断 | 3 | 11 | 5 | 未直接定位 | 40c20d961527ac0e0fc5288af37cae47, 9997ab8764c24b90b4ad8368833a3e15, 341bbed051698b373151b84bde7e144f |
| 本地安全写入失败 | 3 | 6 | 6 | Unity/Assets/Scripts\TH1_Data\MapData.cs:2158: LogSystem.LogError($"保存地图配置数据失败: 安全写入失败");<br>Unity/Assets/Scripts\TH1_Data\MapData.cs:2257: LogSystem.LogError($"保存地图数据失败: 安全写入失败");<br>Unity/Assets/Scripts\TH1_Logic\Tools\FileTools.cs:86: LogSystem.LogError($"安全写入失败: {e.Message}"); | da92733e4f2c7175755150f1172062bc, d2fa99b9b9bf4ba1778a0520764327a2, 9e5b509043eedaaf40fb99cc7b4bd725 |
| 成就文件损坏诊断 | 3 | 3 | 3 | Unity/Assets/Scripts\TH1_Logic\Achievement\AchievementDataManager.cs:137: LogSystem.LogError($"[Achievement] 读取文件失败: {path} \| 错误: {e.Message}"); | 7260fba5f901650a656890f56f982f1f, 148beb4c6c5a0b76f08e47bb281e09c1, a859b766a9489002c2a6680ec78b548d |
| Shader fallback 诊断 | 1 | 1 | 1 | 未直接定位 | a028074d459066a519ffbd4807341ebd |
| 受击生命周期格子为空诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Skill\AllSkill\SatoriSeeSkill.cs:45: LogSystem.LogError($"BeforeUnitDamaged Error selfGrid : {selfGrid}, targetGrid : {targetGrid}"); | 57500e9e3290b3066f6ffc925d2d7238 |
| 触控信息平台诊断 | 1 | 1 | 1 | 未直接定位 | ef2c063b9dc31caa463ae478a66d5718 |
## 明细
| Issue | 类别 | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---|---:|---:|---|---|
| [10d4df507992c1a66a90693df20b21c3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/10d4df507992c1a66a90693df20b21c3?pid=10) | 行动执行玩家不一致 | UnityLogError | 43835 | 2498 | 2026-06-01 16:49:02 | CompleteExecute Player 不一致 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [9b415b4bbb546c66eba3a6b67f916d35](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9b415b4bbb546c66eba3a6b67f916d35?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 5172 | 452 | 2026-06-01 16:42:38 | 应用层拒绝连接 - 错误码: 1000可能原因1.对方未创建监听套接字 2.对方主动拒绝 3.对方游戏未运行 |
| [bb81bce180d8672f500aa9f2021ec9f8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bb81bce180d8672f500aa9f2021ec9f8?pid=10) | AI 计算死循环保护 | UnityLogError | 4564 | 1144 | 2026-06-01 16:48:29 | 死循环了 |
| [bc7e88e9811a3e38d26e15577210e3d7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bc7e88e9811a3e38d26e15577210e3d7?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 2345 | 64 | 2026-06-01 16:04:13 | 远程超时 - 目标用户网络问题 |
| [01eaa6aefd9162eccc930c2450a63779](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/01eaa6aefd9162eccc930c2450a63779?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 1552 | 930 | 2026-06-01 16:32:10 | Connection failed - Reason: 1000 |
| [83c5b5b46447ac4e50101f1148f4ab70](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/83c5b5b46447ac4e50101f1148f4ab70?pid=10) | AI 计算死循环保护 | UnityLogError | 1226 | 516 | 2026-06-01 16:45:39 | 死循环了,最终记录点为:194 |
| [d52fa3494ab9075129fbddda3b7ae271](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d52fa3494ab9075129fbddda3b7ae271?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 1128 | 290 | 2026-06-01 16:32:09 | OnReceivedActionExcute MapHash 不一致,拒绝执行 |
| [96d3832bc2b13cad4cab14d287a1add1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/96d3832bc2b13cad4cab14d287a1add1?pid=10) | FragmentCityConnectExpUp 数值异常 | UnityLogError | 937 | 344 | 2026-06-01 16:43:14 | Wrong With FragmentCityConnectExpUp lv=2,exp=1 |
| [fe6744a1382118a1b8f70034f879f21f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fe6744a1382118a1b8f70034f879f21f?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 848 | 292 | 2026-06-01 16:16:29 | 客户端请求重连: SendRequestForceUpdate |
| [e0607caeab32ce4c102dd3db17f6d498](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e0607caeab32ce4c102dd3db17f6d498?pid=10) | 网络发送失败诊断 | UnityLogError | 826 | 31 | 2026-06-01 00:08:51 | bfv: 发送给房主失败 |
| [31cbaea700a7e8c8a613de4abe5a7578](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/31cbaea700a7e8c8a613de4abe5a7578?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 732 | 70 | 2026-06-01 16:37:32 | OnReceivedActionConfirm Version 不一致 |
| [4de7d427f16ede45dbd3693fc3431ac3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4de7d427f16ede45dbd3693fc3431ac3?pid=10) | 网络发送失败诊断 | UnityLogError | 709 | 123 | 2026-06-01 16:33:49 | ij: 房主广播失败 |
| [8107c16369fb00417c1682a0350ec64f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8107c16369fb00417c1682a0350ec64f?pid=10) | 相似 Action 重复诊断 | UnityLogError | 706 | 142 | 2026-06-01 16:48:19 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoChivalry PlayerAction : None AIParam : AllClear Tech : KanakoChivalry CultureCardType : None 重复次数 :6 |
| [c4e8e96b45f958f54e64ca2fddb91e57](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c4e8e96b45f958f54e64ca2fddb91e57?pid=10) | 网络发送失败诊断 | UnityLogError | 681 | 10 | 2026-05-31 22:03:19 | P2P message send failed: target=0, reason=Target member is not in lobby: 0 |
| [bb3abc26831f37e1233b6d33933a662a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bb3abc26831f37e1233b6d33933a662a?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 673 | 243 | 2026-06-01 16:31:32 | 客户端请求重连: SendRequestForceUpdate |
| [7aec17b6048d7981249d7dea16ae8419](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7aec17b6048d7981249d7dea16ae8419?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 672 | 172 | 2026-06-01 16:37:35 | 房主端message.Index > Main.MapData.Net.Actions.Count |
| [bdae619bb49f23e7f92e847c957b90e6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bdae619bb49f23e7f92e847c957b90e6?pid=10) | MapData 序列化差异诊断 | UnityLogError | 653 | 110 | 2026-06-01 16:16:30 | |
| [0697babdf87a5ec4c4516d18674e7faf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0697babdf87a5ec4c4516d18674e7faf?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 612 | 254 | 2026-06-01 16:13:39 | 客户端请求重连: SendRequestForceUpdate |
| [b9356ab138b2b54e96f3db7887c3b8d0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b9356ab138b2b54e96f3db7887c3b8d0?pid=10) | 相似 Action 重复诊断 | UnityLogError | 601 | 184 | 2026-06-01 16:44:08 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianNavigation PlayerAction : None AIParam : AllClear Tech : KomeijiIndianNavigation CultureCardType : None 重复次数 … |
| [76c4c1b1a5add246455aec813c46d59a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/76c4c1b1a5add246455aec813c46d59a?pid=10) | 相似 Action 重复诊断 | UnityLogError | 561 | 96 | 2026-06-01 16:42:37 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianRiding PlayerAction : None AIParam : AllClear Tech : KomeijiIndianRiding CultureCardType : None 重复次数 :7 |
| [394b7b66613aa8840ff6cc1529b92b52](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/394b7b66613aa8840ff6cc1529b92b52?pid=10) | Fragment 运行时保护日志 | UnityLogError | 553 | 336 | 2026-06-01 16:43:14 | Wrong With FragmentCityExpUp lv=2,exp=1 |
| [c3051df0699d3a433ecbef7e85411c9e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c3051df0699d3a433ecbef7e85411c9e?pid=10) | 相似 Action 重复诊断 | UnityLogError | 517 | 206 | 2026-06-01 16:33:48 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoFreeSpirit PlayerAction : None AIParam : AllClear Tech : KanakoFreeSpirit CultureCardType : None 重复次数 :7 |
| [edcd261bfeff53e33bfe7210c87dcb57](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/edcd261bfeff53e33bfe7210c87dcb57?pid=10) | 相似 Action 重复诊断 | UnityLogError | 504 | 90 | 2026-06-01 16:45:55 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoRiding PlayerAction : None AIParam : AllClear Tech : KanakoRiding CultureCardType : None 重复次数 :6 |
| [65db1d60ea0aaf171cc5d70c01c39643](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/65db1d60ea0aaf171cc5d70c01c39643?pid=10) | UI/Renderer 空保护诊断 | UnityLogError | 491 | 13 | 2026-06-01 09:54:29 | OnGridInfoAction Error: Main.MapData is null |
| [dbce2880e5ad9287fcca2bf271f97622](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dbce2880e5ad9287fcca2bf271f97622?pid=10) | 网络发送失败诊断 | UnityLogError | 489 | 232 | 2026-06-01 16:37:37 | ij: 房主广播失败 |
| [691253c2a412f07945231dd650f58213](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/691253c2a412f07945231dd650f58213?pid=10) | 多语言 ID 为空 | UnityLogError | 464 | 286 | 2026-06-01 16:38:49 | 多语言ID为空 |
| [4de9527a59d2c07d37e8b3ff32f3c989](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4de9527a59d2c07d37e8b3ff32f3c989?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 436 | 199 | 2026-06-01 16:16:27 | 触发断线重连, 触发原因: OK |
| [96f8b995fac2c7d6ffe13ed651df71c1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/96f8b995fac2c7d6ffe13ed651df71c1?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 408 | 234 | 2026-06-01 16:29:01 | 成员端: message.Index > Main.MapData.Net.Actions.Count |
| [7f6a8332378f3bf99f4514490f913b17](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7f6a8332378f3bf99f4514490f913b17?pid=10) | 相似 Action 重复诊断 | UnityLogError | 387 | 71 | 2026-06-01 12:59:52 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianSailing PlayerAction : None AIParam : AllClear Tech : KomeijiIndianSailing CultureCardType : None 重复次数 :6 |
| [2412d572023132e0496b38e90c91b0f8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2412d572023132e0496b38e90c91b0f8?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 380 | 169 | 2026-06-01 16:33:55 | OnReceivedActionConfirm MapHash 不一致,拒绝执行 |
| [2cb3d67ddfe0d9587abd02390f5de041](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2cb3d67ddfe0d9587abd02390f5de041?pid=10) | 网络发送失败诊断 | UnityLogError | 350 | 222 | 2026-06-01 16:33:54 | ij: 房主广播失败 |
| [9043dd945e4b0289ae7aa38939ee3105](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9043dd945e4b0289ae7aa38939ee3105?pid=10) | 相似 Action 重复诊断 | UnityLogError | 346 | 10 | 2026-06-01 16:39:43 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchTewi Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [37c3a6f1b4b5b39220ee5ed7563118bf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/37c3a6f1b4b5b39220ee5ed7563118bf?pid=10) | 网络发送失败诊断 | UnityLogError | 340 | 98 | 2026-06-01 16:33:51 | eop: 房主广播失败 |
| [335bf2f73aa492c78e9ac3ef0c3e03a8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/335bf2f73aa492c78e9ac3ef0c3e03a8?pid=10) | 行动执行玩家不一致 | UnityLogError | 299 | 77 | 2026-06-01 15:26:50 | CompleteExecute Player 不一致 Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [b8bbf46c799fc64adba48fa5070a2891](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b8bbf46c799fc64adba48fa5070a2891?pid=10) | 不可执行行动圈诊断 | UnityLogError | 288 | 158 | 2026-06-01 16:38:31 | CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None |
| [f1889c30ba46c477e039cea037c6b2ac](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f1889c30ba46c477e039cea037c6b2ac?pid=10) | 相似 Action 重复诊断 | UnityLogError | 286 | 6 | 2026-06-01 02:27:28 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Fishing PlayerAction : None AIParam : AllClear Tech : Fishing CultureCardType : None 重复次数 :1 |
| [81a5e2896daabc7005cd79ae522de4bf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/81a5e2896daabc7005cd79ae522de4bf?pid=10) | 网络发送失败诊断 | UnityLogError | 283 | 217 | 2026-06-01 16:21:59 | P2P broadcast preflight failed: target=76561199481856121, reason=Target is not a lobby peer: 76561199481856121 |
| [dfa3576d72796dc406c89b08e8bcef5a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dfa3576d72796dc406c89b08e8bcef5a?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 280 | 108 | 2026-06-01 15:52:59 | 触发断线重连, 触发原因: Error |
| [a0830cd150cf6348c957fa17694ae9f6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a0830cd150cf6348c957fa17694ae9f6?pid=10) | 网络发送失败诊断 | UnityLogError | 279 | 134 | 2026-06-01 16:24:49 | Failed to send game invite to: 76561198041520499 |
| [1d2092e8267a158d39aa1a040041020d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1d2092e8267a158d39aa1a040041020d?pid=10) | 网络发送失败诊断 | UnityLogError | 278 | 220 | 2026-06-01 16:21:59 | P2P broadcast preflight failed: target=76561199140125537, reason=No connection to 76561199140125537 |
| [d7e6cc2799b68c86e60f214b087d67a2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d7e6cc2799b68c86e60f214b087d67a2?pid=10) | 行动执行玩家不一致 | UnityLogError | 263 | 167 | 2026-06-01 16:32:10 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : SecondHero |
| [9e8f0e125886eb7d8915c71e359f7035](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9e8f0e125886eb7d8915c71e359f7035?pid=10) | 相似 Action 重复诊断 | UnityLogError | 244 | 14 | 2026-06-01 03:05:37 | 存在相似action ,记录点为:142 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Riding PlayerAction : None AIParam : AllClear Tech : Riding CultureCardType : None 重复次数 :6 |
| [d7a74e6e95985e97e0bbecc7de0c0f44](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d7a74e6e95985e97e0bbecc7de0c0f44?pid=10) | 网络发送失败诊断 | UnityLogError | 229 | 52 | 2026-06-01 16:37:39 | Failed to send game invite to: 76561199211883909 |
| [8580a82c199b326d8623eef77b8af637](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8580a82c199b326d8623eef77b8af637?pid=10) | 相似 Action 重复诊断 | UnityLogError | 223 | 61 | 2026-06-01 15:47:04 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Aquatism PlayerAction : None AIParam : AllClear Tech : Aquatism CultureCardType : None 重复次数 :6 |
| [e2d6a88d46dcb49a0d139cdc09cfcf60](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e2d6a88d46dcb49a0d139cdc09cfcf60?pid=10) | 相似 Action 重复诊断 | UnityLogError | 223 | 85 | 2026-06-01 15:51:19 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoSmithery PlayerAction : None AIParam : AllClear Tech : KanakoSmithery CultureCardType : None 重复次数 :6 |
| [0c97df3bd169a53d42335055c5e33ce5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0c97df3bd169a53d42335055c5e33ce5?pid=10) | 相似 Action 重复诊断 | UnityLogError | 222 | 10 | 2026-06-01 16:17:43 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Diplomacy PlayerAction : None AIParam : AllClear Tech : Diplomacy CultureCardType : None 重复次数 :6 |
| [ad52d9e056bfbd17f4ccb8384e5f83d9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad52d9e056bfbd17f4ccb8384e5f83d9?pid=10) | 相似 Action 重复诊断 | UnityLogError | 216 | 64 | 2026-06-01 16:21:12 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianMethematics PlayerAction : None AIParam : AllClear Tech : KomeijiIndianMethematics CultureCardType : None 重复次… |
| [c7cbea703f42ecf6f54444f481fe7465](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c7cbea703f42ecf6f54444f481fe7465?pid=10) | 行动执行玩家不一致 | UnityLogError | 207 | 112 | 2026-06-01 16:43:24 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : SecondHero |
| [ec2ef8c61c2766d3ae3dcc4f1fd422ae](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ec2ef8c61c2766d3ae3dcc4f1fd422ae?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 202 | 20 | 2026-06-01 16:32:10 | 房主端message.Index < Main.MapData.Net.Actions.Count |
| [7f1d39e4d1ab06af2b277d2a5eeec9cf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7f1d39e4d1ab06af2b277d2a5eeec9cf?pid=10) | 相似 Action 重复诊断 | UnityLogError | 189 | 56 | 2026-06-01 16:15:40 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoRoads PlayerAction : None AIParam : AllClear Tech : KanakoRoads CultureCardType : None 重复次数 :6 |
| [f5d6caefc1e5ac72cd5c21a56e3dfddb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5d6caefc1e5ac72cd5c21a56e3dfddb?pid=10) | 多语言 ID 为空 | UnityLogError | 184 | 151 | 2026-06-01 16:38:49 | 多语言ID为空 |
| [0cb4b0db462d1610c11fe1d5444a01d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0cb4b0db462d1610c11fe1d5444a01d?pid=10) | 相似 Action 重复诊断 | UnityLogError | 175 | 9 | 2026-06-01 09:34:07 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Construction PlayerAction : None AIParam : AllClear Tech : Construction CultureCardType : None 重复次数 :6 |
| [6f9a7dfae381416b2527844f750fafc1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6f9a7dfae381416b2527844f750fafc1?pid=10) | 相似 Action 重复诊断 | UnityLogError | 161 | 42 | 2026-06-01 15:33:57 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : FreeSpirit PlayerAction : None AIParam : AllClear Tech : FreeSpirit CultureCardType : None 重复次数 :6 |
| [4519111d864a8906a22e97fb6b1dafde](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4519111d864a8906a22e97fb6b1dafde?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 158 | 140 | 2026-06-01 16:48:17 | CollectData upload failed: STS request failed: HTTP/1.1 403 Forbidden |
| [e411b59aba2e1015cd27950bef1e17e4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e411b59aba2e1015cd27950bef1e17e4?pid=10) | 多语言 ID 为空 | UnityLogError | 153 | 116 | 2026-06-01 16:05:50 | 多语言ID为空 |
| [60d84edf5f69d3592e1dc8aef452a038](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/60d84edf5f69d3592e1dc8aef452a038?pid=10) | 网络发送失败诊断 | UnityLogError | 136 | 120 | 2026-06-01 16:24:49 | Failed to send message to 76561198041520499: k_EResultConnectFailed |
| [93509b23a954c79d835f4138bab9f3f7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/93509b23a954c79d835f4138bab9f3f7?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 136 | 132 | 2026-06-01 16:48:17 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: Steam API 请求失败(重试 2 次): Steam API 请求超时8000ms"} |
| [a2897449c9b8859f7fdc82ff7e1099f9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a2897449c9b8859f7fdc82ff7e1099f9?pid=10) | 多语言 ID 为空 | UnityLogError | 136 | 110 | 2026-06-01 16:05:49 | 多语言ID为空 |
| [afec6671a017afaa004d0c956b773ca4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/afec6671a017afaa004d0c956b773ca4?pid=10) | 多语言 ID 为空 | UnityLogError | 133 | 112 | 2026-06-01 16:05:49 | 多语言ID为空 |
| [1df80dbcaf6f1f71cbd77fff64532361](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1df80dbcaf6f1f71cbd77fff64532361?pid=10) | 网络发送失败诊断 | UnityLogError | 124 | 112 | 2026-06-01 16:22:02 | P2P broadcast preflight failed: target=76561199841273076, reason=No connection to 76561199841273076 |
| [267ee4c6d81420011154b0f4e52f32a5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/267ee4c6d81420011154b0f4e52f32a5?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 121 | 13 | 2026-06-01 14:13:26 | 触发断线重连, 触发原因: Disconnected |
| [8f35d8d1fd8078645abcd7bd1061b0c5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8f35d8d1fd8078645abcd7bd1061b0c5?pid=10) | 相似 Action 重复诊断 | UnityLogError | 120 | 34 | 2026-06-01 16:11:28 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoPhilosophy PlayerAction : None AIParam : AllClear Tech : KanakoPhilosophy CultureCardType : None 重复次数 :6 |
| [c6ce536d44ecf701fe2008fa1dbfbba6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c6ce536d44ecf701fe2008fa1dbfbba6?pid=10) | 网络发送失败诊断 | UnityLogError | 119 | 9 | 2026-06-01 10:24:49 | cwj: 发送给成员失败 memberId=76561199018912441 |
| [17ad3797303c790702e726900b44d7a1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/17ad3797303c790702e726900b44d7a1?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 107 | 44 | 2026-06-01 10:24:45 | Failed to enter lobby: k_EChatRoomEnterResponseFull |
| [250d1a8a1acff41c635ce86249462e21](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/250d1a8a1acff41c635ce86249462e21?pid=10) | 行动执行玩家不一致 | UnityLogError | 102 | 65 | 2026-06-01 16:34:22 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : ThirdHero |
| [cd265fbdf8ded17ae8f2ad9583733229](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cd265fbdf8ded17ae8f2ad9583733229?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 91 | 48 | 2026-06-01 16:04:29 | 触发断线重连, 触发原因: Timeout |
| [721b6aebba24867dce20d3279e8c13c5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/721b6aebba24867dce20d3279e8c13c5?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 89 | 28 | 2026-06-01 14:45:06 | 触发断线重连, 触发原因: Leaved |
| [c11f14ad2fbd5625c5b53fb910cdba76](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c11f14ad2fbd5625c5b53fb910cdba76?pid=10) | 网络发送失败诊断 | UnityLogError | 88 | 81 | 2026-06-01 14:42:48 | P2P broadcast preflight failed: target=76561199211883909, reason=No connection to 76561199211883909 |
| [ea2c22182f1187fccfaa5e605b3072c0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ea2c22182f1187fccfaa5e605b3072c0?pid=10) | 多语言 ID 为空 | UnityLogError | 86 | 72 | 2026-06-01 16:05:55 | 多语言ID为空 |
| [e9a74de444c15d64d5825793b25bd466](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e9a74de444c15d64d5825793b25bd466?pid=10) | 相似 Action 重复诊断 | UnityLogError | 85 | 1 | 2026-05-31 20:01:12 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : EgyptianRemilia Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [65b06fbb438780b70bdb76c45f529d9c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/65b06fbb438780b70bdb76c45f529d9c?pid=10) | 网络发送失败诊断 | UnityLogError | 82 | 24 | 2026-05-31 22:44:30 | P2P message send failed: target=76561199030260664, reason=Queued P2P message dropped because connection is not active: state=k_ESteamNetworkingConnectionState_ClosedByPeer, messageId: 0, chunk: 1/1 |
| [d18bfbc0e4a5081be9492bd8dda67301](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d18bfbc0e4a5081be9492bd8dda67301?pid=10) | MapData 序列化差异诊断 | UnityLogError | 80 | 3 | 2026-05-31 20:47:20 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[104].gnl.Count: 0 != 1 gor.gph[0].gpw: 12 != 13 gor.gph[0].g… |
| [fc2d124d395f06a7f9a3d4f88141e46e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fc2d124d395f06a7f9a3d4f88141e46e?pid=10) | 行动执行玩家不一致 | UnityLogError | 75 | 57 | 2026-06-01 11:44:48 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentForest |
| [0fc9fec6c17b8d12527197dae35611d6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0fc9fec6c17b8d12527197dae35611d6?pid=10) | 相似 Action 重复诊断 | UnityLogError | 72 | 18 | 2026-06-01 13:47:00 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Roads PlayerAction : None AIParam : AllClear Tech : Roads CultureCardType : None 重复次数 :6 |
| [9c97ea379fd9f3b95e8f758b307e4997](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9c97ea379fd9f3b95e8f758b307e4997?pid=10) | 相似 Action 重复诊断 | UnityLogError | 62 | 27 | 2026-06-01 10:06:15 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianChivalry PlayerAction : None AIParam : AllClear Tech : KomeijiIndianChivalry CultureCardType : None 重复次数 :6 |
| [683af7e6fbb1a3d4bf25311b223076bb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/683af7e6fbb1a3d4bf25311b223076bb?pid=10) | 相似 Action 重复诊断 | UnityLogError | 61 | 24 | 2026-06-01 16:38:00 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoNavigation PlayerAction : None AIParam : AllClear Tech : KanakoNavigation CultureCardType : None 重复次数 :6 |
| [193d2d61f85358b92951ff088aecf11e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/193d2d61f85358b92951ff088aecf11e?pid=10) | 相似 Action 重复诊断 | UnityLogError | 56 | 17 | 2026-06-01 16:38:31 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Spiritualism PlayerAction : None AIParam : AllClear Tech : Spiritualism CultureCardType : None 重复次数 :7 |
| [b63bc16c733e36d73849205e87363b5f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b63bc16c733e36d73849205e87363b5f?pid=10) | 行动执行玩家不一致 | UnityLogError | 54 | 38 | 2026-06-01 14:16:57 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : ThirdHero |
| [daec796293ecae6d73a5eef8f5e3707c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/daec796293ecae6d73a5eef8f5e3707c?pid=10) | 网络发送失败诊断 | UnityLogError | 53 | 48 | 2026-06-01 16:37:09 | Failed to send message to 76561199040381920: k_EResultConnectFailed |
| [5b43fb939ee15af71b061baef0fdfaa1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5b43fb939ee15af71b061baef0fdfaa1?pid=10) | 相似 Action 重复诊断 | UnityLogError | 52 | 7 | 2026-06-01 10:50:41 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Farming PlayerAction : None AIParam : AllClear Tech : Farming CultureCardType : None 重复次数 :6 |
| [2155cbc9cb2baf0262737433bbc6e38f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2155cbc9cb2baf0262737433bbc6e38f?pid=10) | 相似 Action 重复诊断 | UnityLogError | 51 | 11 | 2026-06-01 15:05:09 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianArchery PlayerAction : None AIParam : AllClear Tech : KomeijiIndianArchery CultureCardType : None 重复次数 :6 |
| [378434af7c2f55f4ffb8ec2a9f287b4c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/378434af7c2f55f4ffb8ec2a9f287b4c?pid=10) | 相似 Action 重复诊断 | UnityLogError | 51 | 3 | 2026-05-31 17:02:49 | 存在相似action ,记录点为:716 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Strategy PlayerAction : None AIParam : AllClear Tech : Strategy CultureCardType : None 重复次数 :7 |
| [5b3c6d96b848815202763b13c522f434](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5b3c6d96b848815202763b13c522f434?pid=10) | 相似 Action 重复诊断 | UnityLogError | 50 | 31 | 2026-06-01 15:59:37 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Ramming PlayerAction : None AIParam : AllClear Tech : Ramming CultureCardType : None 重复次数 :6 |
| [3743c47c5fc7e16a9977cfae8eb753eb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3743c47c5fc7e16a9977cfae8eb753eb?pid=10) | 行动执行玩家不一致 | UnityLogError | 47 | 47 | 2026-06-01 11:22:44 | CompleteExecute Player 不一致 Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : Workshop GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [974c98893bbef75ff005eef661098908](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/974c98893bbef75ff005eef661098908?pid=10) | ForceUpdate 玩家网络映射失败 | UnityLogError | 47 | 7 | 2026-06-01 05:08:11 | OnReceivedForceUpdate 玩家网络映射失败 |
| [c01e176659cfee5baba883ae144f3620](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c01e176659cfee5baba883ae144f3620?pid=10) | 相似 Action 重复诊断 | UnityLogError | 45 | 12 | 2026-06-01 15:44:29 | 存在相似action ,记录点为:18 ,Action为:Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : SecondHero 重复次数 :1 |
| [789da56c26d7bf1335be14e6ed615517](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/789da56c26d7bf1335be14e6ed615517?pid=10) | 不可执行行动圈诊断 | UnityLogError | 44 | 28 | 2026-06-01 12:58:47 | CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None |
| [886fa66ed99f8ff6955fe0e47d8e2f82](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/886fa66ed99f8ff6955fe0e47d8e2f82?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 43 | 9 | 2026-06-01 14:47:39 | 未知连接失败原因: 5008 |
| [a0e37aa641e65872faadaebad6187c91](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a0e37aa641e65872faadaebad6187c91?pid=10) | 相似 Action 重复诊断 | UnityLogError | 43 | 17 | 2026-06-01 16:25:33 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoMining PlayerAction : None AIParam : AllClear Tech : KanakoMining CultureCardType : None 重复次数 :6 |
| [3073af8438a779606ac04d433962d5cd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3073af8438a779606ac04d433962d5cd?pid=10) | 相似 Action 重复诊断 | UnityLogError | 41 | 29 | 2026-06-01 10:36:49 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoTrade PlayerAction : None AIParam : AllClear Tech : KanakoTrade CultureCardType : None 重复次数 :7 |
| [6e22e10659bc2d79299b3887d16d68e0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6e22e10659bc2d79299b3887d16d68e0?pid=10) | 相似 Action 重复诊断 | UnityLogError | 39 | 5 | 2026-06-01 09:06:30 | 存在相似action ,记录点为:771 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KaguyaRoad PlayerAction : None AIParam : AllClear Tech : KaguyaRoad CultureCardType : None 重复次数 :7 |
| [af57b9115786c79178d91943f380bf82](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/af57b9115786c79178d91943f380bf82?pid=10) | 相似 Action 重复诊断 | UnityLogError | 39 | 4 | 2026-06-01 13:01:08 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : GermanySanae Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [4e3d34adfbf230fd950555e4bdb181c6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4e3d34adfbf230fd950555e4bdb181c6?pid=10) | 相似 Action 重复诊断 | UnityLogError | 37 | 13 | 2026-06-01 16:23:26 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Trade PlayerAction : None AIParam : AllClear Tech : Trade CultureCardType : None 重复次数 :6 |
| [41ede517297398a59bc70bc4b37551cd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/41ede517297398a59bc70bc4b37551cd?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 36 | 12 | 2026-06-01 14:55:24 | CollectData upload failed: STS request failed: Cannot resolve destination host |
| [529e434adfb601346ac0ff0ebe3b699e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/529e434adfb601346ac0ff0ebe3b699e?pid=10) | MapData 序列化差异诊断 | UnityLogError | 35 | 5 | 2026-06-01 13:01:43 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 62 != 46 gor.gph[0].gpq: 10985 != 11065 got.grb.Count: 135 != 137 gou.gpd.Count: 4322 != 4324 g… |
| [034cfe80d745e3c9774d27e82ff3a0f3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/034cfe80d745e3c9774d27e82ff3a0f3?pid=10) | 网络发送失败诊断 | UnityLogError | 34 | 19 | 2026-06-01 16:33:50 | ActionExecute broadcast failed, abort owner execute: Action : UnitMove Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [e139e615cb7de95a6f55d1391aaa7410](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e139e615cb7de95a6f55d1391aaa7410?pid=10) | 相似 Action 重复诊断 | UnityLogError | 34 | 22 | 2026-06-01 15:40:43 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Chivalry PlayerAction : None AIParam : AllClear Tech : Chivalry CultureCardType : None 重复次数 :6 |
| [c8f74fcf4f765ba38d4e1e2e4c34d41e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c8f74fcf4f765ba38d4e1e2e4c34d41e?pid=10) | 行动执行玩家不一致 | UnityLogError | 33 | 11 | 2026-06-01 14:02:30 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : AdvancedMilitaryEnhance |
| [18881ca550f30dcd6389af3fec2d7699](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/18881ca550f30dcd6389af3fec2d7699?pid=10) | 网络发送失败诊断 | UnityLogError | 29 | 6 | 2026-06-01 01:04:39 | ActionExecute broadcast failed, abort owner execute: Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [ef6af01bde7f25d4d8e4b961893178c1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ef6af01bde7f25d4d8e4b961893178c1?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 26 | 21 | 2026-06-01 14:59:17 | 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations. |
| [19f04f1921c4dbcd5ec5176a8ed3683d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/19f04f1921c4dbcd5ec5176a8ed3683d?pid=10) | 行动执行玩家不一致 | UnityLogError | 25 | 24 | 2026-06-01 11:01:13 | CompleteExecute Player 不一致 Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : Explorer GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [9474bfe98e77682b012343635c22eeb2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9474bfe98e77682b012343635c22eeb2?pid=10) | 地图/同步状态不一致诊断 | UnityLogError | 25 | 3 | 2026-06-01 10:09:24 | Map不一致前后Action Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : BreakAlly AIParam : AllClear Tech : None CultureCardType : None 后Action : UnitAction Wonder : None Resource :… |
| [d782629e1b9bb885da5a9cae6d7b924e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d782629e1b9bb885da5a9cae6d7b924e?pid=10) | MapData 序列化差异诊断 | UnityLogError | 25 | 8 | 2026-06-01 02:51:51 | got.grb[7].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[7].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[7].gqz[1].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[… |
| [21d61ac4356e061fdb16d2583f6e4f49](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/21d61ac4356e061fdb16d2583f6e4f49?pid=10) | 相似 Action 重复诊断 | UnityLogError | 23 | 2 | 2026-05-31 18:22:14 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : IndianUtsuho Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [50119431f45750d343ff2c70de7250b5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/50119431f45750d343ff2c70de7250b5?pid=10) | 行动执行玩家不一致 | UnityLogError | 23 | 14 | 2026-05-31 20:55:22 | CompleteExecute Player 不一致 Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [cf2eb96359369cc1db5a70e5e2b219b1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cf2eb96359369cc1db5a70e5e2b219b1?pid=10) | 网络发送失败诊断 | UnityLogError | 22 | 20 | 2026-06-01 16:33:47 | dyo: 房主广播失败 |
| [40b385e6956400fe315db114f30e0fb7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/40b385e6956400fe315db114f30e0fb7?pid=10) | 行动执行玩家不一致 | UnityLogError | 21 | 14 | 2026-06-01 15:28:14 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentMountain |
| [24fa653e2e11d1e45438b6f0532126b0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/24fa653e2e11d1e45438b6f0532126b0?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 20 | 17 | 2026-06-01 10:17:56 | Failed to enter lobby: k_EChatRoomEnterResponseDoesntExist |
| [636ef235a81c87766432c834b6dd2317](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/636ef235a81c87766432c834b6dd2317?pid=10) | 网络发送失败诊断 | UnityLogError | 20 | 4 | 2026-06-01 14:42:47 | ActionExecute broadcast failed, abort owner execute: Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [8f267b2f5c50f93b544af8886fe61db8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8f267b2f5c50f93b544af8886fe61db8?pid=10) | 行动执行玩家不一致 | UnityLogError | 20 | 3 | 2026-05-31 23:44:51 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentDeepSea |
| [e7f8cb8e59e26d51248a4ffb8f221d97](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e7f8cb8e59e26d51248a4ffb8f221d97?pid=10) | 相似 Action 重复诊断 | UnityLogError | 19 | 6 | 2026-06-01 14:12:48 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Navigation PlayerAction : None AIParam : AllClear Tech : Navigation CultureCardType : None 重复次数 :6 |
| [107abe1efb00c8f713af9d2750b13da9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/107abe1efb00c8f713af9d2750b13da9?pid=10) | 网络发送失败诊断 | UnityLogError | 18 | 13 | 2026-06-01 05:32:35 | epn: 发送给房主失败 |
| [879342965b3e2cf8dfb3f6e6be2f3b0c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/879342965b3e2cf8dfb3f6e6be2f3b0c?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 18 | 12 | 2026-06-01 16:22:35 | 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning. |
| [c2daa8b71f370b978be659cda9e902bb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c2daa8b71f370b978be659cda9e902bb?pid=10) | 网络发送失败诊断 | UnityLogError | 18 | 18 | 2026-06-01 00:08:51 | P2P message send failed: target=76561198335928045, reason=No connection to 76561198335928045 |
| [d0c686e60340f8c46826266c5ddd9f47](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d0c686e60340f8c46826266c5ddd9f47?pid=10) | 行动执行玩家不一致 | UnityLogError | 18 | 15 | 2026-06-01 12:18:38 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentShallow |
| [213b50a7c27692249febd5c26cb777c3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/213b50a7c27692249febd5c26cb777c3?pid=10) | 相似 Action 重复诊断 | UnityLogError | 17 | 6 | 2026-06-01 15:44:11 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Climbing PlayerAction : None AIParam : AllClear Tech : Climbing CultureCardType : None 重复次数 :1 |
| [42054f95972800b3ddcc9b91043d193d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/42054f95972800b3ddcc9b91043d193d?pid=10) | MapData 序列化差异诊断 | UnityLogError | 17 | 3 | 2026-05-31 23:07:43 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 41 != 25 gor.gph[0].gpq: 7590 != 7670 got.grb.Count: 23 != 25 gou.gpd.Count: 2211 != 2213 gow.C… |
| [773e5d47d6aad89edb0492504359a8c9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/773e5d47d6aad89edb0492504359a8c9?pid=10) | 网络发送失败诊断 | UnityLogError | 17 | 17 | 2026-06-01 14:49:10 | P2P broadcast preflight failed: target=76561199211883909, reason=No connection to 76561199211883909 |
| [0d3c117cffe5cca3489b9158c6c5236b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0d3c117cffe5cca3489b9158c6c5236b?pid=10) | 网络发送失败诊断 | UnityLogError | 16 | 15 | 2026-06-01 01:55:22 | fme: 发送给成员失败 memberId=76561199211883909 |
| [6dfe783e1262151aaa8989ab8b12c2f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6dfe783e1262151aaa8989ab8b12c2f4?pid=10) | 相似 Action 重复诊断 | UnityLogError | 16 | 4 | 2026-06-01 02:31:27 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : NorwayReimu Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [d45285c96ca3da43b1ad35795061a550](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d45285c96ca3da43b1ad35795061a550?pid=10) | 网络发送失败诊断 | UnityLogError | 16 | 15 | 2026-06-01 01:55:20 | P2P message send failed: target=76561199211883909, reason=Target member is not in lobby: 76561199211883909 |
| [fdd2e54ceb6c0377abdc872171a8d6f3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fdd2e54ceb6c0377abdc872171a8d6f3?pid=10) | 网络发送失败诊断 | UnityLogError | 16 | 1 | 2026-05-31 22:41:18 | ActionExecute broadcast failed, abort owner execute: Action : Gain Wonder : None Resource : Fish Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [7b5f54e17dc2f09810eaf4a23c8fbf40](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7b5f54e17dc2f09810eaf4a23c8fbf40?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 15 | 7 | 2026-06-01 14:46:28 | 连接超时 - 可能的原因1.目标用户不在线 2.网络问题 3.防火墙阻止 |
| [94791c770730cb4f8e7af22d25e2920c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/94791c770730cb4f8e7af22d25e2920c?pid=10) | 行动执行玩家不一致 | UnityLogError | 15 | 15 | 2026-06-01 16:49:00 | CompleteExecute Player 不一致 Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : CityWealth GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [d2253454d7e4d68496b0b2943b9cec3c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d2253454d7e4d68496b0b2943b9cec3c?pid=10) | 相似 Action 重复诊断 | UnityLogError | 15 | 13 | 2026-06-01 16:47:37 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoMeditation PlayerAction : None AIParam : AllClear Tech : KanakoMeditation CultureCardType : None 重复次数 :6 |
| [f65c8eaa79c67eb3175c99e6919f3516](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f65c8eaa79c67eb3175c99e6919f3516?pid=10) | 相似 Action 重复诊断 | UnityLogError | 15 | 8 | 2026-06-01 11:29:58 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Sailing PlayerAction : None AIParam : AllClear Tech : Sailing CultureCardType : None 重复次数 :7 |
| [02ba2b432080d3ec71df44ec70ada0b8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/02ba2b432080d3ec71df44ec70ada0b8?pid=10) | 行动执行玩家不一致 | UnityLogError | 14 | 14 | 2026-06-01 09:49:56 | CompleteExecute Player 不一致 Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : BigGuy GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [4e5577b8620259d901db838dedfd5262](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4e5577b8620259d901db838dedfd5262?pid=10) | 结算卡住兜底诊断 | UnityLogError | 14 | 14 | 2026-06-01 15:31:51 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=14 NetMode=Single PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=14 CityCount=6 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [600050c9105bb97985338060934d9f77](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/600050c9105bb97985338060934d9f77?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 14 | 10 | 2026-06-01 16:31:46 | CollectData upload failed: STS request failed: HTTP/1.1 400 Bad Request |
| [66fdcc704a21291659dc3514e4765869](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/66fdcc704a21291659dc3514e4765869?pid=10) | 网络发送失败诊断 | UnityLogError | 14 | 14 | 2026-06-01 14:42:51 | P2P broadcast preflight failed: target=76561198430546820, reason=No connection to 76561198430546820 |
| [6bd22a2a6ee31e8e8e34144c082e7850](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6bd22a2a6ee31e8e8e34144c082e7850?pid=10) | 结算卡住兜底诊断 | UnityLogError | 14 | 14 | 2026-06-01 15:34:51 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=24 NetMode=Single PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=24 CityCount=8 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [863e74d991e2c66915742456680b0e91](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/863e74d991e2c66915742456680b0e91?pid=10) | 网络发送失败诊断 | UnityLogError | 14 | 14 | 2026-06-01 14:42:51 | dyo: 房主广播失败 |
| [2c80a08593d1d79d0f9f6d9ef7a2ec77](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2c80a08593d1d79d0f9f6d9ef7a2ec77?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 13 | 10 | 2026-06-01 11:21:30 | CollectData upload failed: STS request failed: Request timeout |
| [3ed551ed5c3ec29c3205b6381c3f9aa5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3ed551ed5c3ec29c3205b6381c3f9aa5?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 13 | 11 | 2026-06-01 14:29:33 | 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations. |
| [589373c458d67eceb1a52ffc4f2b59b8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/589373c458d67eceb1a52ffc4f2b59b8?pid=10) | Origin Player 为空诊断 | UnityLogError | 13 | 13 | 2026-06-01 13:50:38 | Origin Player is null target.id:518 |
| [1260b4b99e111e4903c2270ecba5b5af](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1260b4b99e111e4903c2270ecba5b5af?pid=10) | 网络发送失败诊断 | UnityLogError | 12 | 12 | 2026-05-31 22:36:59 | P2P message send failed: target=76561199197364272, reason=Target member is not in lobby: 76561199197364272 |
| [3bb4b661df2fe9407f944a47e337cda5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3bb4b661df2fe9407f944a47e337cda5?pid=10) | MapData 序列化差异诊断 | UnityLogError | 12 | 12 | 2026-06-01 00:00:40 | got.grb[4].gqz[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[4].gqz[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[4].gqz[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. |
| [4996aecdcf97c3d4b54719f999f5a6f3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4996aecdcf97c3d4b54719f999f5a6f3?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 12 | 10 | 2026-06-01 16:31:45 | STS request failed: HTTP/1.1 400 Bad Request, Response: {"error":"steamAppId must be one of: 3774440, 3887950"} |
| [bbd0f6208df6716ae37effe934a9f148](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bbd0f6208df6716ae37effe934a9f148?pid=10) | 网络发送失败诊断 | UnityLogError | 12 | 3 | 2026-06-01 04:37:58 | eop: 发送给房主失败 |
| [cdf7ee24424388a30f7e343d1a6a9a25](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cdf7ee24424388a30f7e343d1a6a9a25?pid=10) | 网络发送失败诊断 | UnityLogError | 12 | 12 | 2026-05-31 22:36:59 | fme: 发送给成员失败 memberId=76561199197364272 |
| [39f1705c6be89cfc405d62a429cd3ecf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/39f1705c6be89cfc405d62a429cd3ecf?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 11 | 3 | 2026-06-01 14:55:23 | STS request failed: Cannot resolve destination host, Response: |
| [43f14319d1b258affd890dcee07175f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/43f14319d1b258affd890dcee07175f4?pid=10) | 相似 Action 重复诊断 | UnityLogError | 11 | 7 | 2026-06-01 16:47:24 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Mathematics PlayerAction : None AIParam : AllClear Tech : Mathematics CultureCardType : None 重复次数 :6 |
| [5f2294e63d9d4a8a8d15f5fdc25b5cb2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5f2294e63d9d4a8a8d15f5fdc25b5cb2?pid=10) | 行动执行玩家不一致 | UnityLogError | 11 | 5 | 2026-06-01 10:09:26 | CompleteExecute Player 不一致 Action : Build Wonder : None Resource : LumberHut Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [7dbbfc91a300d4508a84d8e2d963e8e6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7dbbfc91a300d4508a84d8e2d963e8e6?pid=10) | 网络发送失败诊断 | UnityLogError | 11 | 9 | 2026-06-01 10:23:00 | P2P message send failed: target=76561199018912441, reason=Not in lobby |
| [46ee29218c6d89be077e23027b87707e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/46ee29218c6d89be077e23027b87707e?pid=10) | 多语言 ID 为空 | UnityLogError | 10 | 3 | 2026-06-01 13:44:09 | 多语言ID为空 |
| [4ead7c53428772d3e2104f3e2d46022e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4ead7c53428772d3e2104f3e2d46022e?pid=10) | 网络发送失败诊断 | UnityLogError | 9 | 9 | 2026-05-31 21:51:21 | fme: 发送给成员失败 memberId=76561199197364272 |
| [610a65bf1b673e5f0c9207d48cec12a2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/610a65bf1b673e5f0c9207d48cec12a2?pid=10) | 行动执行玩家不一致 | UnityLogError | 9 | 9 | 2026-06-01 09:43:49 | CompleteExecute Player 不一致 Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : CityWall GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [75a3ccfed59a3b1e5cdff8183b987406](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/75a3ccfed59a3b1e5cdff8183b987406?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 9 | 4 | 2026-06-01 00:23:10 | Failed to create lobby: k_EResultTimeout |
| [a2ef12b1ee1a74022509f9d18067a863](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a2ef12b1ee1a74022509f9d18067a863?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 9 | 8 | 2026-06-01 00:52:24 | Failed to enter lobby: k_EChatRoomEnterResponseError |
| [b6268405e423097fce87050da2cc675d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b6268405e423097fce87050da2cc675d?pid=10) | 行动执行玩家不一致 | UnityLogError | 9 | 8 | 2026-05-31 22:20:27 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : AdvancedHeroEnhance |
| [bb8bbd6587e3a2f44c11e91babee7a49](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bb8bbd6587e3a2f44c11e91babee7a49?pid=10) | 网络发送失败诊断 | UnityLogError | 9 | 9 | 2026-05-31 21:51:20 | P2P message send failed: target=76561199197364272, reason=Target member is not in lobby: 76561199197364272 |
| [be5e30af24e57f16bd89f3b3f6e98505](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/be5e30af24e57f16bd89f3b3f6e98505?pid=10) | 网络发送失败诊断 | UnityLogError | 9 | 9 | 2026-05-31 22:42:14 | P2P message send failed: target=76561199475558122, reason=No connection to 76561199475558122 |
| [041e3921930f3c9ee6f305974ec62123](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/041e3921930f3c9ee6f305974ec62123?pid=10) | 网络发送失败诊断 | UnityLogError | 8 | 4 | 2026-05-31 22:44:31 | epn: 发送给房主失败 |
| [3781e3c243cadba4b1550cdf922b6d2e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3781e3c243cadba4b1550cdf922b6d2e?pid=10) | 网络发送失败诊断 | UnityLogError | 8 | 8 | 2026-06-01 15:01:50 | dyo: 房主广播失败 |
| [3c3abd04a63bd79d02a58762554796a3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3c3abd04a63bd79d02a58762554796a3?pid=10) | OSS/创意工坊上传失败诊断 | UnityLogError | 8 | 2 | 2026-05-31 17:21:08 | WorkshopModUploader: 创建物品失败: Result=k_EResultAccessDenied, 需要同意协议=False |
| [4c23c0cf4f10b92b30e82da3148c6a99](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4c23c0cf4f10b92b30e82da3148c6a99?pid=10) | UI/Renderer 空保护诊断 | UnityLogError | 8 | 8 | 2026-06-01 01:25:45 | FragmentDie: UnitRenderer 为空,无法执行 Die() |
| [698fb570ca698169d602f9b227a34074](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/698fb570ca698169d602f9b227a34074?pid=10) | 网络发送失败诊断 | UnityLogError | 8 | 8 | 2026-06-01 02:14:48 | P2P broadcast preflight failed: target=76561199866057583, reason=No connection to 76561199866057583 |
| [9bee5c48b8f6a2c0247259901eb430dd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9bee5c48b8f6a2c0247259901eb430dd?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 8 | 8 | 2026-06-01 03:51:52 | Failed to refresh lobby data before joining: 109775242361674222 |
| [9e004d52e5ba61a1cd8a5ba76ea3202d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9e004d52e5ba61a1cd8a5ba76ea3202d?pid=10) | OSS/创意工坊上传失败诊断 | UnityLogError | 8 | 7 | 2026-05-31 22:53:36 | OSS PostObject 上传失败: Request timeout, HTTP 0, Response: |
| [a326cea0eb211f48d5e6f742795dbba5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a326cea0eb211f48d5e6f742795dbba5?pid=10) | MapData 序列化差异诊断 | UnityLogError | 8 | 8 | 2026-06-01 09:29:29 | gou.gpd.Count: 1879 != 1877 |
| [b077bae2896d3af9bd09e6b4f64e81ec](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b077bae2896d3af9bd09e6b4f64e81ec?pid=10) | 网络发送失败诊断 | UnityLogError | 8 | 8 | 2026-06-01 02:14:48 | dyo: 房主广播失败 |
| [efce858079914f89014ebce11ae7671d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/efce858079914f89014ebce11ae7671d?pid=10) | 相似 Action 重复诊断 | UnityLogError | 8 | 3 | 2026-06-01 15:42:23 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Archery PlayerAction : None AIParam : AllClear Tech : Archery CultureCardType : None 重复次数 :6 |
| [0ed2ec3c3d2630eac0c3b096234361d7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0ed2ec3c3d2630eac0c3b096234361d7?pid=10) | 相似 Action 重复诊断 | UnityLogError | 7 | 2 | 2026-06-01 00:45:18 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : GermanyMomiji Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :7 |
| [16c8b69e74a19311c7d1f3a0f2d26c2c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/16c8b69e74a19311c7d1f3a0f2d26c2c?pid=10) | 行动执行玩家不一致 | UnityLogError | 7 | 7 | 2026-05-31 19:14:05 | CompleteExecute Player 不一致 Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : Expand GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [244818660cdea541f999cd0f5d30e7d5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/244818660cdea541f999cd0f5d30e7d5?pid=10) | 行动执行玩家不一致 | UnityLogError | 7 | 2 | 2026-05-31 19:37:39 | CompleteExecute Player 不一致 Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : AbsorbRedMist CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [40c20d961527ac0e0fc5288af37cae47](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/40c20d961527ac0e0fc5288af37cae47?pid=10) | 本机音频/显卡能力诊断 | UnityLogError | 7 | 2 | 2026-06-01 13:01:14 | FMOD failed to get driver capabilities ... : "Error initializing output device. " (60) |
| [769a809e136b64386c15bc52ddecebd5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/769a809e136b64386c15bc52ddecebd5?pid=10) | 相似 Action 重复诊断 | UnityLogError | 7 | 7 | 2026-06-01 11:29:25 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchEirin Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [7d7fb27983acf34764f914c942b939b7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7d7fb27983acf34764f914c942b939b7?pid=10) | 网络发送失败诊断 | UnityLogError | 7 | 2 | 2026-06-01 12:35:52 | P2P broadcast preflight failed: target=76561199095963337, reason=Target is not a lobby peer: 76561199095963337 |
| [9bdd7ded0a12f17a10bb7a18ba6d0547](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9bdd7ded0a12f17a10bb7a18ba6d0547?pid=10) | 网络发送失败诊断 | UnityLogError | 7 | 6 | 2026-06-01 11:43:15 | P2P broadcast preflight failed: target=76561199746741916, reason=Target is not a lobby peer: 76561199746741916 |
| [e77811055b282a63d3098236817182e9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e77811055b282a63d3098236817182e9?pid=10) | 行动执行玩家不一致 | UnityLogError | 7 | 7 | 2026-06-01 04:50:46 | CompleteExecute Player 不一致 Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : Population GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [f4563635cbea9b4a9393e863e268bae3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f4563635cbea9b4a9393e863e268bae3?pid=10) | 网络发送失败诊断 | UnityLogError | 7 | 7 | 2026-06-01 15:01:49 | P2P broadcast preflight failed: target=76561199509606225, reason=No connection to 76561199509606225 |
| [fc053b598247d784ed22b79252dd711f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fc053b598247d784ed22b79252dd711f?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 7 | 4 | 2026-06-01 15:09:55 | 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning. |
| [3e22e08c43db203c29689f86e8addba9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3e22e08c43db203c29689f86e8addba9?pid=10) | 结算卡住兜底诊断 | UnityLogError | 6 | 6 | 2026-06-01 15:58:06 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=30 NetMode=Single PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=30 CityCount=17 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSu… |
| [42d6b47d8a74bf373ade1533f107cfc8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/42d6b47d8a74bf373ade1533f107cfc8?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 6 | 6 | 2026-05-31 21:39:37 | STS request failed: Request timeout, Response: |
| [47b901f167c15f9be3547573d7266736](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/47b901f167c15f9be3547573d7266736?pid=10) | 行动执行玩家不一致 | UnityLogError | 6 | 5 | 2026-06-01 04:53:28 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : AdvancedEconomyEnhance |
| [e3bc684f13b44f045ec1eb5809af0e68](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e3bc684f13b44f045ec1eb5809af0e68?pid=10) | 多语言 ID 为空 | UnityLogError | 6 | 1 | 2026-06-01 01:02:36 | WorkshopModLoader: 读取 translation.csv 失败 - Sharing violation on path C:\Users\joao-\AppData\LocalLow\Remilia Command\TOHOTOPIA v0_7_2b\WorkshopMods\TranslationMod_PT-BR_Core_20260530_190425\translation.csv |
| [e72101cce36cd8bd113c888ef63d7562](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e72101cce36cd8bd113c888ef63d7562?pid=10) | Origin Player 为空诊断 | UnityLogError | 6 | 6 | 2026-06-01 14:41:14 | Origin Player is null target.id:568 |
| [1de81d5299ca7c580b2188fae37d6b85](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1de81d5299ca7c580b2188fae37d6b85?pid=10) | 网络发送失败诊断 | UnityLogError | 5 | 5 | 2026-05-31 22:57:35 | dyo: 房主广播失败 |
| [9e12736ae3e7243e668e47a972dae5d1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9e12736ae3e7243e668e47a972dae5d1?pid=10) | 相似 Action 重复诊断 | UnityLogError | 5 | 5 | 2026-05-31 16:49:55 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchEirin Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [b48c3e5b62c08b5f72a9df5708061904](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b48c3e5b62c08b5f72a9df5708061904?pid=10) | MapData 序列化差异诊断 | UnityLogError | 5 | 5 | 2026-05-31 20:59:10 | got.grb[15].gqz[1].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[15].gqz[1].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[15].gqz[1].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. gou.g… |
| [c1fac556b3209f47572e74e6d7f0ab64](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c1fac556b3209f47572e74e6d7f0ab64?pid=10) | 网络发送失败诊断 | UnityLogError | 5 | 5 | 2026-05-31 22:57:35 | P2P broadcast preflight failed: target=76561199489395727, reason=No connection to 76561199489395727 |
| [dd5f396e0f90f1d3b47d700dfed82cd8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dd5f396e0f90f1d3b47d700dfed82cd8?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 5 | 5 | 2026-06-01 12:31:31 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: User is offline"} |
| [e588fdcf5ece4872586965261dd16fef](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e588fdcf5ece4872586965261dd16fef?pid=10) | OSS/创意工坊上传失败诊断 | UnityLogError | 5 | 5 | 2026-06-01 13:07:40 | OSS PostObject 上传失败: Unable to complete SSL connection, HTTP 0, Response: |
| [e8609ad537e5603f8a4867ad7aa73e4b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e8609ad537e5603f8a4867ad7aa73e4b?pid=10) | 相似 Action 重复诊断 | UnityLogError | 5 | 5 | 2026-06-01 16:33:24 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Smithery PlayerAction : None AIParam : AllClear Tech : Smithery CultureCardType : None 重复次数 :6 |
| [0b63deb3eb1398a5fc605ecfe90301a1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0b63deb3eb1398a5fc605ecfe90301a1?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 1 | 2026-05-31 23:14:31 | ActionConfirm send failed, abort local execute: Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [185485bf7bb64f1a249a02c2db07feea](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/185485bf7bb64f1a249a02c2db07feea?pid=10) | 相似 Action 重复诊断 | UnityLogError | 4 | 3 | 2026-06-01 15:44:29 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : EgyptianPatchouli Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [274499c68f6cf973074f06dca960e279](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/274499c68f6cf973074f06dca960e279?pid=10) | 相似 Action 重复诊断 | UnityLogError | 4 | 4 | 2026-06-01 12:28:43 | 存在相似action ,记录点为:142 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KaguyaTrade PlayerAction : None AIParam : AllClear Tech : KaguyaTrade CultureCardType : None 重复次数 :7 |
| [29726044126a568b1fc9716c2fad1cbd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/29726044126a568b1fc9716c2fad1cbd?pid=10) | 结算卡住兜底诊断 | UnityLogError | 4 | 4 | 2026-05-31 21:44:07 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=198 Turn=21 NetMode=Multi PlayerCount=2 Player Id=197 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=21 CityCount=8 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [2c7e0b54e312a553044b1b0149cdf377](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2c7e0b54e312a553044b1b0149cdf377?pid=10) | MapData 序列化差异诊断 | UnityLogError | 4 | 4 | 2026-05-31 22:07:33 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[1].fps: 14 != 9 gor.gph[1].gpq: 4625 != 4495 gos.gmm[11].gmo.gnb.Count: 14 != 9 gos.gmm[11].gmq: 5 != 4 gos.gmm[11].gmr: 1 != 5 gos.gmm[11].gna: 0 != 1 gou.gpd.Count: 311 != 309 |
| [2c90fb76aec9552214914833df6a3776](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2c90fb76aec9552214914833df6a3776?pid=10) | 相似 Action 重复诊断 | UnityLogError | 4 | 4 | 2026-06-01 01:00:21 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchMokou Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [32d4925a40f9db0fb7d2b098c38b2845](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/32d4925a40f9db0fb7d2b098c38b2845?pid=10) | 行动执行玩家不一致 | UnityLogError | 4 | 4 | 2026-06-01 00:04:57 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Warrior Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [3abc0627ef9184ac65396d5bb4dbdf8a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3abc0627ef9184ac65396d5bb4dbdf8a?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-05-31 22:44:30 | P2P message send failed: target=76561198389426652, reason=No connection to 76561198389426652 |
| [40305eaa5534e7b848986ce7aea78110](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/40305eaa5534e7b848986ce7aea78110?pid=10) | 相似 Action 重复诊断 | UnityLogError | 4 | 4 | 2026-06-01 03:19:55 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Mining PlayerAction : None AIParam : AllClear Tech : Mining CultureCardType : None 重复次数 :6 |
| [42a1832758f0f6ae2cf8c2159e09b270](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/42a1832758f0f6ae2cf8c2159e09b270?pid=10) | 结算卡住兜底诊断 | UnityLogError | 4 | 4 | 2026-06-01 04:17:52 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=11 NetMode=Single PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=11 CityCount=5 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [6103ad250385c98e724743b68f7569f7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6103ad250385c98e724743b68f7569f7?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-06-01 14:42:47 | P2P broadcast preflight failed: target=76561198430546820, reason=No connection to 76561198430546820 |
| [da92733e4f2c7175755150f1172062bc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/da92733e4f2c7175755150f1172062bc?pid=10) | 本地安全写入失败 | UnityLogError | 4 | 4 | 2026-06-01 14:48:52 | 保存地图数据失败: 安全写入失败 |
| [f14ac061b2149a6e99d386b3b392434d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f14ac061b2149a6e99d386b3b392434d?pid=10) | 相似 Action 重复诊断 | UnityLogError | 4 | 4 | 2026-06-01 08:24:57 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : GermanyAya Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [fc5530590dc29e8986cc0f71b89692ab](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fc5530590dc29e8986cc0f71b89692ab?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-06-01 14:42:47 | dyo: 房主广播失败 |
| [04ac20a8329bf0c897fde777740ab79d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/04ac20a8329bf0c897fde777740ab79d?pid=10) | 行动执行玩家不一致 | UnityLogError | 3 | 3 | 2026-05-31 22:12:35 | CompleteExecute Player 不一致 Action : Build Wonder : None Resource : Port Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [1ab52dbbfc7b4e72f97d30af789461ef](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1ab52dbbfc7b4e72f97d30af789461ef?pid=10) | MapData 序列化差异诊断 | UnityLogError | 3 | 3 | 2026-06-01 14:45:07 | got.grb[7].gqz[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[7].gqz[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. |
| [1f3f7ae489793d5d42edb2283ae194ec](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1f3f7ae489793d5d42edb2283ae194ec?pid=10) | MapData 序列化差异诊断 | UnityLogError | 3 | 3 | 2026-05-31 19:10:02 | got.grb[10].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[10].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[10].gqz[1].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.g… |
| [20abf236cfe52f800ec919138caf6d4b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/20abf236cfe52f800ec919138caf6d4b?pid=10) | 结算卡住兜底诊断 | UnityLogError | 3 | 3 | 2026-05-31 21:45:42 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=15 NetMode=Multi PlayerCount=2 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=15 CityCount=5 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [2837eea491c93a23072cd4f5c33f5daf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2837eea491c93a23072cd4f5c33f5daf?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 3 | 3 | 2026-06-01 01:53:57 | 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations. |
| [45073cee8c5159db63b4ce55d14e746f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/45073cee8c5159db63b4ce55d14e746f?pid=10) | 行动执行玩家不一致 | UnityLogError | 3 | 3 | 2026-06-01 01:10:27 | CompleteExecute Player 不一致 Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : Park GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [5a1a47b429b02ee8d7c17520ab83f103](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5a1a47b429b02ee8d7c17520ab83f103?pid=10) | 结算卡住兜底诊断 | UnityLogError | 3 | 2 | 2026-05-31 21:46:41 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=197 Turn=3 NetMode=Multi PlayerCount=2 Player Id=197 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=3 CityCount=1 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=False IsSucce… |
| [5a79821db72b579e77ae42b77342ccc4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5a79821db72b579e77ae42b77342ccc4?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 3 | 1 | 2026-05-31 22:44:21 | P2P connection error: Failed to connect to 76561199752137914 |
| [5c2a2bb937af9cd47fdb450f7285873d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5c2a2bb937af9cd47fdb450f7285873d?pid=10) | MapData 序列化差异诊断 | UnityLogError | 3 | 3 | 2026-06-01 13:34:57 | got.grb[0].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[0].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[0].jom[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[… |
| [6b687588ef1dd8deda7007737a391df9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6b687588ef1dd8deda7007737a391df9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 3 | 3 | 2026-05-31 17:49:19 | gou.gpd.Count: 943 != 941 |
| [736b76f612c90176d984722fdbfdb5b7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/736b76f612c90176d984722fdbfdb5b7?pid=10) | 相似 Action 重复诊断 | UnityLogError | 3 | 3 | 2026-06-01 15:38:55 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KaguyaConstruction PlayerAction : None AIParam : AllClear Tech : KaguyaConstruction CultureCardType : None 重复次数 :6 |
| [78fee8f338652c30c0a6b6f7a27878be](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/78fee8f338652c30c0a6b6f7a27878be?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 3 | 2 | 2026-05-31 22:47:08 | 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning. |
| [7ac42b537b47a06f9349bbf7266b565c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7ac42b537b47a06f9349bbf7266b565c?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-05-31 21:47:49 | ij: 房主广播失败 |
| [9c5d041d9cddd5219719c5a57212b718](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9c5d041d9cddd5219719c5a57212b718?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-05-31 22:34:00 | ActionExecute broadcast failed, abort owner execute: Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : SecondHero |
| [9f4f246d84cb408f49062e11a0d86ddd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9f4f246d84cb408f49062e11a0d86ddd?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 1 | 2026-05-31 19:53:49 | cwj: 发送给成员失败 memberId=76561199122544917 |
| [a3944262510d4d7e7b9282abbdd4dbb9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a3944262510d4d7e7b9282abbdd4dbb9?pid=10) | 行动执行玩家不一致 | UnityLogError | 3 | 3 | 2026-06-01 04:27:12 | CompleteExecute Player 不一致 Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : Disband CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [a4b9850f4fff9fc2e741d86c2bf5f8a5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a4b9850f4fff9fc2e741d86c2bf5f8a5?pid=10) | 行动执行玩家不一致 | UnityLogError | 3 | 3 | 2026-06-01 09:36:46 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentPlain |
| [aedc3d510e61bc5d94656fa859c6dd5e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/aedc3d510e61bc5d94656fa859c6dd5e?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 3 | 3 | 2026-05-31 19:18:25 | CollectData upload failed: STS request failed: Unable to read data |
| [b49644a24a466f956045d2bcbb75f449](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b49644a24a466f956045d2bcbb75f449?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-05-31 22:57:35 | ActionExecute broadcast failed, abort owner execute: Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [b96e43dcfa274cb7bea0d7801b3df20c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b96e43dcfa274cb7bea0d7801b3df20c?pid=10) | 行动执行玩家不一致 | UnityLogError | 3 | 3 | 2026-05-31 23:07:51 | CompleteExecute Player 不一致 Action : Gain Wonder : None Resource : Fish Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [bf6078910364324da71097ad309ab5c8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bf6078910364324da71097ad309ab5c8?pid=10) | 结算卡住兜底诊断 | UnityLogError | 3 | 3 | 2026-05-31 23:07:18 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=29 NetMode=Single PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=29 CityCount=17 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSu… |
| [c8a85134cbf8ea836f2f582a6f50868b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c8a85134cbf8ea836f2f582a6f50868b?pid=10) | 相似 Action 重复诊断 | UnityLogError | 3 | 3 | 2026-05-31 22:23:31 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchReisen Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :2 |
| [c8bb360bc43adb4031886d360f65d8d7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c8bb360bc43adb4031886d360f65d8d7?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 3 | 3 | 2026-06-01 15:45:32 | STS request failed: Unable to complete SSL connection, Response: |
| [d2ba6af25832e62fe9511ca9ae332931](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d2ba6af25832e62fe9511ca9ae332931?pid=10) | 行动执行玩家不一致 | UnityLogError | 3 | 3 | 2026-05-31 21:52:43 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Catapult Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [de188a594d1d08a70f2309e7773aa631](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/de188a594d1d08a70f2309e7773aa631?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-05-31 21:47:49 | P2P broadcast preflight failed: target=76561198411516596, reason=No connection to 76561198411516596 |
| [ec7859700b1bbdfb1a268f54f5b1cc10](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ec7859700b1bbdfb1a268f54f5b1cc10?pid=10) | 行动执行玩家不一致 | UnityLogError | 3 | 3 | 2026-05-31 22:58:51 | CompleteExecute Player 不一致 Action : GridMisc Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : GrowForest Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [f6562198ec301f7ef11a40fcee19912c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f6562198ec301f7ef11a40fcee19912c?pid=10) | 相似 Action 重复诊断 | UnityLogError | 3 | 3 | 2026-05-31 22:27:09 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : GermanyKanako Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [fa9299c355341d1c7ce0e9ac05dbba4e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fa9299c355341d1c7ce0e9ac05dbba4e?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 3 | 3 | 2026-06-01 15:25:28 | PlayerBugReport upload failed: STS request failed: HTTP/1.1 403 Forbidden |
| [ff8ef52bd1ad040638de0c7c80fc3e63](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ff8ef52bd1ad040638de0c7c80fc3e63?pid=10) | 结算卡住兜底诊断 | UnityLogError | 3 | 2 | 2026-06-01 11:33:32 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=197 Turn=10 NetMode=Multi PlayerCount=4 Player Id=197 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=10 CityCount=5 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [07b07a628e50cf73ec93bef13f1bb9ca](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/07b07a628e50cf73ec93bef13f1bb9ca?pid=10) | 不可执行行动圈诊断 | UnityLogError | 2 | 1 | 2026-06-01 12:29:58 | CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None |
| [0dd881e98cdf5b0fcabf083c6a9129fa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0dd881e98cdf5b0fcabf083c6a9129fa?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-05-31 21:51:25 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Cloak Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [0e3f2affb88f68f82cb4b2d637bc5f76](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0e3f2affb88f68f82cb4b2d637bc5f76?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-05-31 20:05:18 | got.grb[12].gqz[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[12].gqz[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[19].gqz[1].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.g… |
| [128b8663fa3b97602250c9e4ff548eb9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/128b8663fa3b97602250c9e4ff548eb9?pid=10) | Origin Player 为空诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:40:02 | Origin Player is null target.id:448 |
| [1649a68cb1e3857f1706da152b013f82](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1649a68cb1e3857f1706da152b013f82?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-05-31 19:51:34 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=198 Turn=21 NetMode=Multi PlayerCount=2 Player Id=197 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=21 CityCount=8 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [18691faf23fa35f39e1cf5d765516a5a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/18691faf23fa35f39e1cf5d765516a5a?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:01:49 | dyo: 房主广播失败 |
| [1e6f83a8e64cb3ab72783afa45a3fbfa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1e6f83a8e64cb3ab72783afa45a3fbfa?pid=10) | 相似 Action 重复诊断 | UnityLogError | 2 | 2 | 2026-06-01 11:29:42 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : IndianSatori Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [26974a174fbbf693b3801b846faf676e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/26974a174fbbf693b3801b846faf676e?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:09:03 | ActionExecute broadcast failed, abort owner execute: Action : UnitMove Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [275ba4a0237adcbb855bd40120a774f6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/275ba4a0237adcbb855bd40120a774f6?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-05-31 22:10:39 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=197 Turn=10 NetMode=Multi PlayerCount=3 Player Id=197 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=10 CityCount=4 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [301527a2e5539aad52fbe1ef1594c510](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/301527a2e5539aad52fbe1ef1594c510?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-06-01 03:54:50 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=260 Turn=1 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=2 CityCount=1 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
| [341bbed051698b373151b84bde7e144f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/341bbed051698b373151b84bde7e144f?pid=10) | 本机音频/显卡能力诊断 | UnityLogError | 2 | 2 | 2026-06-01 10:03:59 | RenderTexture.Create failed: format unsupported for random writes - R32 SFloat (49). |
| [39a02530a775089d9476367034c1c47b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/39a02530a775089d9476367034c1c47b?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 17:18:57 | P2P broadcast preflight failed: target=76561199122544917, reason=No connection to 76561199122544917 |
| [3b57b3da955504db4dd9cbfcab8bdadb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3b57b3da955504db4dd9cbfcab8bdadb?pid=10) | 相似 Action 重复诊断 | UnityLogError | 2 | 2 | 2026-05-31 20:01:10 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : IndianRin Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :7 |
| [4015cdb0ea9c1a264320ad95dc973cf5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4015cdb0ea9c1a264320ad95dc973cf5?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-05-31 21:32:53 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[315].gnp: 1 != 0 gor.gph[0].gqb.Count: 6 != 7 gor.gph[3].gpu.gqm[13].gqp: 75 != 45 gor.gph[3].gpu.gqm[13].gqq:… |
| [4260d3c082e41c980f03155e70fa1d91](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4260d3c082e41c980f03155e70fa1d91?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 11:32:11 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: Invalid ticket"} |
| [47b016eae3da01ae980e371f78709afc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/47b016eae3da01ae980e371f78709afc?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-05-31 21:45:40 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=197 Turn=19 NetMode=Multi PlayerCount=2 Player Id=197 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=19 CityCount=10 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [4b180d01151e1c9195b4862029f834b8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4b180d01151e1c9195b4862029f834b8?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:02:52 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[1].gqb.Count: 6 != 5 gor.gph[4].gqb.Count: 9 != 8 got.grb[0].fwi: 23 != 30 got.grb[0].kfk.Count: 0 != 1 got.grb[61].fwi: 5 != 15 gou.gpd.Count: 1682 != 1681 |
| [591b52ea395adbb4576ddc7acd55bcc5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/591b52ea395adbb4576ddc7acd55bcc5?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 00:33:47 | ActionExecute broadcast failed, abort owner execute: Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [74f6e8f74a69baf9f5d50ca3ac233a3c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/74f6e8f74a69baf9f5d50ca3ac233a3c?pid=10) | 不可执行行动圈诊断 | UnityLogError | 2 | 1 | 2026-05-31 18:15:57 | CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None |
| [77f4d3c3221f15b63042010a7aa6ab76](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/77f4d3c3221f15b63042010a7aa6ab76?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 2 | 2 | 2026-05-31 21:37:34 | 地图数据反序列化失败,可能是版本不兼容: eab property count is 19 but binary's header maked as 21, can't deserialize about versioning. |
| [7a6ba3b9578ca2f7a60f998a17075b83](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7a6ba3b9578ca2f7a60f998a17075b83?pid=10) | 不可执行行动圈诊断 | UnityLogError | 2 | 1 | 2026-06-01 15:33:57 | CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None |
| [7d6e3cbc21bb2d7af76cddb01a16308a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7d6e3cbc21bb2d7af76cddb01a16308a?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 19:18:23 | STS request failed: Unable to read data, Response: |
| [7e65b1e31f461e5001f2b4856f6af3e9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7e65b1e31f461e5001f2b4856f6af3e9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:01:19 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) gor.gph[0].gpu.gqm[1].gqp: 5 != 0 gor.gph[0].gpu.gqm[1].gqr.Count: 5 != 4 gor.gph[0].gpu.gqm[1].gqr[3]: Brave != Intrusive gor.gph[1].gpu.gqm[0].gqp: 80 != 65 gor.gph[1].gpu.gqm[0].gqr.Count: 6 != 7 gor.gph[1].gpu.gqm[1].gqp: 0 != 5 gor.gph[1].gpu.gqm[1]… |
| [80b4f997ba79f47c55aba106256e0a01](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/80b4f997ba79f47c55aba106256e0a01?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:25:18 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpw: 17 != 18 gor.gph[0].gqb.Count: 1 != 2 gor.gph[3].gpu.gqm[3].gqp: 95 != 65 gor.gph[3].gpu.gqm[3]… |
| [81fef68fecba171044a2e9810f9b9385](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/81fef68fecba171044a2e9810f9b9385?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 2 | 2 | 2026-06-01 00:57:06 | 反序列化后的地图数据不完整,可能是版本不兼容 |
| [898eb7ee787b0e27d1dba62529000f15](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/898eb7ee787b0e27d1dba62529000f15?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:12:44 | dwx: 发送给房主失败 |
| [8a01152efadcf8977cd49d9f39e10077](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8a01152efadcf8977cd49d9f39e10077?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 22:33:59 | ActionExecute broadcast failed, abort owner execute: Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [8a577bc0d3fd77aed91ee57f1812e8eb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8a577bc0d3fd77aed91ee57f1812e8eb?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 04:05:22 | P2P broadcast preflight failed: target=76561198106629616, reason=No connection to 76561198106629616 |
| [8e7a4d99d05f9660954fffe0d4aeb559](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8e7a4d99d05f9660954fffe0d4aeb559?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 17:19:00 | dyo: 房主广播失败 |
| [8efc8db88994a564e7449feb5ddbbc4e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8efc8db88994a564e7449feb5ddbbc4e?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-05-31 23:20:01 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Defender Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [91d688174ef23090b88f12727851de26](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/91d688174ef23090b88f12727851de26?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 2 | 1 | 2026-06-01 16:22:12 | 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning. |
| [96df174f6113028fdeb03b5587bc449a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/96df174f6113028fdeb03b5587bc449a?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-05-31 18:28:24 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=11 NetMode=Multi PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=11 CityCount=5 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [98e6497189d618e4a11a13f828f457b7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/98e6497189d618e4a11a13f828f457b7?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-05-31 19:52:28 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Swordsman Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [99958faf39cc5573311ea22bd5ee901d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/99958faf39cc5573311ea22bd5ee901d?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 2 | 2 | 2026-05-31 22:14:44 | 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning. |
| [9997ab8764c24b90b4ad8368833a3e15](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9997ab8764c24b90b4ad8368833a3e15?pid=10) | 本机音频/显卡能力诊断 | UnityLogError | 2 | 1 | 2026-06-01 10:09:26 | FMOD failed to initialize the output device.: "Error initializing output device. " (60) |
| [9cbec529dc654f82a9ee6600f87f293e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9cbec529dc654f82a9ee6600f87f293e?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:00:09 | P2P broadcast preflight failed: target=76561198413203880, reason=Target is not a lobby peer: 76561198413203880 |
| [a97d4cc7a88c3db2a7ca3938d33f9e30](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a97d4cc7a88c3db2a7ca3938d33f9e30?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 22:33:59 | dyo: 房主广播失败 |
| [b39355ed60cc3527c8d9629eee08f73a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b39355ed60cc3527c8d9629eee08f73a?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-05-31 21:05:28 | CompleteExecute Player 不一致 Action : Gain Wonder : None Resource : Animal Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [b88d2ea9c9be5d1e8eab437631ab5ccb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b88d2ea9c9be5d1e8eab437631ab5ccb?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 04:44:39 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: Invalid parameter"} |
| [ba116ae3fab318cee4612ffec23df4db](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ba116ae3fab318cee4612ffec23df4db?pid=10) | 相似 Action 重复诊断 | UnityLogError | 2 | 2 | 2026-06-01 00:59:58 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchMokou Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [bf359d3f20f7a5e2369c686076b3a4a4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bf359d3f20f7a5e2369c686076b3a4a4?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 14:42:51 | ActionExecute broadcast failed, abort owner execute: Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : HeroUpgrade CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [c2904e93992fb583a4d723d1a9e5374b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c2904e93992fb583a4d723d1a9e5374b?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 04:05:22 | eg: 房主广播失败 |
| [cbde82ae926642df2571279f73a351f8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cbde82ae926642df2571279f73a351f8?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-05-31 20:20:37 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 0 != 999 gor.gph[0].gpv: 1 != 2 gor.gph[0].gqe: True != False gor.gph[1].gpi: 1 != 2 gor.gph[1].fps: 4 != 8 gor.gph[1].gpq: 730 != 755 gor.gph[1]… |
| [ce50bec374f7aa0bb5732a3154900407](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ce50bec374f7aa0bb5732a3154900407?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 22:33:59 | P2P broadcast preflight failed: target=76561199742346446, reason=No connection to 76561199742346446 |
| [d3f806e68879c7912cdffb561bd58a25](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d3f806e68879c7912cdffb561bd58a25?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-06-01 15:01:03 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=27 NetMode=Single PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=27 CityCount=14 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSu… |
| [dcf3b81d738484ecdc63ef3034d4f17e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dcf3b81d738484ecdc63ef3034d4f17e?pid=10) | OSS/创意工坊上传失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 19:29:39 | OSS PostObject 上传失败: Failed to receive data, HTTP 0, Response: |
| [de0c2d2b0f202b1fc6c1854636197b23](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/de0c2d2b0f202b1fc6c1854636197b23?pid=10) | Origin Player 为空诊断 | UnityLogError | 2 | 2 | 2026-05-31 22:08:22 | Origin Player is null target.id:360 |
| [e42cd68cb9b5e30b0e96cda8dfa66eb6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e42cd68cb9b5e30b0e96cda8dfa66eb6?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:07:34 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[768].gnl.Count: 0 != 1 gor.gph[3].gpq: 5925 != 5915 gor.gph[… |
| [e795cb4216f165a6da5f720ab34db4a2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e795cb4216f165a6da5f720ab34db4a2?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-05-31 18:28:24 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=11 NetMode=Multi PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=11 CityCount=5 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [f189dab3ce7455ff753c0f1afe95256a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f189dab3ce7455ff753c0f1afe95256a?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 2 | 2 | 2026-05-31 21:18:39 | Failed to create lobby: k_EResultNoConnection |
| [f279d1dbb18e0af57bfa650f9950d12c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f279d1dbb18e0af57bfa650f9950d12c?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-06-01 00:19:12 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=197 Turn=3 NetMode=Multi PlayerCount=2 Player Id=197 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=3 CityCount=1 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=False IsSucce… |
| [f49f5978c3cc49333b65fd45d2ea97a4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f49f5978c3cc49333b65fd45d2ea97a4?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-05-31 20:50:32 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Knights Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [f6d0183c10fd5fe87c1edc2897b0f851](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f6d0183c10fd5fe87c1edc2897b0f851?pid=10) | 不可执行行动圈诊断 | UnityLogError | 2 | 2 | 2026-05-31 23:04:49 | CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None |
| [f89e921477792e9da1a09ca11578b9cc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f89e921477792e9da1a09ca11578b9cc?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-06-01 16:46:51 | CompleteExecute Player 不一致 Action : Build Wonder : None Resource : Military Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [016d17abc7fece1335eb4f51e4243630](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/016d17abc7fece1335eb4f51e4243630?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:43:16 | P2P broadcast preflight failed: target=76561199221042595, reason=No connection to 76561199221042595 |
| [04f4e2a99ff1aefa9fccec01fa7b3ec4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/04f4e2a99ff1aefa9fccec01fa7b3ec4?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:19:49 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].fvz.fwd[0].UnitLevel: 2 != 3 gor.gph[2].jio.jid[63].jif: False != True gor.gph[2].jio.jid[63].kew: 0 != 1 gor.gph[2].kff.kfi.Count: 2 != 3 gor.gph[2].… |
| [0522c21da2c3a67bfc041b805904bcd9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0522c21da2c3a67bfc041b805904bcd9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:28:56 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) goq.gnc[171].gni: None != RemiliaMilitary goq.gnc[171].gnl.Count: 0 != 1 gor.gph[0].fps: 6 != 1 gou.gpd.Count: 618 != 619 |
| [05b8ca7b21882f07fb45cf5361b0fb13](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/05b8ca7b21882f07fb45cf5361b0fb13?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:34:54 | P2P broadcast preflight failed: target=76561198760027457, reason=Connection to 76561198760027457 is not active for queueing. State: k_ESteamNetworkingConnectionState_ClosedByPeer |
| [061b0af089e93133325a2d24113109bf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/061b0af089e93133325a2d24113109bf?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:50:26 | got.grb[1].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[1].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[1].jom[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[… |
| [06be897be49bd76cae1946bea62048d1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/06be897be49bd76cae1946bea62048d1?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:02:55 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].fps: 6 != 22 gor.gph[1].gpq: 7010 != 6810 gor.gph[1].gps.gqj.Count: 13 != 12 got.grb[8].gqz.Count: 1… |
| [0939de0a9c0b3ee8fb9c7e5b34c4fe9b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0939de0a9c0b3ee8fb9c7e5b34c4fe9b?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:50:08 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchTewi Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [0b698ca2c250da4ef400549d3df18b05](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0b698ca2c250da4ef400549d3df18b05?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 03:54:50 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=260 Turn=1 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=2 CityCount=1 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
| [0c7d97ba47f0105d2447842580efb403](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0c7d97ba47f0105d2447842580efb403?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:47:23 | ActionExecute broadcast failed, abort owner execute: Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Catapult Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [0ded493381f310e081d26a0a3ed5b378](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0ded493381f310e081d26a0a3ed5b378?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:15:50 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[178].gni: None != Fruit gor.gph[2].fps: 0 != 2 gor.gph[2].gpq: 2805… |
| [0ee1eef658f43014b78f033ccb9120b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0ee1eef658f43014b78f033ccb9120b?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:14:37 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpw: 17 != 18 gor.gph[0].gqb.Count: 2 != 3 gor.gph[1].gpu.gqm[2].gqp: 80 != 50 gor.gph[1].gpu.gqm[2]… |
| [1172e994fde296c4ff601ecbabbd9f7d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1172e994fde296c4ff601ecbabbd9f7d?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:12:41 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpq: 11695 != 11710 gor.gph[0].gpr.gqi.Count: 232 != 235 gor.gph[0].gpu.gqm[1].gqp: 35 != 40 gor.gph[1].gpu.gqm[6].gqp: 50 != 35 gor.gph[1].gpu.gqm[6]… |
| [133203cb0c8ea4b2412ddb5f665db6f7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/133203cb0c8ea4b2412ddb5f665db6f7?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:40:02 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].gpw: 16 != 15 gor.gph[2].gqb.Count: 12 != 13 gor.gph[2].jio.jid[16].jig.Count: 1 != 0 gor.gph[2].jio… |
| [148beb4c6c5a0b76f08e47bb281e09c1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/148beb4c6c5a0b76f08e47bb281e09c1?pid=10) | 成就文件损坏诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:56:59 | [Achievement] 读取文件失败: C:/Users/Administrator/AppData/LocalLow/Remilia Command/TOHOTOPIA v0_7_2b/../Config/achievement.json \| 错误: JSON parse error: The document is empty. |
| [155ebda73300699ffeaa5623e39519df](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/155ebda73300699ffeaa5623e39519df?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:13:28 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[82].gnl.Count: 1 … |
| [160b9ff5e48b27f333ad39d3027c0fa3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/160b9ff5e48b27f333ad39d3027c0fa3?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:24:19 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[135].gni: Port != None gor.gph[0].gpu.gqm[1].gqs: 33 != 35 gor.gph[0].gqb.Count: 1 != 2 gor.gph[1].fps: 296 != 303 go… |
| [17268e7bd8d16d3390fa94049da5f67f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/17268e7bd8d16d3390fa94049da5f67f?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 08:58:36 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=29 NetMode=Single PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=29 CityCount=6 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [18a9d9215e5da2e5ca3115400082f3fe](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/18a9d9215e5da2e5ca3115400082f3fe?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:40:04 | got.grb[107].gqz[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[107].gqz[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[107].gqz[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. go… |
| [1b2d1dcbdd092da904be153a6aa475d7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1b2d1dcbdd092da904be153a6aa475d7?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:27:23 | ActionExecute broadcast failed, abort owner execute: Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Cloak Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [1bdca9a91bca524044a004b6f00e3ae7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1bdca9a91bca524044a004b6f00e3ae7?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:01:01 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[344].his: 0 != 1 goq.gnc[365].gni: None != Crop goq.gnc[366].his: 1 != 0 gor.gph[0].gpi: 22 != 23 gor.gph[0].fps: 9 != 50 gor.gph[0].gpu.gqm[6].gqp: 0 != 20 gor… |
| [1d83d7f54f472ef30fc0ad21eadedc69](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1d83d7f54f472ef30fc0ad21eadedc69?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:58:59 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].gqb.Count: 5 != 4 gor.gph[5].gqb.Count: 3 != 2 got.grb[5].fwi: 21 != 23 got.grb[5].kfk.Count: 0 != 1 got.grb[5].gqz.Count: 10 != 9 got.grb[5].gqz[0].g… |
| [1f91d631593e6a9e4014084248aa8356](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1f91d631593e6a9e4014084248aa8356?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:53:33 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[73].gnp: 0 != 1 goq.gnc[192].gnp: 0 != 1 gor.gph[2].gpq: 120… |
| [21a4dcbb33ee0f7170ca8857b78dd056](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/21a4dcbb33ee0f7170ca8857b78dd056?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:31:44 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqp: 25 != 0 gor.gph[0].gpu.gqm[0].gqq: Suspicion != Terrible gor.gph[0].gpu.gqm[0].gqr[2… |
| [247c22b2000f35ac38a00a9cb98860b1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/247c22b2000f35ac38a00a9cb98860b1?pid=10) | 地图/同步状态不一致诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:05:14 | Map不一致前后Action Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoMining PlayerAction : None AIParam : AllClear Tech : KanakoMining CultureCardType : None 后Action : Build Wonder : None Resourc… |
| [25e0ca8e9648c1ae4be5110685e3070e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/25e0ca8e9648c1ae4be5110685e3070e?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 12:11:27 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=28 NetMode=Multi PlayerCount=3 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=28 CityCount=8 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [2a5b0b999c18384ba3abbb0646779c6e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2a5b0b999c18384ba3abbb0646779c6e?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:42:18 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[188].gng: Road != None goq.gnc[209].gnl.Count: 1 != 0 gor.gp… |
| [2c0964acbf8126407a75103b8a63b28f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2c0964acbf8126407a75103b8a63b28f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:40:44 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[80].gno: 4 != 5 goq.gnc[95].gni: None != LumberHut gor.gph[0].fps: 1 != 2 gor.gph[0].gpq: 2565 != 2575 gor.gph[0].jio.jid[61].jif: False != True gor.gph[0].jio.… |
| [2c9791b45c52304647a77deb62c8f785](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2c9791b45c52304647a77deb62c8f785?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:00:28 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=29 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=29 CityCount=18 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [309be7083700006fc351b87ce2bc8b3c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/309be7083700006fc351b87ce2bc8b3c?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 18:08:32 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[1].gqp: 55 != 45 gor.gph[1].gpu.gqm[1].gqp: 60 != 70 gor.gph[1].gpu.gqm[1].gqq: Indifferent != Appreciate gor.gph[2].gpu.gqm[0].gqp: 85 != 75 … |
| [30bb80854cbcc5dfb0da68d03c8fc5d4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/30bb80854cbcc5dfb0da68d03c8fc5d4?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:42:03 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=6 NetMode=Multi PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=3 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
| [30d8d9e825e271b07bbd39b0a711b4ba](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/30d8d9e825e271b07bbd39b0a711b4ba?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 13:55:07 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : GermanySuwako Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [3321df0661c5afc3e27a8f73ba683373](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3321df0661c5afc3e27a8f73ba683373?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:47:25 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[153].gng: Road != None goq.gnc[153].gni: Port != None goq.gnc[153].… |
| [33a77b469a817fc4591ba230b5b72d9d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/33a77b469a817fc4591ba230b5b72d9d?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 02:13:53 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[467].gnl.Count: 0 != 1 goq.gnc[497].gnl.Count: 0 != 1 gor.gp… |
| [33ca113891a0f74cdf48b81bba389cf8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/33ca113891a0f74cdf48b81bba389cf8?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:48:08 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[255].gnl.Count: 0 != 1 gor.gph[0].gpw: 60 != 61 gor.gph[0].g… |
| [33cbe0efe94c1ec50e0b230d344d84e9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/33cbe0efe94c1ec50e0b230d344d84e9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 16:51:23 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[0].gpq: 4055 != 4090 gos.gmm[47].gmq: 3 != 4 gos.gmm[47].gmr: 3 != 0 gos.gmm[47].gmx: False != True gos.gmm[47].gmy: False != True gos.gmm[47].gna: 1 != 0 got.grb[13].jom[0].jpz[0].Item: reflection error… |
| [33d6d6fadbafaa020a187376897a6e8e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/33d6d6fadbafaa020a187376897a6e8e?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:41:31 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 8 != 48 gor.gph[0].gpq: 2080 != 2090 gor.gph[0].gpu.gqm[0].gqp: 100 != 70 gor.gph[0].gpu.gqm[0]… |
| [3469bb0b56b4684c828dfc05b9104d5f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3469bb0b56b4684c828dfc05b9104d5f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 07:00:57 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpv: 0 != 1 gor.gph[0].gqe: True != False gor.gph[1].gpi: 26 != 27 gor.gph[1].fps: 11 != 28 gor.gph[… |
| [3591c7afdbfaed6aabed46f983db737d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3591c7afdbfaed6aabed46f983db737d?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:39:31 | 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations. |
| [35aacf599c9f1d0d11aed096157d8733](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/35aacf599c9f1d0d11aed096157d8733?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 03:54:49 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=260 Turn=1 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=2 CityCount=1 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
| [36794a26db7f1b0c0bf1adda05856f75](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/36794a26db7f1b0c0bf1adda05856f75?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:05:38 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[1].gpv: 0 != 1 gor.gph[1].gqe: True != False gor.gph[2].gpi: 0 != 1 gor.gph[2].gqe: False != True gou.hjb: 326 != 327 gou.hjc.Count: 2 != 3 gou.gpd.Count: 7 != 9 |
| [387ef3521eee57a4c59fb5ace742c103](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/387ef3521eee57a4c59fb5ace742c103?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:52:52 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].gpw: 12 != 10 gor.gph[2].gqb.Count: 5 != 3 gor.gph[2].jio.jid[16].jig.Count: 2 != 1 gor.gph[2].jio.j… |
| [38f7b281d9b3df290953e938af212764](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/38f7b281d9b3df290953e938af212764?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 15:38:02 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[0].fps: 11 != 16 gor.gph[0].gpq: 4865 != 4955 gos.gmm[11].gmo.gnb.Count: 7 != 10 gos.gmm[11].gmq: 4 != 5 gos.gmm[11].gmr: 5 != 1 gos.gmm[11].gna: 1 != 0 gou.gpd.Count: 1170 != 1172 |
| [390e4bd596ff34042dce3b10c647119f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/390e4bd596ff34042dce3b10c647119f?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 08:37:31 | 存在相似action ,记录点为:771 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KaguyaSpiritual PlayerAction : None AIParam : AllClear Tech : KaguyaSpiritual CultureCardType : None 重复次数 :6 |
| [3aac875f572ab3f7f5d68103bf63cd69](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3aac875f572ab3f7f5d68103bf63cd69?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:58:23 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 15 != 9 gor.gph[0].gpq: 4005 != 4035 gor.gph[0].gpu.gqm[5].gqp: 35 != 50 gor.gph[0].gpu.gqm[5].… |
| [3ac0f0dcdf7361938857531e6e8b422b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3ac0f0dcdf7361938857531e6e8b422b?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:08:23 | Origin Player is null target.id:448 |
| [3ac81a035de261cb6c27ee6b739d3100](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3ac81a035de261cb6c27ee6b739d3100?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:09:03 | 存在相似action ,记录点为:518 ,Action为:Action : UnitMove Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [3e86b2c43464e49c936aea065c190753](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3e86b2c43464e49c936aea065c190753?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 04:37:57 | P2P message send failed: target=76561199028938909, reason=Connection to 76561199028938909 is not active for queueing. State: k_ESteamNetworkingConnectionState_ClosedByPeer, bytes: 170 |
| [3f95bbbabf48ae552577a483bdb586b3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3f95bbbabf48ae552577a483bdb586b3?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:41:45 | P2P connection error: Failed to connect to 76561199752137914 |
| [3f97e5cf569e433a4030cc3348f3ba2b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3f97e5cf569e433a4030cc3348f3ba2b?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:33:27 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[91].gni: Fruit != None goq.gnc[92].gni: Fruit != None gor.gph[0].fps: 0 != 6 gor.gph[0].gpq: 805 != 815 gos.gmm[0].gmr: 0 != 2 gou.gpd.Count: 23 != 25 |
| [40f4f8b47ae97336457fb825d80b0b60](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/40f4f8b47ae97336457fb825d80b0b60?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:35:12 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpq: 10015 != 10035 gor.gph[0].gpr.gqi.Count: 281 != 285 got.grb[80].kfk.Count: 1 != 0 got.grb[80].gqz.Count: 10 != 9 gou.gpd.Count: 4200 != 4201 |
| [40f8ed127971c136927bc4b0a6a32335](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/40f8ed127971c136927bc4b0a6a32335?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:21:37 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqp: 115 != 110 gor.gph[1].gpq: 7605 != 7600 gor.gph[1].gpu.gqm[0].gqp: 85 != 80 gor.gph[… |
| [412f23957239a07fc122a49709411767](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/412f23957239a07fc122a49709411767?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:54:26 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gpq: 8270 != 8330 gor.gph[1].gpr.gqi.Count: 160 != 172 gou.gpd.Count: 1234 != 1235 |
| [41f135de53993f1036c74111e35bc467](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/41f135de53993f1036c74111e35bc467?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:46:51 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[31].gnh: Trees != None goq.gnc[31].gni: Animal != Crop gor.gph[0].fps: 7 != 12 gos.gmm[17].gmy: False != True gos.gmm[17].gna: 1 != 0 gou.gpd.Count: 442 != 444 |
| [43893b3963f34772559fb784d4e089b9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/43893b3963f34772559fb784d4e089b9?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:01:46 | P2P broadcast preflight failed: target=76561199748189579, reason=No connection to 76561199748189579 |
| [4441aa82f781eb75e1b7b1d1de03c531](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4441aa82f781eb75e1b7b1d1de03c531?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:31:18 | CollectData upload failed: STS request failed: Cannot connect to destination host |
| [44707fbb03c12a8f2483394338f228e2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/44707fbb03c12a8f2483394338f228e2?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 10:13:23 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=258 Turn=19 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=19 CityCount=5 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [47a33df8489e2b1e87e60d2072fda041](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/47a33df8489e2b1e87e60d2072fda041?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:40:48 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[130].gni: Crop != Farm goq.gnc[130].gnk: None != Crop goq.gn… |
| [484571a731d326ef4e2303eae67aa436](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/484571a731d326ef4e2303eae67aa436?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:22:02 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) gor.gph[1].gpq: 7605 != 7600 |
| [49649298712b620553e90e95d24855e4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/49649298712b620553e90e95d24855e4?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:32:50 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[37].his: 0 != 1 gor.gph[1].fps: 12 != 15 gor.gph[1].gpq: 582… |
| [497586a5924703a1acda3b226da6ccef](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/497586a5924703a1acda3b226da6ccef?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:53:45 | 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations. |
| [4a9470fb687cf98801b31ba1ae439d19](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4a9470fb687cf98801b31ba1ae439d19?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:56:31 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[0].gpq: 14745 != 14775 gos.gmm[40].gmq: 4 != 5 gos.gmm[40].gmr: 5 != 1 gos.gmm[40].gmx: False != True got.grb[4].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the e… |
| [4c491708c9e84360b53bc26851583c54](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4c491708c9e84360b53bc26851583c54?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:06:40 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[90].gnl.Count: 0 … |
| [4e550d34536654d25bba4199bcbcee26](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4e550d34536654d25bba4199bcbcee26?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:08:27 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqr.Count: 5 != 4 gor.gph[0].gpu.gqm[0].gqr[3]… |
| [4f5545a1638cac79f5067beb3876ae4c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4f5545a1638cac79f5067beb3876ae4c?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:53:55 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchReisen Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [524180fcd1e9fe1693c6dbf5ec93599b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/524180fcd1e9fe1693c6dbf5ec93599b?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 15:52:59 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[90].gnl.Count: 1 != 0 goq.gnc[91].gnl.Count: 1 != 0 gor.gph[… |
| [5254e528be851d7129a2661d83ce739a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5254e528be851d7129a2661d83ce739a?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:58:12 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=14 NetMode=Multi PlayerCount=8 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=14 CityCount=6 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [5368e95d43cc4980331187b4a2e4aafa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5368e95d43cc4980331187b4a2e4aafa?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:04:47 | ActionExecute broadcast failed, abort owner execute: Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : Capture CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [53ec9fdb3aac94e9452fb088132ac58a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/53ec9fdb3aac94e9452fb088132ac58a?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 08:43:01 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[0].fps: 4 != 14 gor.gph[0].gpq: 875 != 1075 gor.gph[0].gps.gqj.Count: 3 != 4 got.grb[0].gqz.Count: 5 != 6 got.grb[5].gqz.Count: 9 != 10 got.grb[10].gqz.Count: 5 != 6 got.grb[12].gqz.Count: 5 != 6 gou.gpd… |
| [552000ded85a1e553b97b7003cdcbd08](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/552000ded85a1e553b97b7003cdcbd08?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:47:23 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[549].gni: None != LumberHut gor.gph[1].fps: 59 != 56 gor.gph… |
| [57500e9e3290b3066f6ffc925d2d7238](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/57500e9e3290b3066f6ffc925d2d7238?pid=10) | 受击生命周期格子为空诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:21:42 | BeforeUnitDamaged Error selfGrid : bsr, targetGrid : |
| [590b55bf3c0058e1e18c858f37c0d74f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/590b55bf3c0058e1e18c858f37c0d74f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 03:43:50 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpq: 12785 != 12790 gor.gph[0].gpr.gqi.Count: 247 != 248 gor.gph[0].gpw: 26 != 27 gor.gph[0].gqb.Cou… |
| [5a510674d8b9372c2ce9b79c4ed373f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5a510674d8b9372c2ce9b79c4ed373f4?pid=10) | 地图/同步状态不一致诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:58:31 | Map不一致前后Action Action : GridMisc Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : BurnForest Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None 后Action : Build Wonder : None Resource : Farm Fe… |
| [5a75aefd3c01406b791e771674bab4f2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5a75aefd3c01406b791e771674bab4f2?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:08:56 | ActionExecute broadcast failed, abort owner execute: Action : Build Wonder : None Resource : Academy Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [5afaa9d7b75bd7f178e7f5ea74e8bf57](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5afaa9d7b75bd7f178e7f5ea74e8bf57?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:30:04 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[29].gnh: None != Trees goq.gnc[29].gni: Farm != None goq.gnc[29].gnk: Crop != None goq.gnc[47].gno: 3 != 2 goq.gnc[48… |
| [5b03a49644d9425d6f71fc19d173ed1d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5b03a49644d9425d6f71fc19d173ed1d?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:54:18 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[91].gnl.Count: 1 != 0 gor.gph[1].gpu.gqm[6].gqp: 70 != 40 gor.gph[1].gpu.gqm[6].gqq: Appreciate != Indifferent… |
| [5c27816243a136acd3f673d64e084fdf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5c27816243a136acd3f673d64e084fdf?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:17:30 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[2].gqp: 85 != 90 gor.gph[0].gpu.gqm[2].gqq: Appreciate != Trust gor.gph[0].gpu.gqm[2].gqr.Co… |
| [5ebc5ec75b59db1bdb8b17a17865bbff](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5ebc5ec75b59db1bdb8b17a17865bbff?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:12:44 | P2P message send failed: target=76561199726965127, reason=Not in lobby |
| [5f02d528749fb04bdeaa843cd7fefa26](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5f02d528749fb04bdeaa843cd7fefa26?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-01 16:41:21 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : MoriyaRider Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [5f73eb3d2926c801805c679e6135771f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5f73eb3d2926c801805c679e6135771f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:19:51 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqp: 115 != 110 gor.gph[1].gpq: 7610 != 7600 gor.gph[1].gpr.gqi.Count: 142 != 141 gor.gph… |
| [60d6d3424a6fe5f4626da578bfa70cdd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/60d6d3424a6fe5f4626da578bfa70cdd?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 04:39:44 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[67].gnl.Count: 0 != 1 gor.gph[0].gpw: 42 != 43 gor.gph[0].gq… |
| [68384fe7075c7a1677a7378f21a896e8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/68384fe7075c7a1677a7378f21a896e8?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:55:56 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpq: 7025 != 6975 gor.gph[0].gpu.gqm[6].gqr.Count: 5 != 4 gor.gph[0].gpu.gqm[6].gqr[3]: Threatening … |
| [6869b693fecaa1fa8603c963e6f85920](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6869b693fecaa1fa8603c963e6f85920?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:15:51 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqr.Count: 4 != 5 gor.gph[0].gpu.gqm[0].gqr[0]: Violent != Foolish gor.gph[0].gpu.gqm[0].… |
| [6a5cbbe5d658d79df530ddf2e2ab60dc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6a5cbbe5d658d79df530ddf2e2ab60dc?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 15:01:50 | ActionExecute broadcast failed, abort owner execute: Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : Recover CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [6abef9a204a5dc917c4dca9eec664c74](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6abef9a204a5dc917c4dca9eec664c74?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-01 03:45:54 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Rider Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [6d0c1221f60814a5652c709cbfd082bb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6d0c1221f60814a5652c709cbfd082bb?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:31:18 | STS request failed: Cannot connect to destination host, Response: |
| [6d197d1785c3fae12b40544d27c65013](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6d197d1785c3fae12b40544d27c65013?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 16:57:54 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[2].gni: None != LumberHut gor.gph[1].fps: 1 != 8 gor.gph[1].gpq: 875 != 920 gor.gph[1].gpt.gqh.Count: 1 != 2 gos.gmm[1].gmq: 2 != 3 gos.gmm[1].gmr: 1 != 0 gos.g… |
| [6d59647e88ce8fbb0e69d8a9cd344d18](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6d59647e88ce8fbb0e69d8a9cd344d18?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:00:29 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=29 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=29 CityCount=18 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [6e262e81fae5a110dfd70bf8a5068023](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6e262e81fae5a110dfd70bf8a5068023?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:08:59 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[3].gqs: 25 != 26 gor.gph[0].gqb.Count: 7 != 9 gor.gph[4].fps: 74 != 43 gor.gph[4].gpq: 13445… |
| [6e46244577f2b6393566240823c94d7f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6e46244577f2b6393566240823c94d7f?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-01 11:32:20 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Minder Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [6f9b410be50beed8750d91d381c66989](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6f9b410be50beed8750d91d381c66989?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:52:08 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[21].gni: MetalStation != Metal goq.gnc[21].his: 1 != 2 goq.g… |
| [70f85b7471e3757f227da5db321ceb35](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/70f85b7471e3757f227da5db321ceb35?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:03:26 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[49].gng: Road != None goq.gnc[65].gng: Road != None gor.gph[… |
| [70fc77d28bc934a749278847bc5ed03d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/70fc77d28bc934a749278847bc5ed03d?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:48:54 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[62].his: 3 != 4 goq.gnc[66].gni: None != Crop goq.gnc[96].his: 1 != 0 goq.gnc[122].his: 8 != 9 goq.gnc[156].his: 3 !=… |
| [71b073e6d796a8685e2030b3c8117080](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/71b073e6d796a8685e2030b3c8117080?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-05-31 21:30:26 | CompleteExecute Player 不一致 Action : Build Wonder : None Resource : Windmill Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [7260fba5f901650a656890f56f982f1f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7260fba5f901650a656890f56f982f1f?pid=10) | 成就文件损坏诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:58:43 | [Achievement] 备份文件也已损坏,将重置数据 |
| [727fde4caf93c65cc2f1b61f11c8b0d5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/727fde4caf93c65cc2f1b61f11c8b0d5?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:08:27 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].fvz.fwd[1].UnitLevel: 3 != 2 gor.gph[1].gpv: 0 != 1 gor.gph[1].gqb.Count: 1 != 0 gor.gph[3].gpu.gqm[… |
| [75ed31dade3c8e61eadec504701811a4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/75ed31dade3c8e61eadec504701811a4?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:31:41 | ActionExecute broadcast failed, abort owner execute: Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Catapult Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [771715cd5f609eaed26f8a73ec860c13](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/771715cd5f609eaed26f8a73ec860c13?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:31:19 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[47].gni: None != Fruit gor.gph[1].fps: 4 != 6 gor.gph[1].gpq… |
| [7844bb44b34978de030e6528ace51893](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7844bb44b34978de030e6528ace51893?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:19:41 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[2].fvz.fwd[0].UnitLevel: 3 != 2 gor.gph[2].jio.jid[63].jif: True != False gor.gph[2].jio.jid[63].kew: 1 != 0 gor.gph[2].kff.kfi.Count: 3 != 2 gor.gph[2].kff.kfj.Count: 3 != 2 got.grb[25].hen.UnitLevel: 3… |
| [7c52d5e6f946eb48c2c37032b3a5c835](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7c52d5e6f946eb48c2c37032b3a5c835?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:11:15 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[107].gnl.Count: 1 != 0 goq.gnc[124].gnl.Count: 1 != 0 gor.gp… |
| [7e217c357c706e7335557d0eb996620c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7e217c357c706e7335557d0eb996620c?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:47:47 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : IndianYuugi Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [7e28a4888202b07f1bf954824010b358](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7e28a4888202b07f1bf954824010b358?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:57:36 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gqb.Count: 15 != 14 gor.gph[3].gqb.Count: 21 != 20 got.grb[1].fwi: 18 != 22 got.grb[1].kfk.Count: 0 != 1 got.grb[1].gqz[0].gtg: True != False got.grb[… |
| [7e99f6a3705defbb271039919e29ab5c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7e99f6a3705defbb271039919e29ab5c?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:04:46 | P2P broadcast preflight failed: target=76561199040381920, reason=No connection to 76561199040381920 |
| [80c8b5ccf31ae808145e0dc3d5abf3c9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/80c8b5ccf31ae808145e0dc3d5abf3c9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:03:10 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 4 != 0 gor.gph[0].gpq: 715 != 805 gor.gph[0].gpr.gqi.Count: 25 != 43 got.grb[3].gqz.Count: 7 != 8 gou.gpd.Count: 22 != 23 |
| [80e20451c9d560196a8dd8bd37492ddc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/80e20451c9d560196a8dd8bd37492ddc?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:28:18 | got.grb[9].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[9].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[9].jom[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[… |
| [822c704c0b36fff7cee6d8af656b4404](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/822c704c0b36fff7cee6d8af656b4404?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 04:17:26 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[1].fps: 77 != 95 gor.gph[1].gpq: 5450 != 5220 gor.gph[1].gps.gqj.Count: 11 != 10 gos.gmm[1].gmq: 5 != 4 gos.gmm[1].gmr: 1 != 5 gos.gmm[1].gna: 2 != 1 gou.gpd.Count: 606 != 605 |
| [86b39a54372f39f6af339886eec0a23f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/86b39a54372f39f6af339886eec0a23f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 12:58:44 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[250].gng: None !=… |
| [87675298709ec1546b24e1cdc030e3c3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/87675298709ec1546b24e1cdc030e3c3?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:02:12 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[726].gni: None !=… |
| [8a2bcc6675973259a3f6909a196f9d33](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8a2bcc6675973259a3f6909a196f9d33?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 02:08:14 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].gpq: 3500 != 3595 gor.gph[2].gpz[3]: 4 != 0 gor.gph[2].gpz[5]: 4 != 0 gor.gph[2].kfg: True != False … |
| [8acaacfeb9d9be5d22b34395222229c1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8acaacfeb9d9be5d22b34395222229c1?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:19:02 | ActionExecute broadcast failed, abort owner execute: Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : Park GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [8b41cc45f9770fb6e199f5e1554ebf14](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8b41cc45f9770fb6e199f5e1554ebf14?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:12:10 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpi: 11 != 12 gor.gph[0].fps: 2 != 31 gor.gph[0].gqb.Count: 9 != 0 gor.gph[0].gqc.Count: 3 != 9 gor.… |
| [8b562fde27af1fdd141feb5f2cc7f5ab](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8b562fde27af1fdd141feb5f2cc7f5ab?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:21:39 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[137].his: 0 != 1 goq.gnc[172].his: 0 != 1 gor.gph[0].gpi: 25… |
| [8e05af86c1825bd59ed3e192e103a118](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8e05af86c1825bd59ed3e192e103a118?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 03:32:07 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpi: 17 != 18 gor.gph[0].fps: 2 != 16 gor.gph[0].gpv: 1 != 0 gor.gph[0].gpz[3]: 4 != 3 gor.gph[0].gqb.Count: 12 != 1 gor.gph[0].gqb[0]: 199 != 198 gor… |
| [8edcaded29c2de0e33c3cd4599860b13](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8edcaded29c2de0e33c3cd4599860b13?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-05-31 16:50:48 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=325 Turn=30 NetMode=Single PlayerCount=8 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=30 CityCount=21 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSu… |
| [8f2b9179c36f516c0f3b271be560a83a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8f2b9179c36f516c0f3b271be560a83a?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:42:36 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqp: 5 != 20 gor.gph[0].gpu.gqm[0].gqq: Terrible != Suspicion gor.gph[0].gpu.gqm[0].gqr.C… |
| [9180367fd7e222b4db51ab512f98f8bb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9180367fd7e222b4db51ab512f98f8bb?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:46:23 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[53].gni: Mine != Metal goq.gnc[53].gnk: Metal != None gor.gph[0].fps: 5 != 1 gor.gph[0].gpq: 840 != 790 gor.gph[0].gp… |
| [91b60e30aa5d121c9f15f30cf3c72429](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/91b60e30aa5d121c9f15f30cf3c72429?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 11:27:57 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[122].gnl.Count: 1 != 0 gor.gph[0].gpz[4]: 4 != 0 gor.gph[0].… |
| [92630604dfb3a8f1e702b76acf7d60f1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/92630604dfb3a8f1e702b76acf7d60f1?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:03:54 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[0].fps: 5 != 1 gor.gph[0].gpq: 925 != 1125 gor.gph[0].gps.gqj.Count: 4 != 5 gor.gph[0].gpt.gqh.Count: 0 != 1 got.grb[0].gqz.Count: 6 != 7 got.grb[2].gqz.Count: 6 != 7 got.grb[4].gqz.Count: 7 != 8 got.grb… |
| [92a24e5499897e3eae8043ccbb626c2b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/92a24e5499897e3eae8043ccbb626c2b?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:51:19 | 反序列化后的地图数据不完整,可能是版本不兼容 |
| [9352e25f6da7a359a57e705e1aee3768](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9352e25f6da7a359a57e705e1aee3768?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 15:06:07 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpw: 46 != 47 gor.gph[0].gqb.Count: 4 != 5 gor.gph[5].gpz[1]: 0 != 4 gor.gph[5].gqb.Count: 3 != 4 go… |
| [948dc7ad1de77672cfe63a9ba72f5c20](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/948dc7ad1de77672cfe63a9ba72f5c20?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:04:46 | dyo: 房主广播失败 |
| [9664282e12164abd141d95d663326009](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9664282e12164abd141d95d663326009?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:28:25 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gpv: 0 != 2 gor.gph[1].gqb.Count: 1 != 0 gor.gph[3].gpu.gqm[1].gqs: 17 != 15 gor.gph[3].gqb.Count: 21 != 20 got.grb[25].fwi: 21 != 26 got.grb[25].kfk.… |
| [97d13675bf184f8d58749d2662f1d856](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/97d13675bf184f8d58749d2662f1d856?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:38:57 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[3].fps: 438 != 433 gor.gph[3].gpq: 7920 != 7945 got.grb.Count: 53 != 54 gou.gpd.Count: 3075 != 3068 gou… |
| [97de8f1786a0f614913ca69313300789](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/97de8f1786a0f614913ca69313300789?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:05:50 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpq: 19465 != 19470 gor.gph[0].gpr.gqi.Count: 230 != 231 got.grb[13].fwi: 26 != 22 got.grb[14].gqz[1].huk: 9 != 6 got.grb[38].gqz[14].huk: 9 != 6 gou.… |
| [97efc3e40dd726893f1398b20f437191](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/97efc3e40dd726893f1398b20f437191?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:00:31 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=29 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=29 CityCount=18 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [989596b0e0eba2ba1d2d4df0b5eb5e3d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/989596b0e0eba2ba1d2d4df0b5eb5e3d?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-05-31 23:38:12 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Giant Giant : IndianSatori Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [98b6f9cae089213c1f527da35a333399](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/98b6f9cae089213c1f527da35a333399?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:10:38 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=197 Turn=10 NetMode=Multi PlayerCount=3 Player Id=197 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=10 CityCount=4 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [998c13cbd8e9b41b35db624536bcfd92](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/998c13cbd8e9b41b35db624536bcfd92?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:50:52 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[452].gni: ForestTemple != None goq.gnc[452].gno: 1 != 0 goq.gnc[452].gnq: 30 != 0 gor.gph[1].fps: 112 != 127 gor.gph[1].gpq: 17285 != 17175 gor.gph[1].gpu.gqm[0… |
| [9c44be3d3c9aba41177f364ffe1c4aff](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9c44be3d3c9aba41177f364ffe1c4aff?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:13:17 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[0].gqb.Count: 4 != 5 gor.gph[4].gqb.Count: 3 != 4 got.grb[0].fwi: 31 != 24 got.grb[19].fwi: 23 != 16 got.grb[26].fwi: 10 != 7 got.grb[27].fwi: 15 != 12 got.grb[54].fwi: 7 != 1 gou.gpd.Count: 2374 != 2375… |
| [9dde37c98f51712f9467f1d028f8fb2f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9dde37c98f51712f9467f1d028f8fb2f?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 10:15:13 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=258 Turn=19 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=19 CityCount=5 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [9e5b509043eedaaf40fb99cc7b4bd725](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9e5b509043eedaaf40fb99cc7b4bd725?pid=10) | 本地安全写入失败 | UnityLogError | 1 | 1 | 2026-06-01 14:48:52 | 安全写入失败: Win32 IO returned 112. Path: C:\Users\何祖琦\AppData\LocalLow\Remilia Command\Config\achievement.json.tmp |
| [a028074d459066a519ffbd4807341ebd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a028074d459066a519ffbd4807341ebd?pid=10) | Shader fallback 诊断 | UnityLogError | 1 | 1 | 2026-06-01 12:11:05 | An error occurred with the replacement pass "<Unnamed Pass 0>" from the shader "Hidden/InternalErrorShader". The built-in corresponding shader pass has been used as a fallback. |
| [a10787fadf4b9940d0011cef9f7eb895](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a10787fadf4b9940d0011cef9f7eb895?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 16:19:14 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[89].gni: None != LumberHut gor.gph[0].fps: 2 != 5 gor.gph[0].gpq: 3850 != 3890 gos.gmm[3].gmq: 3 != 4 gos.gmm[3].gmr: 2 != 0 gou.gpd.Count: 165 != 167 |
| [a17e161197a7b8c981c0291ffc6b8c29](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a17e161197a7b8c981c0291ffc6b8c29?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:05:11 | ActionExecute broadcast failed, abort owner execute: Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : KaguyaFrenchAnimalWarrior Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [a3846ce5c04f6fea8d72ea306ec504fb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a3846ce5c04f6fea8d72ea306ec504fb?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 12:11:27 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=28 NetMode=Multi PlayerCount=3 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=28 CityCount=8 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [a84aad45e8435c8f4f845cf99fdbbfe4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a84aad45e8435c8f4f845cf99fdbbfe4?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:28:36 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=22 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=22 CityCount=10 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [a859b766a9489002c2a6680ec78b548d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a859b766a9489002c2a6680ec78b548d?pid=10) | 成就文件损坏诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:56:59 | [Achievement] 备份文件也已损坏,将重置数据 |
| [ab9402d448da85c4c2169fd7a9a84496](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ab9402d448da85c4c2169fd7a9a84496?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:01:52 | ActionExecute broadcast failed, abort owner execute: Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoRoads PlayerAction : None AIParam : AllClear Tech : KanakoRoads CultureCardType : None |
| [abb5ac0d10a874d43e25ad66e3fa7dc2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/abb5ac0d10a874d43e25ad66e3fa7dc2?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 02:14:49 | ActionExecute broadcast failed, abort owner execute: Action : Build Wonder : None Resource : Academy Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [abe9522db43b004d908990d478638bab](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/abe9522db43b004d908990d478638bab?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:25:22 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpv: 0 != 1 gor.gph[0].gqe: True != False gor.gph[1].gpi: 9 != 10 gor.gph[1].fps: 7 != 22 gor.gph[1]… |
| [ac69a0f12fafc53bae16ae7e0eab89cc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ac69a0f12fafc53bae16ae7e0eab89cc?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 18:27:45 | UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gou.gpd.Count: 1554 != 1553 |
| [ad607368aed8a4ea6486258b3db0a7e2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad607368aed8a4ea6486258b3db0a7e2?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:58:11 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[10].gni: Fish != … |
| [adf52eecc1c968645770e4048ef56f7a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/adf52eecc1c968645770e4048ef56f7a?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:35:15 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gpu.gqm[0].gqp: 60 != 45 gor.gph[1].gpu.gqm[0].gqr.Count: 3 != 4 gor.gph[1].gpu.gqm[0].gqr[1]: Peaceful != Annoying gor.gph[1].gpu.gqm[0].gqr[2]: Powe… |
| [af9c9622f511402e29a6961039bedbd0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/af9c9622f511402e29a6961039bedbd0?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 07:36:00 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[668].gnl.Count: 1 != 0 gor.gph[1].gpq: 13495 != 13485 gor.gp… |
| [b28e408bc97f1e8437226600cf644f54](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b28e408bc97f1e8437226600cf644f54?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 15:34:01 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[2].gqb.Count: 11 != 13 gor.gph[3].gqb.Count: 5 != 7 got.grb[0].gqz[0].gtg: False != True got.grb[8].fwi: 31 != 21 got.grb[16].gqz.Count: 8 != 9 got.grb[16].gqz[7]: type mismatch (jjt vs brc) got.grb[22].… |
| [b3fe3f1b0d173a415d4cb97b8447c6f9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b3fe3f1b0d173a415d4cb97b8447c6f9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 23:43:00 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gqb.Count: 4 != 5 gor.gph[2].gpq: 6315 != 6265 gor.gph[2].gqb.Count: 1 != 2 got.grb[3].fwi: 21 != 19 got.grb[3].gqz[0].gtg: False != True got.grb[6].h… |
| [b6532e146be5a39e2d3acfeb428443f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b6532e146be5a39e2d3acfeb428443f4?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 03:07:47 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[0].gpq: 4955 != 5160 gor.gph[0].jio.jid[23].jif: False != True gor.gph[0].jio.jid[23].kew: 0 != 1 gos.gmm[0].gmo.gnb.Count: 9 != 18 gos.gmm[0].gmq: 5 != 6 gos.gmm[0].gmr: 5 != 0 gou.gpd.Count: 790 != 791 |
| [b7810b4f16c83ad7168561e2e2652884](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b7810b4f16c83ad7168561e2e2652884?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:39:17 | got.grb[1].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[1].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[1].jom[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[… |
| [b8de04e405c8f25ca54b8a10018181fe](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b8de04e405c8f25ca54b8a10018181fe?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 00:56:19 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[2].gqe: True != False gor.gph[3].gpi: 1 != 2 gor.gph[3].fps: 3 != 5 gor.gph[3].gqe: False != True gor.gph[3].kff.kfh: 0 != 3 gou.hjb: 903 != 904 gou.gpd.Count: 137 != 139 |
| [ba0ac23a8cfc495ce62c11b305b083ee](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ba0ac23a8cfc495ce62c11b305b083ee?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:52:36 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqp: 80 != 65 gor.gph[0].gpu.gqm[0].gqr.Count: 2 != 1 gor.gph[1].gpu.gqm[0].gqp: 50 != 65… |
| [ba9d34387d3ec03d88a53f3c3c5717c3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ba9d34387d3ec03d88a53f3c3c5717c3?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:43:46 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[2].gpv: 5 != 6 gor.gph[2].gqe: True != False gor.gph[3].gpi: 5 != 6 gor.gph[3].fps: 0 != 7 gor.gph[3].gqe: False != True gor.gph[3].kff.kfh: 12 != 15 got.grb[8].gqz[0].jpz[0].Item: reflection error - Num… |
| [bb054e7b6ffe7952ead3894de1bc5983](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bb054e7b6ffe7952ead3894de1bc5983?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:42:02 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=6 NetMode=Multi PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=3 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
| [bb329f45067b73174597dc31f16367ab](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bb329f45067b73174597dc31f16367ab?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:12:33 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[202].gni: LumberH… |
| [bc6e568bb73843cd91d14086f7e7d484](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bc6e568bb73843cd91d14086f7e7d484?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:28:44 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=22 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=22 CityCount=10 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [bc85dad1ecb800b2c83c1e13c1455a14](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bc85dad1ecb800b2c83c1e13c1455a14?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:51:54 | CollectData upload failed: STS request failed: Unable to complete SSL connection |
| [bf574409c78a2dda608a9ce861b2fbde](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bf574409c78a2dda608a9ce861b2fbde?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-05-31 17:58:29 | CompleteExecute Player 不一致 Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : Recover CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [c094504fb7c2afa2cf0e59cb3a6e96a2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c094504fb7c2afa2cf0e59cb3a6e96a2?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 13:27:33 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[146].gni: KaguyaFrenchYard != Crop goq.gnc[146].gnk: Crop != None goq.gnc[146].gno: 2 != 0 gor.gph[1].fps: 6 != 11 gou.gpd.Count: 74 != 73 |
| [c1e24ae4cc939b6dce4767fa2360de91](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c1e24ae4cc939b6dce4767fa2360de91?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 01:58:13 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=14 NetMode=Multi PlayerCount=8 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=14 CityCount=6 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [c4a31d2cf15c30fe397e520b650bdf77](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c4a31d2cf15c30fe397e520b650bdf77?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:52:32 | ActionExecute broadcast failed, abort owner execute: Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Giant Giant : FrenchKaguya Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [c4e3ca084eca598606d5992436f5ffa3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c4e3ca084eca598606d5992436f5ffa3?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:00:28 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[8].gng: None != R… |
| [c52e0a0a3f0a049927394848b2eadc58](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c52e0a0a3f0a049927394848b2eadc58?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 03:26:50 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[0].fps: 850 != 10 got.grb[9].kfk.Count: 0 != 1 got.grb[9].gqz.Count: 5 != 4 got.grb[9].gqz[0].jpz[0].x: 21 != 19 got.grb[9].gqz[0].jpz[0].y: 16 != 18 got.grb[9].gqz[0].jpz[0].Item: reflection error - Num… |
| [c53d34f02662f0f1a72669a2be822a87](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c53d34f02662f0f1a72669a2be822a87?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-06-01 07:17:06 | 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in fpx MemoryPackUnion annotations. |
| [c5534ea169a59e0243f256c9b714835c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c5534ea169a59e0243f256c9b714835c?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:09:10 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) goq.gnc[271].gni: Academy != None goq.gnc[271].gno: 1 != 0 gor.gph[2].fps: 38 != 43 gou.hjc.Count: 3 != 2 gou.gpd.Count: 3719 != 3718 |
| [c57397f12456f8148d925c95754181be](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c57397f12456f8148d925c95754181be?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:33:06 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[257].gni: None !=… |
| [c5a2b8db542cf6f8ac83815a254c63fc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c5a2b8db542cf6f8ac83815a254c63fc?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 18:46:43 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[72].gnl.Count: 0 != 1 goq.gnc[73].gnl.Count: 0 != 1 gor.gph[… |
| [c9329efbc0d8f6af32351d8bd2b28935](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c9329efbc0d8f6af32351d8bd2b28935?pid=10) | AI 计算死循环保护 | UnityLogError | 1 | 1 | 2026-06-01 11:34:43 | AI 行为次数过多,可能进入死循环,强制结束 AI 逻辑 最终记录点为:673 |
| [cb2dd553557e76f8a3633fe245b5feb2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cb2dd553557e76f8a3633fe245b5feb2?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 10:27:17 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=258 Turn=19 NetMode=Multi PlayerCount=4 Player Id=257 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=19 CityCount=5 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [cbb7892494ad8dfe741a7472b1f0073e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cbb7892494ad8dfe741a7472b1f0073e?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:32:28 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[219].gng: None != Road gor.gph[0].fps: 21 != 18 gor.gph[0].g… |
| [cc95e5a112c6104fd71571614712f3de](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cc95e5a112c6104fd71571614712f3de?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:08:45 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[3].fps: 0 != 8 gor.gph[3].gpq: 9555 != 9515 gor.gph[3].gpr.gqi.Count: 177 != 171 got.grb.Count: 90 != 8… |
| [d098e357e45e2aacba31698cbce74202](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d098e357e45e2aacba31698cbce74202?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 15:29:34 | UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) got.grb[7].kfk.Count: 1 != 0 got.grb[20].kfk.Count: 1 != 0 gou.gpd.Count: 1364 != 1366 |
| [d2fa99b9b9bf4ba1778a0520764327a2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d2fa99b9b9bf4ba1778a0520764327a2?pid=10) | 本地安全写入失败 | UnityLogError | 1 | 1 | 2026-06-01 14:48:52 | 安全写入失败: Win32 IO returned 112. Path: C:\Users\何祖琦\AppData\LocalLow\Remilia Command\Config\map_archive_continue_multi_2910542142.dat.tmp |
| [d368ef436a15c844cdb98efb99766c17](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d368ef436a15c844cdb98efb99766c17?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:46:28 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gqb.Count: 6 != 5 gor.gph[14].gqb.Count: 6 != 5 got.grb[4].jom[0].jpz[0].Item: reflection error - Nu… |
| [d55009187af1f6de1b9d6644446ac474](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d55009187af1f6de1b9d6644446ac474?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 15:26:54 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[164].gnl.Count: 1 != 0 goq.gnc[194].gnl.Count: 1 != 0 gor.gp… |
| [d6f6547982bb42851aa034848f218abb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d6f6547982bb42851aa034848f218abb?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:58:05 | got.grb[3].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[3].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[3].jom[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[… |
| [d892b5bc8df2ed112dbbb781cdabad5a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d892b5bc8df2ed112dbbb781cdabad5a?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:04:51 | UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) got.grb[7].fwi: 9 != 5 got.grb[13].gqz[3].huk: 8 != 9 gou.gpd.Count: 1976 != 1977 |
| [d9012144fe4da83c4c00db23e3e3f9aa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d9012144fe4da83c4c00db23e3e3f9aa?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 03:35:38 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[147].gnl.Count: 1 != 0 gor.gph[0].gpq: 5375 != 5415 gor.gph[… |
| [d9828d78321e5439205fc9bfcd020605](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d9828d78321e5439205fc9bfcd020605?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-05-31 20:33:51 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=197 Turn=10 NetMode=Multi PlayerCount=4 Player Id=197 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=10 CityCount=5 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [d98baaf066e3d9598927de2790435857](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d98baaf066e3d9598927de2790435857?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 15:40:07 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[2].gqs: 24 != 21 gor.gph[0].gpz[2]: 4 != 0 gor.gph[0].gqb.Count: 5 != 4 gor.gph[3].gpv: 0 !=… |
| [dd01eac00c0260d4399b3084f360c0f9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dd01eac00c0260d4399b3084f360c0f9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 04:59:06 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[188].gni: None != LumberHut gor.gph[5].fps: 9 != 6 gor.gph[5… |
| [dd30ebc21d55fd1540828f99cb6d67b0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dd30ebc21d55fd1540828f99cb6d67b0?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:07:29 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[3].fps: 0 != 8 gor.gph[3].gpq: 9555 != 9530 gor.gph[3].gpr.gqi.Count: 171 != 174 got.grb.Count: 90 != 8… |
| [de4884aea6b6c6f45823d7d69306f31a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/de4884aea6b6c6f45823d7d69306f31a?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 11:34:49 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqp: 45 != 25 gor.gph[0].gpu.gqm[0].gqq: Indifferent != Suspicion gor.gph[0].gpu.gqm[0].gqr[0]: Wise != Foolish gor.gph[0].gpu.gqm[1].gqo: … |
| [dfa9fe3c8c7e11ba940957d6901b9cb5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dfa9fe3c8c7e11ba940957d6901b9cb5?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 08:22:21 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[764].gni: None !=… |
| [e20e251f62dd0151ebc9e1888e46e9ed](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e20e251f62dd0151ebc9e1888e46e9ed?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 12:11:27 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=257 Turn=28 NetMode=Multi PlayerCount=3 Player Id=257 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=28 CityCount=8 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [e7bfea948769b236b0429cc1c1269e70](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e7bfea948769b236b0429cc1c1269e70?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 17:14:47 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gpq: 25965 != 25995 got.grb[5].hen.UnitType: Boat != KomeijiIndianCatapult got.grb[5].hes.UnitType: … |
| [e8573df7b1d9269ac60e3233c3c79741](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e8573df7b1d9269ac60e3233c3c79741?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:13:10 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[130].his: 13 != 14 goq.gnc[272].gno: 3 != 4 goq.gnc[272].his… |
| [eafb8f4041c221a3ca6e98f0d382dc8b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/eafb8f4041c221a3ca6e98f0d382dc8b?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 22:35:08 | UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) got.grb[0].fwi: 38 != 40 got.grb[0].gqz[1].huk: 1 != 7 gou.hjc.Count: 4 != 3 gou.gpd.Count: 1870 != 1868 gou.lrn: 147 != 144 |
| [ebf8bf574194b1d8f4e7f6f120ae91a0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ebf8bf574194b1d8f4e7f6f120ae91a0?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 21:49:46 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[5].fps: 297 != 182 gor.gph[5].ggg: 1 != 0 gor.gph[5].gpq: 8580 != 9905 gor.gph[5].gps.gqj.Count: 16 != … |
| [ef2c063b9dc31caa463ae478a66d5718](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ef2c063b9dc31caa463ae478a66d5718?pid=10) | 触控信息平台诊断 | UnityLogError | 1 | 1 | 2026-06-01 13:25:55 | GetPointerTouchInfo failed: 调用尚未实现。 |
| [f13c9b1c2400d6b9942b753bf770c697](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f13c9b1c2400d6b9942b753bf770c697?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:42:38 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[151].gnl.Count: 1 != 0 gor.gph[1].gpq: 5085 != 5115 gor.gph[… |
| [f4da4d83c8e749275dd8c5728ee1b984](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f4da4d83c8e749275dd8c5728ee1b984?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:34:59 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[0].gqp: 115 != 110 gor.gph[1].gpq: 7610 != 7600 gor.gph[1].gpr.gqi.Count: 142 != 141 gor.gph… |
| [f67700bae0fa501d2ec9e5e6dcc6c3cb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f67700bae0fa501d2ec9e5e6dcc6c3cb?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:35:20 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=12 NetMode=Multi PlayerCount=4 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=12 CityCount=5 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [f6cb5f4f2d9b978f680983de374fa1eb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f6cb5f4f2d9b978f680983de374fa1eb?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 14:43:46 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[2].fvz.fwd[0].UnitLevel: 2 != 1 gor.gph[2].jio.jid[62].jif: True != False gor.gph[2].jio.jid[62].kew: 1 != 0 gor.gph[2].kff.kfi.Count: 1 != 0 gor.gph[2].kff.kfj.Count: 1 != 0 got.grb[8].hen.UnitLevel: 2 … |
| [fde9cab300284c613c0371315243a146](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fde9cab300284c613c0371315243a146?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-05-31 19:03:50 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[396].gno: 4 != 3 goq.gnc[397].gni: Animal != None gor.gph[0]… |

View File

@ -0,0 +1,959 @@
{
"date": "2026-06-01",
"version": "0.7.2b",
"capture": {
"capturedAtUtc": "2026-06-01T08:49:36+00:00",
"capturedAtLocal": "2026-06-01 16:49:36",
"rawDir": "Temp\\CrashSight\\Daily_2026-06-01_0.7.2b",
"reportDir": "MD\\CrashSight_2026-06-01_0.7.2b_1day"
},
"filter": {
"version": "0.7.2b",
"date": "last_1_day",
"status": "0,2",
"exceptionCategoryList": "ERROR",
"sortField": "uploadTime",
"sortOrder": "desc",
"rows": 100
},
"totalIssues": 495,
"blockingIssues": 22,
"blockingOccurrences": 1409,
"logerrorIssues": 473,
"logerrorOccurrences": 84312,
"blockingReports": [
{
"categoryId": "tmp-underline-indexoutofrange",
"title": "TMP 下划线渲染数组越界",
"issueCount": 1,
"occurrences": 1046,
"path": "blocking/001_tmp-underline-indexoutofrange.md",
"issues": [
"637c0d4ba7ab3a62cd267fe52b58d805"
]
},
{
"categoryId": "steamworks-not-initialized",
"title": "Steamworks 未初始化",
"issueCount": 5,
"occurrences": 210,
"path": "blocking/002_steamworks-not-initialized.md",
"issues": [
"a677446e4ae77a510aba5cf0ba9de019",
"341f705a3c788ba90fbf37396a4c9470",
"93c9ce84e1edba72583b2e7607f7bf7b",
"c18ed0f5f203fc2440ebfcd5a69c917a",
"6e0dc137d04a6e570d8767e63558c030"
]
},
{
"categoryId": "steam-api64-dll-missing",
"title": "Steam API DLL 缺失",
"issueCount": 6,
"occurrences": 100,
"path": "blocking/003_steam-api64-dll-missing.md",
"issues": [
"a2953c646aa11a95f841d94c914fc7e4",
"135c9d2628a684cc2f485cf4b0ab6fff",
"71daaae143e1bfb8c693cfe811c9c8c2",
"2714c1d9c23fc1cb11241be2cf56577e",
"a2b1b0cab9eff4ce9ec89cda7b3d9fd2",
"ae58c1f5e2a647198b896974ffbed7a1"
]
},
{
"categoryId": "unit-transform-reserved-null",
"title": "单位类型转换技能空引用",
"issueCount": 3,
"occurrences": 19,
"path": "blocking/004_unit-transform-reserved-null.md",
"issues": [
"a0e61c12efdd065cb3098fa874ff7a96",
"e9f3d3b75f11f41baf8d8dd950e6026b",
"0b969e4835cea675957736a5da0ce1f"
]
},
{
"categoryId": "bottom-sl-resume-null",
"title": "底栏 SL/Resume 空引用",
"issueCount": 1,
"occurrences": 14,
"path": "blocking/005_bottom-sl-resume-null.md",
"issues": [
"4c22419620a2f97f41d4182f807a8806"
]
},
{
"categoryId": "announce-major-event-null",
"title": "重大事件公告 UI 空引用",
"issueCount": 2,
"occurrences": 13,
"path": "blocking/006_announce-major-event-null.md",
"issues": [
"0af437dc7c73331f892ca95178c964cc",
"f5e2775f98f29836622f7f514a5a059d"
]
},
{
"categoryId": "tmp-inputfield-cursor-indexoutofrange",
"title": "TMP 输入框光标数组越界",
"issueCount": 1,
"occurrences": 2,
"path": "blocking/007_tmp-inputfield-cursor-indexoutofrange.md",
"issues": [
"7506613af0c386104713b2e8c86fc93b"
]
},
{
"categoryId": "sanae-onheal-null",
"title": "早苗治疗技能空引用",
"issueCount": 1,
"occurrences": 2,
"path": "blocking/008_sanae-onheal-null.md",
"issues": [
"481281fb8ec7b99399c304b9379457a3"
]
},
{
"categoryId": "maprenderer-highlight-keynotfound",
"title": "移动攻击高亮字典 Key 缺失",
"issueCount": 1,
"occurrences": 2,
"path": "blocking/009_maprenderer-highlight-keynotfound.md",
"issues": [
"0bbff28f08b867749349762f2e47eac2"
]
},
{
"categoryId": "map-click-move-keynotfound",
"title": "点击移动字典 Key 缺失",
"issueCount": 1,
"occurrences": 1,
"path": "blocking/010_map-click-move-keynotfound.md",
"issues": [
"c468364b1b357f80622937c65e566365"
]
}
],
"categories": [
{
"id": "action-completeexecute-player-mismatch",
"title": "行动执行玩家不一致",
"class": "logerror",
"issueCount": 43,
"occurrences": 45150,
"issues": [
"10d4df507992c1a66a90693df20b21c3",
"94791c770730cb4f8e7af22d25e2920c",
"f89e921477792e9da1a09ca11578b9cc",
"c7cbea703f42ecf6f54444f481fe7465",
"5f02d528749fb04bdeaa843cd7fefa26",
"250d1a8a1acff41c635ce86249462e21",
"d7e6cc2799b68c86e60f214b087d67a2",
"40b385e6956400fe315db114f30e0fb7",
"335bf2f73aa492c78e9ac3ef0c3e03a8",
"b63bc16c733e36d73849205e87363b5f",
"c8f74fcf4f765ba38d4e1e2e4c34d41e",
"d0c686e60340f8c46826266c5ddd9f47",
"fc2d124d395f06a7f9a3d4f88141e46e",
"6e46244577f2b6393566240823c94d7f",
"3743c47c5fc7e16a9977cfae8eb753eb",
"19f04f1921c4dbcd5ec5176a8ed3683d",
"5f2294e63d9d4a8a8d15f5fdc25b5cb2",
"02ba2b432080d3ec71df44ec70ada0b8",
"610a65bf1b673e5f0c9207d48cec12a2",
"a4b9850f4fff9fc2e741d86c2bf5f8a5",
"47b901f167c15f9be3547573d7266736",
"e77811055b282a63d3098236817182e9",
"a3944262510d4d7e7b9282abbdd4dbb9",
"6abef9a204a5dc917c4dca9eec664c74",
"45073cee8c5159db63b4ce55d14e746f",
"32d4925a40f9db0fb7d2b098c38b2845",
"8f267b2f5c50f93b544af8886fe61db8",
"989596b0e0eba2ba1d2d4df0b5eb5e3d",
"8efc8db88994a564e7449feb5ddbbc4e",
"b96e43dcfa274cb7bea0d7801b3df20c",
"ec7859700b1bbdfb1a268f54f5b1cc10",
"b6268405e423097fce87050da2cc675d",
"04ac20a8329bf0c897fde777740ab79d",
"d2ba6af25832e62fe9511ca9ae332931",
"0dd881e98cdf5b0fcabf083c6a9129fa",
"71b073e6d796a8685e2030b3c8117080",
"b39355ed60cc3527c8d9629eee08f73a",
"50119431f45750d343ff2c70de7250b5",
"f49f5978c3cc49333b65fd45d2ea97a4",
"98e6497189d618e4a11a13f828f457b7",
"244818660cdea541f999cd0f5d30e7d5",
"16c8b69e74a19311c7d1f3a0f2d26c2c",
"bf574409c78a2dda608a9ce861b2fbde"
]
},
{
"id": "p2p-lobby-connection-failure",
"title": "P2P/大厅连接失败诊断",
"class": "logerror",
"issueCount": 13,
"occurrences": 9286,
"issues": [
"9b415b4bbb546c66eba3a6b67f916d35",
"01eaa6aefd9162eccc930c2450a63779",
"bc7e88e9811a3e38d26e15577210e3d7",
"886fa66ed99f8ff6955fe0e47d8e2f82",
"7b5f54e17dc2f09810eaf4a23c8fbf40",
"17ad3797303c790702e726900b44d7a1",
"24fa653e2e11d1e45438b6f0532126b0",
"9bee5c48b8f6a2c0247259901eb430dd",
"a2ef12b1ee1a74022509f9d18067a863",
"75a3ccfed59a3b1e5cdff8183b987406",
"5a79821db72b579e77ae42b77342ccc4",
"3f95bbbabf48ae552577a483bdb586b3",
"f189dab3ce7455ff753c0f1afe95256a"
]
},
{
"id": "duplicate-similar-action",
"title": "相似 Action 重复诊断",
"class": "logerror",
"issueCount": 62,
"occurrences": 6688,
"issues": [
"8107c16369fb00417c1682a0350ec64f",
"d2253454d7e4d68496b0b2943b9cec3c",
"43f14319d1b258affd890dcee07175f4",
"edcd261bfeff53e33bfe7210c87dcb57",
"b9356ab138b2b54e96f3db7887c3b8d0",
"76c4c1b1a5add246455aec813c46d59a",
"9043dd945e4b0289ae7aa38939ee3105",
"193d2d61f85358b92951ff088aecf11e",
"683af7e6fbb1a3d4bf25311b223076bb",
"c3051df0699d3a433ecbef7e85411c9e",
"e8609ad537e5603f8a4867ad7aa73e4b",
"a0e37aa641e65872faadaebad6187c91",
"4e3d34adfbf230fd950555e4bdb181c6",
"ad52d9e056bfbd17f4ccb8384e5f83d9",
"0c97df3bd169a53d42335055c5e33ce5",
"7f1d39e4d1ab06af2b277d2a5eeec9cf",
"8f35d8d1fd8078645abcd7bd1061b0c5",
"5b3c6d96b848815202763b13c522f434",
"e2d6a88d46dcb49a0d139cdc09cfcf60",
"8580a82c199b326d8623eef77b8af637",
"c01e176659cfee5baba883ae144f3620",
"185485bf7bb64f1a249a02c2db07feea",
"213b50a7c27692249febd5c26cb777c3",
"efce858079914f89014ebce11ae7671d",
"e139e615cb7de95a6f55d1391aaa7410",
"736b76f612c90176d984722fdbfdb5b7",
"6f9a7dfae381416b2527844f750fafc1",
"2155cbc9cb2baf0262737433bbc6e38f",
"e7f8cb8e59e26d51248a4ffb8f221d97",
"30d8d9e825e271b07bbd39b0a711b4ba",
"0fc9fec6c17b8d12527197dae35611d6",
"af57b9115786c79178d91943f380bf82",
"7f6a8332378f3bf99f4514490f913b17",
"274499c68f6cf973074f06dca960e279",
"f65c8eaa79c67eb3175c99e6919f3516",
"1e6f83a8e64cb3ab72783afa45a3fbfa",
"769a809e136b64386c15bc52ddecebd5",
"5b43fb939ee15af71b061baef0fdfaa1",
"3073af8438a779606ac04d433962d5cd",
"9c97ea379fd9f3b95e8f758b307e4997",
"0cb4b0db462d1610c11fe1d5444a01d",
"6e22e10659bc2d79299b3887d16d68e0",
"390e4bd596ff34042dce3b10c647119f",
"f14ac061b2149a6e99d386b3b392434d",
"40305eaa5534e7b848986ce7aea78110",
"9e8f0e125886eb7d8915c71e359f7035",
"6dfe783e1262151aaa8989ab8b12c2f4",
"f1889c30ba46c477e039cea037c6b2ac",
"2c90fb76aec9552214914833df6a3776",
"ba116ae3fab318cee4612ffec23df4db",
"4f5545a1638cac79f5067beb3876ae4c",
"0ed2ec3c3d2630eac0c3b096234361d7",
"7e217c357c706e7335557d0eb996620c",
"3ac81a035de261cb6c27ee6b739d3100",
"f6562198ec301f7ef11a40fcee19912c",
"c8a85134cbf8ea836f2f582a6f50868b",
"0939de0a9c0b3ee8fb9c7e5b34c4fe9b",
"e9a74de444c15d64d5825793b25bd466",
"3b57b3da955504db4dd9cbfcab8bdadb",
"21d61ac4356e061fdb16d2583f6e4f49",
"378434af7c2f55f4ffb8ec2a9f287b4c",
"9e12736ae3e7243e668e47a972dae5d1"
]
},
{
"id": "ai-loop-guard",
"title": "AI 计算死循环保护",
"class": "logerror",
"issueCount": 3,
"occurrences": 5791,
"issues": [
"bb81bce180d8672f500aa9f2021ec9f8",
"83c5b5b46447ac4e50101f1148f4ab70",
"c9329efbc0d8f6af32351d8bd2b28935"
]
},
{
"id": "network-send-failure",
"title": "网络发送失败诊断",
"class": "logerror",
"issueCount": 84,
"occurrences": 5512,
"issues": [
"d7a74e6e95985e97e0bbecc7de0c0f44",
"dbce2880e5ad9287fcca2bf271f97622",
"daec796293ecae6d73a5eef8f5e3707c",
"2cb3d67ddfe0d9587abd02390f5de041",
"37c3a6f1b4b5b39220ee5ed7563118bf",
"034cfe80d745e3c9774d27e82ff3a0f3",
"4de7d427f16ede45dbd3693fc3431ac3",
"cf2eb96359369cc1db5a70e5e2b219b1",
"60d84edf5f69d3592e1dc8aef452a038",
"a0830cd150cf6348c957fa17694ae9f6",
"1df80dbcaf6f1f71cbd77fff64532361",
"1d2092e8267a158d39aa1a040041020d",
"81a5e2896daabc7005cd79ae522de4bf",
"3781e3c243cadba4b1550cdf922b6d2e",
"6a5cbbe5d658d79df530ddf2e2ab60dc",
"f4563635cbea9b4a9393e863e268bae3",
"773e5d47d6aad89edb0492504359a8c9",
"016d17abc7fece1335eb4f51e4243630",
"66fdcc704a21291659dc3514e4765869",
"863e74d991e2c66915742456680b0e91",
"bf359d3f20f7a5e2369c686076b3a4a4",
"c11f14ad2fbd5625c5b53fb910cdba76",
"fc5530590dc29e8986cc0f71b89692ab",
"636ef235a81c87766432c834b6dd2317",
"6103ad250385c98e724743b68f7569f7",
"7d7fb27983acf34764f914c942b939b7",
"9bdd7ded0a12f17a10bb7a18ba6d0547",
"c6ce536d44ecf701fe2008fa1dbfbba6",
"7dbbfc91a300d4508a84d8e2d963e8e6",
"107abe1efb00c8f713af9d2750b13da9",
"bbd0f6208df6716ae37effe934a9f148",
"3e86b2c43464e49c936aea065c190753",
"8a577bc0d3fd77aed91ee57f1812e8eb",
"c2904e93992fb583a4d723d1a9e5374b",
"abb5ac0d10a874d43e25ad66e3fa7dc2",
"b077bae2896d3af9bd09e6b4f64e81ec",
"698fb570ca698169d602f9b227a34074",
"0d3c117cffe5cca3489b9158c6c5236b",
"d45285c96ca3da43b1ad35795061a550",
"75ed31dade3c8e61eadec504701811a4",
"5368e95d43cc4980331187b4a2e4aafa",
"7e99f6a3705defbb271039919e29ab5c",
"948dc7ad1de77672cfe63a9ba72f5c20",
"18881ca550f30dcd6389af3fec2d7699",
"591b52ea395adbb4576ddc7acd55bcc5",
"1b2d1dcbdd092da904be153a6aa475d7",
"c2daa8b71f370b978be659cda9e902bb",
"e0607caeab32ce4c102dd3db17f6d498",
"0b63deb3eb1398a5fc605ecfe90301a1",
"5ebc5ec75b59db1bdb8b17a17865bbff",
"898eb7ee787b0e27d1dba62529000f15",
"26974a174fbbf693b3801b846faf676e",
"ab9402d448da85c4c2169fd7a9a84496",
"18691faf23fa35f39e1cf5d765516a5a",
"43893b3963f34772559fb784d4e089b9",
"9cbec529dc654f82a9ee6600f87f293e",
"c1fac556b3209f47572e74e6d7f0ab64",
"b49644a24a466f956045d2bcbb75f449",
"1de81d5299ca7c580b2188fae37d6b85",
"c4a31d2cf15c30fe397e520b650bdf77",
"041e3921930f3c9ee6f305974ec62123",
"65b06fbb438780b70bdb76c45f529d9c",
"3abc0627ef9184ac65396d5bb4dbdf8a",
"be5e30af24e57f16bd89f3b3f6e98505",
"fdd2e54ceb6c0377abdc872171a8d6f3",
"1260b4b99e111e4903c2270ecba5b5af",
"cdf7ee24424388a30f7e343d1a6a9a25",
"9c5d041d9cddd5219719c5a57212b718",
"a97d4cc7a88c3db2a7ca3938d33f9e30",
"ce50bec374f7aa0bb5732a3154900407",
"8a01152efadcf8977cd49d9f39e10077",
"c4e8e96b45f958f54e64ca2fddb91e57",
"4ead7c53428772d3e2104f3e2d46022e",
"bb8bbd6587e3a2f44c11e91babee7a49",
"de188a594d1d08a70f2309e7773aa631",
"7ac42b537b47a06f9349bbf7266b565c",
"0c7d97ba47f0105d2447842580efb403",
"05b8ca7b21882f07fb45cf5361b0fb13",
"5a75aefd3c01406b791e771674bab4f2",
"a17e161197a7b8c981c0291ffc6b8c29",
"9f4f246d84cb408f49062e11a0d86ddd",
"8acaacfeb9d9be5d22b34395222229c1",
"8e7a4d99d05f9660954fffe0d4aeb559",
"39a02530a775089d9476367034c1c47b"
]
},
{
"id": "action-sync-version-index",
"title": "行动同步版本/索引不一致",
"class": "logerror",
"issueCount": 6,
"occurrences": 3522,
"issues": [
"7aec17b6048d7981249d7dea16ae8419",
"31cbaea700a7e8c8a613de4abe5a7578",
"2412d572023132e0496b38e90c91b0f8",
"ec2ef8c61c2766d3ae3dcc4f1fd422ae",
"d52fa3494ab9075129fbddda3b7ae271",
"96f8b995fac2c7d6ffe13ed651df71c1"
]
},
{
"id": "reconnect-forceupdate",
"title": "断线重连/ForceUpdate 诊断",
"class": "logerror",
"issueCount": 8,
"occurrences": 3150,
"issues": [
"bb3abc26831f37e1233b6d33933a662a",
"fe6744a1382118a1b8f70034f879f21f",
"4de9527a59d2c07d37e8b3ff32f3c989",
"0697babdf87a5ec4c4516d18674e7faf",
"cd265fbdf8ded17ae8f2ad9583733229",
"dfa3576d72796dc406c89b08e8bcef5a",
"721b6aebba24867dce20d3279e8c13c5",
"267ee4c6d81420011154b0f4e52f32a5"
]
},
{
"id": "multilingual-empty-id",
"title": "多语言 ID 为空",
"class": "logerror",
"issueCount": 8,
"occurrences": 1172,
"issues": [
"f5d6caefc1e5ac72cd5c21a56e3dfddb",
"691253c2a412f07945231dd650f58213",
"ea2c22182f1187fccfaa5e605b3072c0",
"e411b59aba2e1015cd27950bef1e17e4",
"a2897449c9b8859f7fdc82ff7e1099f9",
"afec6671a017afaa004d0c956b773ca4",
"46ee29218c6d89be077e23027b87707e",
"e3bc684f13b44f045ec1eb5809af0e68"
]
},
{
"id": "tmp-underline-indexoutofrange",
"title": "TMP 下划线渲染数组越界",
"class": "blocking",
"issueCount": 1,
"occurrences": 1046,
"issues": [
"637c0d4ba7ab3a62cd267fe52b58d805"
]
},
{
"id": "mapdata-diff-diagnostic",
"title": "MapData 序列化差异诊断",
"class": "logerror",
"issueCount": 140,
"occurrences": 985,
"issues": [
"a10787fadf4b9940d0011cef9f7eb895",
"bdae619bb49f23e7f92e847c957b90e6",
"524180fcd1e9fe1693c6dbf5ec93599b",
"d98baaf066e3d9598927de2790435857",
"38f7b281d9b3df290953e938af212764",
"b28e408bc97f1e8437226600cf644f54",
"d098e357e45e2aacba31698cbce74202",
"d55009187af1f6de1b9d6644446ac474",
"9352e25f6da7a359a57e705e1aee3768",
"33ca113891a0f74cdf48b81bba389cf8",
"d368ef436a15c844cdb98efb99766c17",
"1ab52dbbfc7b4e72f97d30af789461ef",
"f6cb5f4f2d9b978f680983de374fa1eb",
"ba9d34387d3ec03d88a53f3c3c5717c3",
"f13c9b1c2400d6b9942b753bf770c697",
"2c0964acbf8126407a75103b8a63b28f",
"cbb7892494ad8dfe741a7472b1f0073e",
"8b41cc45f9770fb6e199f5e1554ebf14",
"5c2a2bb937af9cd47fdb450f7285873d",
"c094504fb7c2afa2cf0e59cb3a6e96a2",
"529e434adfb601346ac0ff0ebe3b699e",
"86b39a54372f39f6af339886eec0a23f",
"de4884aea6b6c6f45823d7d69306f31a",
"91b60e30aa5d121c9f15f30cf3c72429",
"a326cea0eb211f48d5e6f742795dbba5",
"53ec9fdb3aac94e9452fb088132ac58a",
"dfa9fe3c8c7e11ba940957d6901b9cb5",
"af9c9622f511402e29a6961039bedbd0",
"3469bb0b56b4684c828dfc05b9104d5f",
"dd01eac00c0260d4399b3084f360c0f9",
"60d6d3424a6fe5f4626da578bfa70cdd",
"822c704c0b36fff7cee6d8af656b4404",
"590b55bf3c0058e1e18c858f37c0d74f",
"d9012144fe4da83c4c00db23e3e3f9aa",
"8e05af86c1825bd59ed3e192e103a118",
"c52e0a0a3f0a049927394848b2eadc58",
"b6532e146be5a39e2d3acfeb428443f4",
"d782629e1b9bb885da5a9cae6d7b924e",
"33a77b469a817fc4591ba230b5b72d9d",
"8a2bcc6675973259a3f6909a196f9d33",
"49649298712b620553e90e95d24855e4",
"21a4dcbb33ee0f7170ca8857b78dd056",
"b8de04e405c8f25ca54b8a10018181fe",
"412f23957239a07fc122a49709411767",
"abe9522db43b004d908990d478638bab",
"3bb4b661df2fe9407f944a47e337cda5",
"7e28a4888202b07f1bf954824010b358",
"b3fe3f1b0d173a415d4cb97b8447c6f9",
"133203cb0c8ea4b2412ddb5f665db6f7",
"97d13675bf184f8d58749d2662f1d856",
"771715cd5f609eaed26f8a73ec860c13",
"80b4f997ba79f47c55aba106256e0a01",
"0ee1eef658f43014b78f033ccb9120b",
"9c44be3d3c9aba41177f364ffe1c4aff",
"7c52d5e6f946eb48c2c37032b3a5c835",
"42054f95972800b3ddcc9b91043d193d",
"e42cd68cb9b5e30b0e96cda8dfa66eb6",
"4c491708c9e84360b53bc26851583c54",
"36794a26db7f1b0c0bf1adda05856f75",
"4b180d01151e1c9195b4862029f834b8",
"7e65b1e31f461e5001f2b4856f6af3e9",
"1bdca9a91bca524044a004b6f00e3ae7",
"3aac875f572ab3f7f5d68103bf63cd69",
"68384fe7075c7a1677a7378f21a896e8",
"5b03a49644d9425d6f71fc19d173ed1d",
"ba0ac23a8cfc495ce62c11b305b083ee",
"3321df0661c5afc3e27a8f73ba683373",
"8f2b9179c36f516c0f3b271be560a83a",
"2a5b0b999c18384ba3abbb0646779c6e",
"33d6d6fadbafaa020a187376897a6e8e",
"adf52eecc1c968645770e4048ef56f7a",
"eafb8f4041c221a3ca6e98f0d382dc8b",
"3f97e5cf569e433a4030cc3348f3ba2b",
"c57397f12456f8148d925c95754181be",
"0522c21da2c3a67bfc041b805904bcd9",
"04f4e2a99ff1aefa9fccec01fa7b3ec4",
"7844bb44b34978de030e6528ace51893",
"155ebda73300699ffeaa5623e39519df",
"1172e994fde296c4ff601ecbabbd9f7d",
"bb329f45067b73174597dc31f16367ab",
"727fde4caf93c65cc2f1b61f11c8b0d5",
"2c7e0b54e312a553044b1b0149cdf377",
"92630604dfb3a8f1e702b76acf7d60f1",
"06be897be49bd76cae1946bea62048d1",
"87675298709ec1546b24e1cdc030e3c3",
"c4e3ca084eca598606d5992436f5ffa3",
"061b0af089e93133325a2d24113109bf",
"ebf8bf574194b1d8f4e7f6f120ae91a0",
"41f135de53993f1036c74111e35bc467",
"18a9d9215e5da2e5ca3115400082f3fe",
"b7810b4f16c83ad7168561e2e2652884",
"4015cdb0ea9c1a264320ad95dc973cf5",
"9664282e12164abd141d95d663326009",
"b48c3e5b62c08b5f72a9df5708061904",
"4a9470fb687cf98801b31ba1ae439d19",
"998c13cbd8e9b41b35db624536bcfd92",
"552000ded85a1e553b97b7003cdcbd08",
"d18bfbc0e4a5081be9492bd8dda67301",
"47a33df8489e2b1e87e60d2072fda041",
"80e20451c9d560196a8dd8bd37492ddc",
"160b9ff5e48b27f333ad39d3027c0fa3",
"cbde82ae926642df2571279f73a351f8",
"c5534ea169a59e0243f256c9b714835c",
"0e3f2affb88f68f82cb4b2d637bc5f76",
"70f85b7471e3757f227da5db321ceb35",
"1d83d7f54f472ef30fc0ad21eadedc69",
"9180367fd7e222b4db51ab512f98f8bb",
"40f4f8b47ae97336457fb825d80b0b60",
"f4da4d83c8e749275dd8c5728ee1b984",
"8b562fde27af1fdd141feb5f2cc7f5ab",
"5c27816243a136acd3f673d64e084fdf",
"6869b693fecaa1fa8603c963e6f85920",
"e8573df7b1d9269ac60e3233c3c79741",
"1f3f7ae489793d5d42edb2283ae194ec",
"6e262e81fae5a110dfd70bf8a5068023",
"cc95e5a112c6104fd71571614712f3de",
"4e550d34536654d25bba4199bcbcee26",
"dd30ebc21d55fd1540828f99cb6d67b0",
"97de8f1786a0f614913ca69313300789",
"d892b5bc8df2ed112dbbb781cdabad5a",
"fde9cab300284c613c0371315243a146",
"80c8b5ccf31ae808145e0dc3d5abf3c9",
"c5a2b8db542cf6f8ac83815a254c63fc",
"ac69a0f12fafc53bae16ae7e0eab89cc",
"309be7083700006fc351b87ce2bc8b3c",
"ad607368aed8a4ea6486258b3db0a7e2",
"d6f6547982bb42851aa034848f218abb",
"1f91d631593e6a9e4014084248aa8356",
"387ef3521eee57a4c59fb5ace742c103",
"6f9b410be50beed8750d91d381c66989",
"6b687588ef1dd8deda7007737a391df9",
"70fc77d28bc934a749278847bc5ed03d",
"5afaa9d7b75bd7f178e7f5ea74e8bf57",
"484571a731d326ef4e2303eae67aa436",
"40f8ed127971c136927bc4b0a6a32335",
"5f73eb3d2926c801805c679e6135771f",
"0ded493381f310e081d26a0a3ed5b378",
"e7bfea948769b236b0429cc1c1269e70",
"6d197d1785c3fae12b40544d27c65013",
"33cbe0efe94c1ec50e0b230d344d84e9"
]
},
{
"id": "fragment-city-connect-exp-up",
"title": "FragmentCityConnectExpUp 数值异常",
"class": "logerror",
"issueCount": 1,
"occurrences": 937,
"issues": [
"96d3832bc2b13cad4cab14d287a1add1"
]
},
{
"id": "fragment-guard",
"title": "Fragment 运行时保护日志",
"class": "logerror",
"issueCount": 1,
"occurrences": 553,
"issues": [
"394b7b66613aa8840ff6cc1529b92b52"
]
},
{
"id": "ui-renderer-null-guard",
"title": "UI/Renderer 空保护诊断",
"class": "logerror",
"issueCount": 2,
"occurrences": 499,
"issues": [
"65db1d60ea0aaf171cc5d70c01c39643",
"4c23c0cf4f10b92b30e82da3148c6a99"
]
},
{
"id": "sts-upload-failure",
"title": "STS/OSS 上传失败诊断",
"class": "logerror",
"issueCount": 18,
"occurrences": 409,
"issues": [
"93509b23a954c79d835f4138bab9f3f7",
"4519111d864a8906a22e97fb6b1dafde",
"600050c9105bb97985338060934d9f77",
"4996aecdcf97c3d4b54719f999f5a6f3",
"c8bb360bc43adb4031886d360f65d8d7",
"fa9299c355341d1c7ce0e9ac05dbba4e",
"41ede517297398a59bc70bc4b37551cd",
"39f1705c6be89cfc405d62a429cd3ecf",
"4441aa82f781eb75e1b7b1d1de03c531",
"6d0c1221f60814a5652c709cbfd082bb",
"dd5f396e0f90f1d3b47d700dfed82cd8",
"4260d3c082e41c980f03155e70fa1d91",
"2c80a08593d1d79d0f9f6d9ef7a2ec77",
"b88d2ea9c9be5d1e8eab437631ab5ccb",
"42d6b47d8a74bf373ade1533f107cfc8",
"aedc3d510e61bc5d94656fa859c6dd5e",
"7d6e3cbc21bb2d7af76cddb01a16308a",
"bc85dad1ecb800b2c83c1e13c1455a14"
]
},
{
"id": "invalid-action-circle-diagnostic",
"title": "不可执行行动圈诊断",
"class": "logerror",
"issueCount": 6,
"occurrences": 340,
"issues": [
"b8bbf46c799fc64adba48fa5070a2891",
"7a6ba3b9578ca2f7a60f998a17075b83",
"789da56c26d7bf1335be14e6ed615517",
"07b07a628e50cf73ec93bef13f1bb9ca",
"f6d0183c10fd5fe87c1edc2897b0f851",
"74f6e8f74a69baf9f5d50ca3ac233a3c"
]
},
{
"id": "steamworks-not-initialized",
"title": "Steamworks 未初始化",
"class": "blocking",
"issueCount": 5,
"occurrences": 210,
"issues": [
"a677446e4ae77a510aba5cf0ba9de019",
"341f705a3c788ba90fbf37396a4c9470",
"93c9ce84e1edba72583b2e7607f7bf7b",
"c18ed0f5f203fc2440ebfcd5a69c917a",
"6e0dc137d04a6e570d8767e63558c030"
]
},
{
"id": "steam-api64-dll-missing",
"title": "Steam API DLL 缺失",
"class": "blocking",
"issueCount": 6,
"occurrences": 100,
"issues": [
"a2953c646aa11a95f841d94c914fc7e4",
"135c9d2628a684cc2f485cf4b0ab6fff",
"71daaae143e1bfb8c693cfe811c9c8c2",
"2714c1d9c23fc1cb11241be2cf56577e",
"a2b1b0cab9eff4ce9ec89cda7b3d9fd2",
"ae58c1f5e2a647198b896974ffbed7a1"
]
},
{
"id": "match-settlement-stuck-fallback",
"title": "结算卡住兜底诊断",
"class": "logerror",
"issueCount": 39,
"occurrences": 92,
"issues": [
"3e22e08c43db203c29689f86e8addba9",
"6bd22a2a6ee31e8e8e34144c082e7850",
"4e5577b8620259d901db838dedfd5262",
"d3f806e68879c7912cdffb561bd58a25",
"e20e251f62dd0151ebc9e1888e46e9ed",
"a3846ce5c04f6fea8d72ea306ec504fb",
"25e0ca8e9648c1ae4be5110685e3070e",
"ff8ef52bd1ad040638de0c7c80fc3e63",
"cb2dd553557e76f8a3633fe245b5feb2",
"9dde37c98f51712f9467f1d028f8fb2f",
"44707fbb03c12a8f2483394338f228e2",
"17268e7bd8d16d3390fa94049da5f67f",
"42a1832758f0f6ae2cf8c2159e09b270",
"0b698ca2c250da4ef400549d3df18b05",
"301527a2e5539aad52fbe1ef1594c510",
"35aacf599c9f1d0d11aed096157d8733",
"c1e24ae4cc939b6dce4767fa2360de91",
"5254e528be851d7129a2661d83ce739a",
"f279d1dbb18e0af57bfa650f9950d12c",
"97efc3e40dd726893f1398b20f437191",
"6d59647e88ce8fbb0e69d8a9cd344d18",
"2c9791b45c52304647a77deb62c8f785",
"bf6078910364324da71097ad309ab5c8",
"bc6e568bb73843cd91d14086f7e7d484",
"a84aad45e8435c8f4f845cf99fdbbfe4",
"275ba4a0237adcbb855bd40120a774f6",
"98b6f9cae089213c1f527da35a333399",
"5a1a47b429b02ee8d7c17520ab83f103",
"20abf236cfe52f800ec919138caf6d4b",
"47b016eae3da01ae980e371f78709afc",
"29726044126a568b1fc9716c2fad1cbd",
"d9828d78321e5439205fc9bfcd020605",
"1649a68cb1e3857f1706da152b013f82",
"30bb80854cbcc5dfb0da68d03c8fc5d4",
"bb054e7b6ffe7952ead3894de1bc5983",
"f67700bae0fa501d2ec9e5e6dcc6c3cb",
"96df174f6113028fdeb03b5587bc449a",
"e795cb4216f165a6da5f720ab34db4a2",
"8edcaded29c2de0e33c3cd4599860b13"
]
},
{
"id": "mapdata-deserialize-compat",
"title": "地图反序列化/版本兼容诊断",
"class": "logerror",
"issueCount": 14,
"occurrences": 82,
"issues": [
"879342965b3e2cf8dfb3f6e6be2f3b0c",
"91d688174ef23090b88f12727851de26",
"fc053b598247d784ed22b79252dd711f",
"ef6af01bde7f25d4d8e4b961893178c1",
"3ed551ed5c3ec29c3205b6381c3f9aa5",
"c53d34f02662f0f1a72669a2be822a87",
"2837eea491c93a23072cd4f5c33f5daf",
"497586a5924703a1acda3b226da6ccef",
"81fef68fecba171044a2e9810f9b9385",
"3591c7afdbfaed6aabed46f983db737d",
"92a24e5499897e3eae8043ccbb626c2b",
"78fee8f338652c30c0a6b6f7a27878be",
"99958faf39cc5573311ea22bd5ee901d",
"77f4d3c3221f15b63042010a7aa6ab76"
]
},
{
"id": "forceupdate-player-net-map",
"title": "ForceUpdate 玩家网络映射失败",
"class": "logerror",
"issueCount": 1,
"occurrences": 47,
"issues": [
"974c98893bbef75ff005eef661098908"
]
},
{
"id": "map-desync-diagnostic",
"title": "地图/同步状态不一致诊断",
"class": "logerror",
"issueCount": 3,
"occurrences": 27,
"issues": [
"9474bfe98e77682b012343635c22eeb2",
"247c22b2000f35ac38a00a9cb98860b1",
"5a510674d8b9372c2ce9b79c4ed373f4"
]
},
{
"id": "origin-player-null-diagnostic",
"title": "Origin Player 为空诊断",
"class": "logerror",
"issueCount": 5,
"occurrences": 24,
"issues": [
"e72101cce36cd8bd113c888ef63d7562",
"589373c458d67eceb1a52ffc4f2b59b8",
"128b8663fa3b97602250c9e4ff548eb9",
"3ac0f0dcdf7361938857531e6e8b422b",
"de0c2d2b0f202b1fc6c1854636197b23"
]
},
{
"id": "oss-workshop-upload-failure",
"title": "OSS/创意工坊上传失败诊断",
"class": "logerror",
"issueCount": 4,
"occurrences": 23,
"issues": [
"e588fdcf5ece4872586965261dd16fef",
"9e004d52e5ba61a1cd8a5ba76ea3202d",
"dcf3b81d738484ecdc63ef3034d4f17e",
"3c3abd04a63bd79d02a58762554796a3"
]
},
{
"id": "unit-transform-reserved-null",
"title": "单位类型转换技能空引用",
"class": "blocking",
"issueCount": 3,
"occurrences": 19,
"issues": [
"a0e61c12efdd065cb3098fa874ff7a96",
"e9f3d3b75f11f41baf8d8dd950e6026b",
"0b969e4835cea675957736a5da0ce1f"
]
},
{
"id": "bottom-sl-resume-null",
"title": "底栏 SL/Resume 空引用",
"class": "blocking",
"issueCount": 1,
"occurrences": 14,
"issues": [
"4c22419620a2f97f41d4182f807a8806"
]
},
{
"id": "announce-major-event-null",
"title": "重大事件公告 UI 空引用",
"class": "blocking",
"issueCount": 2,
"occurrences": 13,
"issues": [
"0af437dc7c73331f892ca95178c964cc",
"f5e2775f98f29836622f7f514a5a059d"
]
},
{
"id": "local-device-capability",
"title": "本机音频/显卡能力诊断",
"class": "logerror",
"issueCount": 3,
"occurrences": 11,
"issues": [
"40c20d961527ac0e0fc5288af37cae47",
"9997ab8764c24b90b4ad8368833a3e15",
"341bbed051698b373151b84bde7e144f"
]
},
{
"id": "safe-write-failure",
"title": "本地安全写入失败",
"class": "logerror",
"issueCount": 3,
"occurrences": 6,
"issues": [
"da92733e4f2c7175755150f1172062bc",
"d2fa99b9b9bf4ba1778a0520764327a2",
"9e5b509043eedaaf40fb99cc7b4bd725"
]
},
{
"id": "achievement-file-diagnostic",
"title": "成就文件损坏诊断",
"class": "logerror",
"issueCount": 3,
"occurrences": 3,
"issues": [
"7260fba5f901650a656890f56f982f1f",
"148beb4c6c5a0b76f08e47bb281e09c1",
"a859b766a9489002c2a6680ec78b548d"
]
},
{
"id": "tmp-inputfield-cursor-indexoutofrange",
"title": "TMP 输入框光标数组越界",
"class": "blocking",
"issueCount": 1,
"occurrences": 2,
"issues": [
"7506613af0c386104713b2e8c86fc93b"
]
},
{
"id": "sanae-onheal-null",
"title": "早苗治疗技能空引用",
"class": "blocking",
"issueCount": 1,
"occurrences": 2,
"issues": [
"481281fb8ec7b99399c304b9379457a3"
]
},
{
"id": "maprenderer-highlight-keynotfound",
"title": "移动攻击高亮字典 Key 缺失",
"class": "blocking",
"issueCount": 1,
"occurrences": 2,
"issues": [
"0bbff28f08b867749349762f2e47eac2"
]
},
{
"id": "shader-fallback-diagnostic",
"title": "Shader fallback 诊断",
"class": "logerror",
"issueCount": 1,
"occurrences": 1,
"issues": [
"a028074d459066a519ffbd4807341ebd"
]
},
{
"id": "damage-grid-null-diagnostic",
"title": "受击生命周期格子为空诊断",
"class": "logerror",
"issueCount": 1,
"occurrences": 1,
"issues": [
"57500e9e3290b3066f6ffc925d2d7238"
]
},
{
"id": "map-click-move-keynotfound",
"title": "点击移动字典 Key 缺失",
"class": "blocking",
"issueCount": 1,
"occurrences": 1,
"issues": [
"c468364b1b357f80622937c65e566365"
]
},
{
"id": "touch-info-platform-diagnostic",
"title": "触控信息平台诊断",
"class": "logerror",
"issueCount": 1,
"occurrences": 1,
"issues": [
"ef2c063b9dc31caa463ae478a66d5718"
]
}
]
}

View File

@ -0,0 +1,175 @@
# Steamworks 未初始化
- 分类blocking
- Issue 数5
- `0.7.2c` 最近一天次数47
- 设备数合计9
- 报告生成2026-06-02 10:51:04
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [8605ccfc9311840c54f1e112669c6c4a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8605ccfc9311840c54f1e112669c6c4a?pid=10) | UnityLogError | 8 | 2 | 2026-06-01 23:26:14 | [UIOutsideMultiplay] LeaveRoom exception: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000 |
| [341f705a3c788ba90fbf37396a4c9470](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/341f705a3c788ba90fbf37396a4c9470?pid=10) | InvalidOperationException | 18 | 2 | 2026-06-01 23:26:12 | Steamworks is not initialized. |
| [6824d854c4dbc78d5d41cc0cba4081fb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6824d854c4dbc78d5d41cc0cba4081fb?pid=10) | UnityLogError | 8 | 2 | 2026-06-01 23:26:04 | EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] i… |
| [ee679306da516a599fea816f2ff6653f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ee679306da516a599fea816f2ff6653f?pid=10) | UnityLogError | 7 | 2 | 2026-06-01 23:24:02 | EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] i… |
| [589a482d3aa15b5adaf39c75d3caa9de](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/589a482d3aa15b5adaf39c75d3caa9de?pid=10) | InvalidOperationException | 6 | 1 | 2026-06-01 21:09:32 | Steamworks is not initialized. |
## 设备上下文
### 8605ccfc9311840c54f1e112669c6c4a
- 样本 CrashId`01a61251ed9341c3b53262500a2da433`
- 样本 DeviceId`9c-6b-00-9a-3e-ae`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
[UIOutsideMultiplay] LeaveRoom exception: System.InvalidOperationException: Steamworks is not initialized.
at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0
at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000000000000000000>:0
at bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.dio () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.bei () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.cou () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.InvokableCall.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent (System.Int32 id) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.Process () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.EventSystem.Update () [0x00000] in <00000000000000000000000000000000>:0
UnityEngine.Debug.LogError(Object)
TH1_UI.View.Outside.UIOutsideMultiplayView.cou()
Unity
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-02 02:54:31 | 879342965b3e2cf8dfb3f6e6be2f3b0c | | |
| 2026-06-02 02:31:55 | 879342965b3e2cf8dfb3f6e6be2f3b0c | | |
| 2026-06-02 02:31:55 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 02:31:54 | 43f14319d1b258affd890dcee07175f4 | | |
| 2026-06-02 02:30:09 | 95acc470976c3634591ff4405b96d3b0 | | |
| 2026-06-02 02:30:08 | 5a79f60647b161c7b10cde5c647fca94 | | |
| 2026-06-02 02:21:26 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 02:15:16 | 9b415b4bbb546c66eba3a6b67f916d35 | | |
### 341f705a3c788ba90fbf37396a4c9470
- 样本 CrashId`057e4a4a3c79451781a80b66ee229238`
- 样本 DeviceId`9c-6b-00-9a-3e-ae`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
InvalidOperationException
Steamworks is not initialized.
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
InvalidOperationException
Steamworks is not initialized.
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-02 02:54:31 | 879342965b3e2cf8dfb3f6e6be2f3b0c | | |
| 2026-06-02 02:31:55 | 879342965b3e2cf8dfb3f6e6be2f3b0c | | |
| 2026-06-02 02:31:55 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 02:31:54 | 43f14319d1b258affd890dcee07175f4 | | |
| 2026-06-02 02:30:09 | 95acc470976c3634591ff4405b96d3b0 | | |
| 2026-06-02 02:30:08 | 5a79f60647b161c7b10cde5c647fca94 | | |
| 2026-06-02 02:21:26 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 02:15:16 | 9b415b4bbb546c66eba3a6b67f916d35 | | |
### 6824d854c4dbc78d5d41cc0cba4081fb
- 样本 CrashId`d85a725dec9448269877dd345419be5f`
- 样本 DeviceId`9c-6b-00-9a-3e-ae`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.InvalidOperationException: Steamworks is not initialized.
at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0
at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000000000000000000>:0
at bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.dio () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.bei () [0x00000] in <00000000000000000000000000000000>:0
at TH1_UI.View.Outside.UIOutsideMultiplayView.geh (TH1_Core.Events.ShowUIOutsideMultiplay a) [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000000000000>:0
at ern.gyd (TH1_Core.Events.ShowUIOutsideMultiplay a) [0x00000] in <00000000000000000000000000000000>:0
at erk.fcv[c] (c a) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.InvokableCall.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMo
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-02 02:54:31 | 879342965b3e2cf8dfb3f6e6be2f3b0c | | |
| 2026-06-02 02:31:55 | 879342965b3e2cf8dfb3f6e6be2f3b0c | | |
| 2026-06-02 02:31:55 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 02:31:54 | 43f14319d1b258affd890dcee07175f4 | | |
| 2026-06-02 02:30:09 | 95acc470976c3634591ff4405b96d3b0 | | |
| 2026-06-02 02:30:08 | 5a79f60647b161c7b10cde5c647fca94 | | |
| 2026-06-02 02:21:26 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 02:15:16 | 9b415b4bbb546c66eba3a6b67f916d35 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Steam\SteamLobbyManager.cs:1151: public void SearchPublicLobbies(ELobbyDistanceFilter filter = ELobbyDistanceFilter.k_ELobbyDistanceFilterWorldwide,`
- `Unity/Assets/Scripts\TH1_Logic\Editor\SteamEditorWindow.cs:168: if (InspectorUtils.InspectorButtonWithTextWidth("搜索")) lobby.SearchPublicLobbies();`
- `Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideMultiplayView.cs:1973: _lobby.SearchPublicLobbies();`
## 解码结论
- 解码主路径:`UIOutsideMultiplayView.OnRefreshLobbyClicked()` -> `SteamLobbyManager.SearchPublicLobbies(...)` -> `SteamMatchmaking.AddRequestLobbyListDistanceFilter(...)` -> `Steamworks.InteropHelp.TestIfAvailableClient()`
- 5 个 Issue 都是同一根因的不同入口包装:有的直接由 Steamworks 抛 `InvalidOperationException`,有的被 `EventManager.Publish<ShowUIOutsideMultiplay>``LeaveRoom` 的 catch 包成 `UnityLogError`
- 触发场景集中在多人大厅 UI`SetNoRoom()` 会再次调用 `OnRefreshLobbyClicked()``OnInit` 的离房/刷新逻辑也能走到同一路径。样本同设备序列里同一玩家连续上报多个大厅相关 ERROR说明不是单个按钮偶发而是 Steam 客户端不可用时 UI 仍继续刷新大厅。
- 建议优先在 `SteamLobbyManager.SearchPublicLobbies``UIOutsideMultiplayView.OnRefreshLobbyClicked/SetNoRoom` 两层都加 Steam 初始化态保护。Steam 未初始化时只显示网络/Steam 不可用提示并停止刷新循环,避免 UI 打开、离房、刷新按钮互相触发异常。
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,100 @@
# 早苗治疗技能空引用
- 分类blocking
- Issue 数1
- `0.7.2c` 最近一天次数10
- 设备数合计1
- 报告生成2026-06-02 10:51:04
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [526d5bd9c92269231f74e9c90cfaed62](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/526d5bd9c92269231f74e9c90cfaed62?pid=10) | UnityLogError | 10 | 1 | 2026-06-02 00:05:16 | Timer任务执行异常: 错误信息: SANAEDIVINE - SANAENINE 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at bsr.guy () [0x00000] in <00000000000000000000000000000000>:0 at bsr.guz () [0x00000] in <00000000000000000000000000000000>:0 at edc+cqj.iai () [0x00000] in <00000000000000000000000000000000>:0 at i.oj () [0x0000… |
## 设备上下文
### 526d5bd9c92269231f74e9c90cfaed62
- 样本 CrashId`ec8f3168825147a4b7c063214982f9e4`
- 样本 DeviceId`00-25-50-03-10-00`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
Timer任务执行异常:
错误信息: SANAEDIVINE - SANAENINE
异常类型: System.NullReferenceException
异常信息: Object reference not set to an instance of an object.
调用堆栈: at bsr.guy () [0x00000] in <00000000000000000000000000000000>:0
at bsr.guz () [0x00000] in <00000000000000000000000000000000>:0
at edc+cqj.iai () [0x00000] in <00000000000000000000000000000000>:0
at i.oj () [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
目标对象: edc
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()
UnityLogError
Timer任务执行异常:
错误信息: SANAEDIVINE - SANAENINE
异常类型: System.NullReferenceException
异常信息: Object reference not set to an instance of an object.
调用堆栈: at bsr.guy () [0x00000] in <00000000000000000000000000000000>:0
at bsr.guz () [0x00000] in <00000000000000000000000000000000>:0
at edc+cqj.iai () [0x00000] in <00000000000000000000000000000000>:0
at i.oj () [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
目标对象: edc
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-02 00:10:31 | b9356ab138b2b54e96f3db7887c3b8d0 | | |
| 2026-06-02 00:10:30 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 00:05:16 | 526d5bd9c92269231f74e9c90cfaed62 | | |
| 2026-06-02 00:05:16 | bb81bce180d8672f500aa9f2021ec9f8 | | |
| 2026-06-02 00:05:16 | 76c4c1b1a5add246455aec813c46d59a | | |
| 2026-06-02 00:05:16 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 00:05:15 | bb81bce180d8672f500aa9f2021ec9f8 | | |
| 2026-06-02 00:05:15 | 75a3ccfed59a3b1e5cdff8183b987406 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Skill\AllSkill\SanaeDivineSkill.cs:82: timer.TimerRegister(this, playOmikuji,1.1f * i,"SANAEDIVINE - SANAENINE - OnHeal");`
## 解码结论
- 解码堆栈:`Timer.Update()` -> `SanaeDivineSkill.<OnDamageOther>b__0()` -> `GridData.InMainSight()` -> `GridData.IsMainMap()`
- 当前 `OnDamageOther` 已经在注册回调前后用 `TryGetLiveUnitGrid/TryGetLiveGrid` 重新取 live grid但延迟回调进入 `OmikujiAnim` 后仍会调用 `origin.InMainSight() || target.InMainSight()``GridData.IsMainMap()` 内部直接访问 `Main.MapData.GridMap`,当延迟动画跨过地图切换、对局结束、读档/重连恢复或 `Main.MapData` 临时不完整时,就会在这里空引用。
- 这不是纯视觉小问题:异常由 `Timer任务执行异常` 包装,但它在主循环 `Timer.Update -> Main.Update` 中发生,且同一设备 10 次上报,说明回调会重复触发。
- 建议在 `SanaeDivineSkill.OmikujiAnim` 和所有延迟 VFX 回调入口增加 `Main.MapData == mapData``Main.MapData?.GridMap != null``Main.MapData?.PlayerMap?.SelfPlayerData?.Sight != null` 的短路。更稳妥的是避免直接调用捕获的 `GridData.InMainSight()`,改成用 gridId 在当前 `mapData` 重新解析,并在地图不再是当前主图时直接跳过动画。
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,137 @@
# 空引用异常
- 分类blocking
- Issue 数2
- `0.7.2c` 最近一天次数2
- 设备数合计2
- 报告生成2026-06-02 10:51:04
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [9ccfcf2261240f94e0e8d784db68694c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9ccfcf2261240f94e0e8d784db68694c?pid=10) | NullReferenceException | 1 | 1 | 2026-06-01 23:22:20 | Object reference not set to an instance of an object. |
| [d81f2cf20a94cda3fb516f49212b31d5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d81f2cf20a94cda3fb516f49212b31d5?pid=10) | NullReferenceException | 1 | 1 | 2026-06-01 21:14:46 | Object reference not set to an instance of an object. |
## 设备上下文
### 9ccfcf2261240f94e0e8d784db68694c
- 样本 CrashId`2b414c49102d4617aa5f51b16e1c964a`
- 样本 DeviceId`c8-7f-54-a6-fa-4c`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
NullReferenceException
Object reference not set to an instance of an object.
ib.hap (hz a) (at <00000000000000000000000000000000>.0)
ib.ham (hz a) (at <00000000000000000000000000000000>.0)
fj.cpp () (at <00000000000000000000000000000000>.0)
fj.bgf () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
ib.hap (hz a) (at <00000000000000000000000000000000>.0)
ib.ham (hz a) (at <00000000000000000000000000000000>.0)
fj.cpp () (at <00000000000000000000000000000000>.0)
fj.bgf () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
ib.hap (hz a) (at <00000000000000000000000000000000>.0)
ib.ham (hz a) (at <00000000000000000000000000000000>.0)
fj.cpp () (at <00000000000000000000000000000000>.0)
fj.bgf () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
NullReferenceException
Object reference not set to an instance of an object.
ib.hap (hz a) (at <00000000000000000000000000000000>.0)
ib.ham (hz a) (at <00000000000000000000000000000000>.0)
fj.cpp () (at <00000000000000000000000000000000>.0)
fj.bgf () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-02 00:44:31 | d7e6cc2799b68c86e60f214b087d67a2 | | |
| 2026-06-02 00:13:32 | d8de4834232190d1b31e54f83f92455d | | |
| 2026-06-02 00:13:32 | 6015aabf5b375a7e2a323b4b520f7fa7 | | |
| 2026-06-02 00:03:29 | f491e675022da1efea0d0392ab128f62 | | |
| 2026-06-02 00:03:28 | 4c75b2d78a859ca6b6418bd8ea9103c3 | | |
| 2026-06-01 23:22:21 | a1669cc14acdfdbfbb7e4b67d8edaa17 | | |
| 2026-06-01 23:22:21 | 99c0d1f01c2fd32ecadaa6d93a458b2c | | |
| 2026-06-01 23:22:20 | 9ccfcf2261240f94e0e8d784db68694c | | |
### d81f2cf20a94cda3fb516f49212b31d5
- 样本 CrashId`454c917fdcb149c388453bcb47c1bdef`
- 样本 DeviceId`d8-b3-2f-b5-0b-08`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
NullReferenceException
Object reference not set to an instance of an object.
fu.bjc () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
fu.bjc () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
fu.bjc () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
NullReferenceException
Object reference not set to an instance of an object.
fu.bjc () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-02 09:19:02 | bb81bce180d8672f500aa9f2021ec9f8 | | |
| 2026-06-02 09:00:14 | 17ad3797303c790702e726900b44d7a1 | | |
| 2026-06-02 09:00:13 | d7e6cc2799b68c86e60f214b087d67a2 | | |
| 2026-06-02 09:00:13 | 46e066ae0b769b9bf90484685e8f2687 | | |
| 2026-06-02 09:00:13 | d8de4834232190d1b31e54f83f92455d | | |
| 2026-06-02 09:00:13 | a4b9850f4fff9fc2e741d86c2bf5f8a5 | | |
| 2026-06-02 09:00:12 | 8ea23c00bbb51e4cd7f62f25a2dde6c0 | | |
| 2026-06-02 09:00:12 | f491e675022da1efea0d0392ab128f62 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1219: protected virtual void AfterExecute(CommonActionParams actionParams)`
- `Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1250: foreach (var item in actionParams.PlayerData.MomentData.Items)`
- `Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:88: public void Update()`
- `Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:160: OnGridInfoAction();`
## 解码结论
### 9ccfcf2261240f94e0e8d784db68694c
- 解码堆栈:`InputLogic.Update()` -> `MapInteraction`/点击处理链 -> `ActionLogicBase.CompleteExecute()` -> `ActionLogicBase.AfterExecute(CommonActionParams)`
- 可疑点集中在 `AfterExecute` 的后处理刷新:`actionParams.MapData.OnActionExecuted(...)`、玩家好感/外交刷新、`Main.PlayerLogic.CalcAllPlayerScore(...)``Main.PlayerLogic.Update(...)``MatchSettlementLogicFactory.RefreshMatchSettlementInfo(...)`,以及 `actionParams.PlayerData.MomentData.Items` 遍历。
- 样本同设备在同一时间点前后有多条 Action/地图状态诊断上报,说明触发很可能是一次点击行动执行完成后,`CommonActionParams` 中的 `PlayerData``MomentData` 或当前 `Main.MapData` 状态与后处理假设不一致。
- 建议给 `AfterExecute` 增加最小保护和诊断:记录 `ActionId``actionParams.PlayerData?.Id``MapData == Main.MapData``MomentData == null``Main.PlayerLogic == null``MatchSettlement == null`。优先保护 `actionParams.PlayerData?.MomentData?.Items`,因为该行最容易因参数玩家为空或 MomentData 未初始化而直接空引用。
### d81f2cf20a94cda3fb516f49212b31d5
- 解码堆栈只有 `InputLogic.Update()` -> `Main.Update()`CrashSight 没有更深帧,说明异常发生在输入主循环直接调用的分支中。
- 结合代码,`InputLogic.Update` 前半段直接访问 `UIChatAreaMono.IsInputFieldFocused``DebugCenter.Instance.DebugMode``PresentationManager.Busy``Camera.main``Table.Instance``Main.MapData``_main.MapInteractionLogic` 等全局状态。样本设备后续在同一启动会话内连续出现网络/Action/地图诊断,疑似处于地图或网络状态切换期间。
- 建议先在 `InputLogic.Update` 外层增加带上下文的 try/catch 诊断,至少打印当前 `inputLock``PresentationManager.Busy``Main.MapData``Table.Instance``Camera.main``UIBlockCameraDrag.DownUpEvent`,再按日志定位具体空对象;如果要先做止血,地图点击分支应统一使用 `_mapData`/`_main.MapData` 的一致性检查,避免主图切换期间继续走点击逻辑。
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,85 @@
# IndexOutOfRangeException
- 分类blocking
- Issue 数1
- `0.7.2c` 最近一天次数1
- 设备数合计1
- 报告生成2026-06-02 10:51:04
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [e50cf99b415ba6b21d90e50a1e7c47c7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e50cf99b415ba6b21d90e50a1e7c47c7?pid=10) | IndexOutOfRangeException | 1 | 1 | 2026-06-01 22:53:58 | Index was outside the bounds of the array. |
## 设备上下文
### e50cf99b415ba6b21d90e50a1e7c47c7
- 样本 CrashId`615e02d436aa46de99fa802fd620ecec`
- 样本 DeviceId`bc-fc-e7-0b-da-e2`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
IndexOutOfRangeException
Index was outside the bounds of the array.
System.String.get_Chars (System.Int32 index) (at <00000000000000000000000000000000>.0)
System.Text.RegularExpressions.RegexCharClass.CharInCategoryGroup (System.Char ch, System.Globalization.UnicodeCategory chcategory, System.String category, System.Int32& i) (at <00000000000000000000000000000000>.0)
System.Text.RegularExpressions.RegexCharClass.CharInClassInternal (System.Char ch, System.String set, System.Int32 start, System.Int32 mySetLength, System.Int32 myCategoryLength) (at <00000000000000000000000000000000>.0)
System.Text.RegularExpressions.RegexCharClass.CharInClassRecursive (System.Char ch, System.String set, System.Int32 start) (at <00000000000000000000000000000000>.0)
System.Text.RegularExpressions.RegexCharClass.IsWordChar (System.Char ch) (at <00000000000000000000000000000000>.0)
System.Text.RegularExpressions.RegexParser.ScanCharEscape () (at <00000000000000000000000000000000>.0)
System.Text.RegularExpressions.RegexParser.ScanBasicBackslash (System.Boolean scanOnly) (at <00000000000000000000000000000000>.0)
System.Text.RegularExpressions.RegexParser.CountCaptures () (at <00000000000000000000000000000000>.0)
System.Text.RegularExpressions.RegexParser.Parse (System.String re, System.Text.RegularExpressions.RegexOptions op) (at <00000000000000000000000000000000>.0)
Logic.Multilingual.MultilingualData.bro (System.UInt32 a, Logic.Multilingual.MultilingualType b) (at <00000000000000000000000000000000>.0)
hg.bsk () (at <00000000000000000000000000000000>.0)
TH1_UI.View.Info.UIInfoGridInfoView.fca (TH1_Core.Events.ShowUIInfoGridInfo a) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Info.UIInfoGridInfoView.fbu (TH1_Core.Events.ShowUIInfoGridInfo a) (at <00000000000000000000000000000000>.0)
dyv.jwa () (at <00000000000000000000000000000000>.0)
eqy`1[c].fab () (at <00000000000000000000000000000000>.0)
eqy`1[c].ezp () (at <00000000000000000000000000000000>.0)
ern.fwm (TH1_Core.Events.ShowUIInfoGridInfo a) (at <00000000000000000000000000000000>.0)
erk.fcv[c] (c a) (at <00000000000000000000000000000000>.0)
gi.bla (cfo a, bsr b) (at <00000000000000000000000000000000>.0)
fu
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 23:19:53 | 691253c2a412f07945231dd650f58213 | | |
| 2026-06-01 22:53:58 | e50cf99b415ba6b21d90e50a1e7c47c7 | | |
| 2026-06-01 20:57:59 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 20:51:23 | e588fdcf5ece4872586965261dd16fef | | |
| 2026-06-01 19:30:54 | bb81bce180d8672f500aa9f2021ec9f8 | | |
| 2026-06-01 19:30:54 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 18:34:37 | bb81bce180d8672f500aa9f2021ec9f8 | | |
| 2026-06-01 18:27:10 | 10d4df507992c1a66a90693df20b21c3 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualData.cs:84: public string GetMultilingualStr(uint id, MultilingualType type)`
- `Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualData.cs:110: ret = ResolveEmbeddedStringsRunning(ret, type);`
- `Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualData.cs:227: public string ResolveEmbeddedStringsRunning(string origin, MultilingualType type)`
- `Unity/Assets/Scripts\TH1_UI\View\Info\UIInfoGridInfoView.cs:597: private void SetContentSkill(ShowUIInfoGridInfo evt)`
## 解码结论
- 解码堆栈:`InputLogic.Update()` -> `MapInteraction` 点击信息面板 -> `UIInfoGridInfoView.SetContent(...)` -> `UIInfoGridInfoView.SetContentSkill(...)` -> `MultilingualData.GetMultilingualStr(uint, MultilingualType)` -> `RegexParser.Parse(...)` -> `System.String.get_Chars` 越界。
- 这条不是 TMP 渲染越界,而是多语言嵌入引用解析时的正则解析异常。触发路径来自地块/单位信息面板刷新技能列表,`UIInfoGridInfoView.SetContentSkill` 会遍历单位技能并设置技能圆圈,期间会读取技能名/描述多语言。
- 根因更像是某个技能/描述文本、mod 覆盖文本或运行时语言数据中存在异常嵌入标记,使 `ResolveEmbeddedStringsRunning` 在构造/执行正则时进入 .NET Regex 解析器异常。当前日志缺少 id/type/raw 文本,所以还不能锁定具体多语言 ID。
- 建议在 `GetMultilingualStr``ResolveEmbeddedStringsRunning` 捕获 Regex 解析异常,并打印 `id``type``origin`、当前语言、是否应用了 Workshop mod。这样能避免信息面板阻断同时下一次上报可直接定位脏数据。对 `**<...>**` 嵌入语法也建议在导表或 mod 导入阶段做校验。
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,100 @@
# 点击移动字典 Key 缺失
- 分类blocking
- Issue 数1
- `0.7.2c` 最近一天次数1
- 设备数合计1
- 报告生成2026-06-02 10:51:04
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [ab9f079f9f66a99ede0ba5a44ba49676](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ab9f079f9f66a99ede0ba5a44ba49676?pid=10) | UnityLogError | 1 | 1 | 2026-06-02 00:51:46 | Timer任务执行异常: 错误信息: MapInteraction_OnTileClicked_Move 异常类型: System.Collections.Generic.KeyNotFoundException 异常信息: The given key '579' was not present in the dictionary. 调用堆栈: at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x00000] in <00000000000000000000000000000000>:0 at fj.bgn (System.UInt32 a) [0x00000] in <00000000000000000 |
## 设备上下文
### ab9f079f9f66a99ede0ba5a44ba49676
- 样本 CrashId`487eeb0a3a1145d0bbaef879f5777d84`
- 样本 DeviceId`bc-fc-e7-e1-f7-64`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
Timer任务执行异常:
错误信息: MapInteraction_OnTileClicked_Move
异常类型: System.Collections.Generic.KeyNotFoundException
异常信息: The given key '526' was not present in the dictionary.
调用堆栈: at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x00000] in <00000000000000000000000000000000>:0
at fj.bgn (System.UInt32 a) [0x00000] in <00000000000000000000000000000000>:0
at gi.bla (cfo a, bsr b) [0x00000] in <00000000000000000000000000000000>:0
at i.oj () [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
目标对象: gi
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()
UnityLogError
Timer任务执行异常:
错误信息: MapInteraction_OnTileClicked_Move
异常类型: System.Collections.Generic.KeyNotFoundException
异常信息: The given key '526' was not present in the dictionary.
调用堆栈: at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x00000] in <00000000000000000000000000000000>:0
at fj.bgn (System.UInt32 a) [0x00000] in <00000000000000000000000000000000>:0
at gi.bla (cfo a, bsr b) [0x00000] in <00000000000000000000000000000000>:0
at i.oj () [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
目标对象: gi
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-02 02:31:36 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 02:10:33 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 00:51:46 | ab9f079f9f66a99ede0ba5a44ba49676 | | |
| 2026-06-02 00:32:34 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-02 00:11:20 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 21:28:59 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 20:21:51 | 10d4df507992c1a66a90693df20b21c3 | | |
| 2026-06-01 18:20:35 | 10d4df507992c1a66a90693df20b21c3 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_Logic\Map\MapInteraction.cs:251: },Table.Instance.AnimDataAssets.MoveAnimTime,"MapInteraction_OnTileClicked_Move");`
- `Unity/Assets/Scripts\TH1_Logic\Map\MapInteraction.cs:299: },Table.Instance.AnimDataAssets.MoveAnimTime,"MapInteraction_OnTileClicked_Move");`
## 解码结论
- 解码堆栈:`Timer.Update()` -> `MapInteraction_OnTileClicked_Move` 延迟回调 -> `MapInteraction.OnTileClicked(...)` -> `MapRenderer.SetUnitAllMoveAttackTargetHighlight(uint uid)` -> 字典读取 key `579` 失败。
- 这是点击移动后延迟回调复用旧 unit/grid 状态的问题。移动动画时间结束时,单位 579 已不在当前 renderer/RO 字典中,或者当前地图/渲染器已经切换,但回调仍继续刷新可移动/可攻击高亮。
- 建议在注册 `MapInteraction_OnTileClicked_Move` 时只捕获 id不捕获旧对象回调触发后重新确认 `mapData == Main.MapData``MapRenderer.Instance` 有效、`UnitMap` 和 renderer 字典都存在目标单位。`SetUnitAllMoveAttackTargetHighlight` 内部也应把字典索引改为 `TryGetValue`,失败时清高亮并返回,而不是让 UI 点击路径被阻断。
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,102 @@
# 重大事件公告 UI 空引用
- 分类blocking
- Issue 数1
- `0.7.2c` 最近一天次数1
- 设备数合计1
- 报告生成2026-06-02 10:51:04
## Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---:|---:|---|---|
| [0af437dc7c73331f892ca95178c964cc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0af437dc7c73331f892ca95178c964cc?pid=10) | UnityLogError | 1 | 1 | 2026-06-01 21:38:58 | EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object. at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0 at era.bvr () [0x00000] in <00 |
## 设备上下文
### 0af437dc7c73331f892ca95178c964cc
- 样本 CrashId`d603e17ac1c24731b5df98ffe52df20a`
- 样本 DeviceId`02-50-cc-86-5e-f9`
- CrashSight 附带日志文件:`False`
最终上报内容:
```text
UnityLogError
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0
at era.bvr () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000000000000>:0
at eri.fvd (System.Action a) [0x00000] in <00000000000000000000000000000000>:0
at erl.fcy () [0x00000] in <00000000000000000000000000000000>:0
at erl.cug (erh a, System.Boolean b) [0x00000] in <00000000000000000000000000000000>:0
at ern.fdq (TH1_Core.Events.ShowUIAnnounceMajorEvent a) [0x00000] in <00000000000000000000000000000000>:0
at erk.fcv[c] (c a) [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main+<>c.lpz () [0x00000] in <00000000000000000000000000000000>:0
at i.oj () [0x00000] in <00000000000000000000000000000000>:0
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.lpz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.lpz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
erk.fcv(c)
TH1_Logic.Core.<>c.lpz()
i.oj()
TH1_Logic.Core.Main.Update()
UnityLogError
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
at TH1_UI.View.Announce.UIAnnounceMajorEventView.ewb (TH1_Core.Events.UIAnnounceMajorEventType a, System.Int32 b, System.Int32 c) [0x00000] in <00000000000000000000000000000000>:0
at era.bvr () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0
at eqy`1[c].ezp () [0x00000] in <00000000000000000000000
...
```
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-01 22:59:50 | 8b25a3e618ff41836a53290accc32ac4 | | |
| 2026-06-01 22:56:02 | eef7fa7503168965448a647bfbe7ae65 | | |
| 2026-06-01 21:38:58 | 0af437dc7c73331f892ca95178c964cc | | |
| 2026-06-01 21:38:00 | dbce2880e5ad9287fcca2bf271f97622 | | |
| 2026-06-01 21:38:00 | 81a5e2896daabc7005cd79ae522de4bf | | |
| 2026-06-01 21:38:00 | 1d2092e8267a158d39aa1a040041020d | | |
| 2026-06-01 21:38:00 | 2cb3d67ddfe0d9587abd02390f5de041 | | |
| 2026-06-01 21:38:00 | 01eaa6aefd9162eccc930c2450a63779 | | |
## 代码位置
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:16: public class UIAnnounceMajorEventView : Base.View`
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:63: LogSystem.LogError("UIAnnounceMajorEventView.SetContent(): Title or Content or Image or Image is null");`
- `Unity/Assets/Scripts\TH1_UI\Controller\Announce\UIAnnounceMajorEventController.cs:15: public class UIAnnounceMajorEventController : ViewController<UIAnnounceMajorEventView>, IEscClosable // 泛型参数是对应的View脚本`
## 解码结论
- 解码堆栈:`UIAnnounceMajorEventController.OnOpen()` -> `UIAnnounceMajorEventView.SetContent(...)`,由 `EventManager.Publish<ShowUIAnnounceMajorEvent>` 包装成 `UnityLogError`
- 本次 0.7.2c 只有 1 次,仍是 StartGame/重大事件公告打开时的空引用族。可疑对象包括 `Main.MapData``PlayerMap.SelfPlayerData``PlayerInfo`、事件配置 `UICenterMessageInfo`,以及 Title/Content/Image 等 prefab 引用。
- 建议 `SetContent` 在每个事件分支前做数据态保护并记录 `eventType/param1/param2`。尤其 StartGame/FirstMeet 类分支需要在多人开始/恢复流程中确认 `Main.MapData.PlayerMap``SelfPlayerData.PlayerInfo` 已初始化后再发公告事件。
## 判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
## 建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。

View File

@ -0,0 +1,52 @@
# CrashSight 0.7.2c 最近一天 ERROR 分析
- 捕获时间2026-06-02 10:51:04
- 筛选范围:`0.7.2c``last_1_day`ERROR未处理/处理中
- CrashSight numFound277
- 去重 Issue277
- blocking11 个 Issue62 次
- logerror266 个 Issue9035 次
- 原始数据:`Temp\CrashSight\Daily_2026-06-02_0.7.2c`
## 阻断家族
| 家族 | Issue 数 | 次数 | 报告 |
|---|---:|---:|---|
| Steamworks 未初始化 | 5 | 47 | [blocking/001_steamworks-not-initialized.md](blocking/001_steamworks-not-initialized.md) |
| 早苗治疗技能空引用 | 1 | 10 | [blocking/002_sanae-onheal-null.md](blocking/002_sanae-onheal-null.md) |
| 空引用异常 | 2 | 2 | [blocking/003_null-reference.md](blocking/003_null-reference.md) |
| IndexOutOfRangeException | 1 | 1 | [blocking/004_index-out-of-range.md](blocking/004_index-out-of-range.md) |
| 点击移动字典 Key 缺失 | 1 | 1 | [blocking/005_map-click-move-keynotfound.md](blocking/005_map-click-move-keynotfound.md) |
| 重大事件公告 UI 空引用 | 1 | 1 | [blocking/006_announce-major-event-null.md](blocking/006_announce-major-event-null.md) |
## 非阻断高频
| 类别 | Issue 数 | 次数 |
|---|---:|---:|
| 行动执行玩家不一致 | 20 | 4209 |
| 网络发送失败诊断 | 58 | 958 |
| 行动同步版本/索引不一致 | 7 | 863 |
| AI 计算死循环保护 | 2 | 775 |
| P2P/大厅连接失败诊断 | 10 | 707 |
| 断线重连/ForceUpdate 诊断 | 8 | 526 |
| 相似 Action 重复诊断 | 46 | 500 |
| MapData 序列化差异诊断 | 63 | 219 |
| 多语言 ID 为空 | 6 | 139 |
| STS/OSS 上传失败诊断 | 8 | 48 |
| 其他项目诊断日志 | 9 | 34 |
| 地图反序列化/版本兼容诊断 | 8 | 15 |
## 报告
- [LogError Summary](logerror_summary.md)
- [Steamworks 未初始化](blocking/001_steamworks-not-initialized.md)
- [早苗治疗技能空引用](blocking/002_sanae-onheal-null.md)
- [空引用异常](blocking/003_null-reference.md)
- [IndexOutOfRangeException](blocking/004_index-out-of-range.md)
- [点击移动字典 Key 缺失](blocking/005_map-click-move-keynotfound.md)
- [重大事件公告 UI 空引用](blocking/006_announce-major-event-null.md)
## 说明
blocking 的判定只认真实异常类型、异常对象或调用栈;纯 `LogSystem.LogError` 业务状态诊断归入 logerror。
本次通过 CrashSight OpenAPI 抓取样本详情和同设备最近 ERROR 上报序列;若样本 `hasLogFile=false`,文档会明确标记上下文限制。

View File

@ -0,0 +1,302 @@
# LogError Summary
- 筛选范围:`0.7.2c``last_1_day`ERRORstatus `0,2`
- 捕获时间2026-06-02 10:51:04
- 非阻断 Issue266
- 非阻断次数9035
## 分类汇总
| 类别 | Issue 数 | 次数 | 设备数 | 代码位置 | 示例 Issue |
|---|---:|---:|---:|---|---|
| 行动执行玩家不一致 | 20 | 4209 | 883 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1113: LogSystem.LogError($"CompleteExecute Player 不一致 {ActionId.GetStringLog()}"); | 10d4df507992c1a66a90693df20b21c3, 250d1a8a1acff41c635ce86249462e21, d7e6cc2799b68c86e60f214b087d67a2 |
| 网络发送失败诊断 | 58 | 958 | 455 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1140: LogSystem.LogError($"ActionConfirm send failed, abort local execute: {ActionId.GetStringLog()}"); | dbce2880e5ad9287fcca2bf271f97622, 81a5e2896daabc7005cd79ae522de4bf, 37c3a6f1b4b5b39220ee5ed7563118bf |
| 行动同步版本/索引不一致 | 7 | 863 | 216 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetReceiver.cs:131: LogSystem.LogError($"OnReceivedActionConfirm Version 不一致"); | 4c75b2d78a859ca6b6418bd8ea9103c3, d8de4834232190d1b31e54f83f92455d, ad6a6bee84c34a853e6038146f334126 |
| AI 计算死循环保护 | 2 | 775 | 413 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:179: LogSystem.LogError($"死循环了,最终记录点为:{MainEditor.Instance.BTNodeId}");<br>Unity/Assets/Scripts\TH1_Logic\AI\AIActionBase.cs:528: LogSystem.LogError($"死循环了"); | bb81bce180d8672f500aa9f2021ec9f8, 83c5b5b46447ac4e50101f1148f4ab70 |
| P2P/大厅连接失败诊断 | 10 | 707 | 327 | Unity/Assets/Scripts\TH1_Logic\Steam\SimpleP2P.cs:479: LogSystem.LogError($"Connection failed - Reason: {endReason}"); | 01eaa6aefd9162eccc930c2450a63779, 7b5f54e17dc2f09810eaf4a23c8fbf40, bc7e88e9811a3e38d26e15577210e3d7 |
| 断线重连/ForceUpdate 诊断 | 8 | 526 | 256 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:422: public void SendRequestForceUpdate()<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:429: LogSystem.LogWarning($"客户端请求重连冷却中: SendRequestForceUpdate, remain={RequestForceUpdateCooldown - (now - _lastRequestForceUpdateTime):F1}s");<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:434: LogSystem.LogError($"客户端请求重连: SendRequestForceUpdate"); | f491e675022da1efea0d0392ab128f62, 8ea23c00bbb51e4cd7f62f25a2dde6c0, 1c750a91b04ed35e88058ba5c14be2ee |
| 相似 Action 重复诊断 | 46 | 500 | 265 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:230: if(_sameCount > 5) LogSystem.LogError($"存在相似action ,记录点为:{MainEditor.Instance.BTNodeId} ," + | e2d6a88d46dcb49a0d139cdc09cfcf60, b9356ab138b2b54e96f3db7887c3b8d0, 7f1d39e4d1ab06af2b277d2a5eeec9cf |
| MapData 序列化差异诊断 | 63 | 219 | 93 | Unity/Assets/Scripts\TH1_Data\MapData.cs:3109: differences.Add($"{name} differs (serialized data mismatch)"); | 99c0d1f01c2fd32ecadaa6d93a458b2c, e291bdb73abff89136a1ca46e1c7318f, ad7196902c3d09741b1ab6a89457727f |
| 多语言 ID 为空 | 6 | 139 | 111 | Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:176: LogSystem.LogError($"多语言ID为空");<br>Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:200: LogSystem.LogError($"多语言ID为空"); | ea2c22182f1187fccfaa5e605b3072c0, e411b59aba2e1015cd27950bef1e17e4, afec6671a017afaa004d0c956b773ca4 |
| STS/OSS 上传失败诊断 | 8 | 48 | 47 | Unity/Assets/Scripts\TH1_Logic\Oss\OssManager.cs:124: LogSystem.LogError($"CollectData upload failed: {ex.Message}"); | bc85dad1ecb800b2c83c1e13c1455a14, c8bb360bc43adb4031886d360f65d8d7, 39f1705c6be89cfc405d62a429cd3ecf |
| 其他项目诊断日志 | 9 | 34 | 9 | 未直接定位 | 0235699b0853634b6f7cf7927d01b1b6, b2f3b086bfb3ae98194da301fb16c1d3, 4b1db5b10234b3092b2adfa099ee8e69 |
| 地图反序列化/版本兼容诊断 | 8 | 15 | 14 | Unity/Assets/Scripts\TH1_Data\MapData.cs:2217: LogSystem.LogError($"地图数据反序列化失败,可能是版本不兼容: {ex.Message}");<br>Unity/Assets/Scripts\TH1_Data\MapData.cs:2582: LogSystem.LogError($"地图数据反序列化失败,可能是版本不兼容: {ex.Message}"); | 99958faf39cc5573311ea22bd5ee901d, 879342965b3e2cf8dfb3f6e6be2f3b0c, 3ed551ed5c3ec29c3205b6381c3f9aa5 |
| 结算卡住兜底诊断 | 10 | 14 | 14 | Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:328: MatchSettlementStuckGuard.CheckAndRecover(map, info, MatchSettlementType.Normal, kv.Key);<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:424: public static class MatchSettlementStuckGuard<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:484: sb.Append("[MatchSettlementStuck] 触发兜底:"); | 2fe5980bd5f6cb4805b74f93ef06653d, ea209233d60605a08ea8c8c8457e3252, 29726044126a568b1fc9716c2fad1cbd |
| 不可执行行动圈诊断 | 1 | 11 | 7 | Unity/Assets/Scripts\TH1_UI\View\Info\UIInfoCommonBaseActionCircleMono.cs:141: LogSystem.LogError($"CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :{cantType}"); | b8bbf46c799fc64adba48fa5070a2891 |
| Origin Player 为空诊断 | 4 | 7 | 7 | Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:658: LogSystem.LogError($"Origin Player is null target.id:{target.Id}");<br>Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:713: LogSystem.LogError($"RecoverHealth Origin Player is null target.id:{target.Id}"); | de0c2d2b0f202b1fc6c1854636197b23, ab1eaf7e258e9ed5ec685035d10cc688, 589373c458d67eceb1a52ffc4f2b59b8 |
| OSS/创意工坊上传失败诊断 | 2 | 3 | 3 | Unity/Assets/Scripts\TH1_Logic\Oss\OssUploadService.cs:50: $"OSS PostObject 上传失败: {request.error}, HTTP {request.responseCode}, Response: {request.downloadHandler.text}"); | 2004e1860db71825a45e9c040ee1205e, 9e004d52e5ba61a1cd8a5ba76ea3202d |
| 本机音频/显卡能力诊断 | 1 | 3 | 1 | 未直接定位 | 341bbed051698b373151b84bde7e144f |
| ForceUpdate 玩家网络映射失败 | 1 | 2 | 2 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetReceiver.cs:328: LogSystem.LogError("OnReceivedForceUpdate 玩家网络映射失败"); | 9d8525f680bdc767d1d86654d6a6b2bf |
| Shader fallback 诊断 | 1 | 1 | 1 | 未直接定位 | a028074d459066a519ffbd4807341ebd |
| 受击生命周期格子为空诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Skill\AllSkill\SatoriSeeSkill.cs:45: LogSystem.LogError($"BeforeUnitDamaged Error selfGrid : {selfGrid}, targetGrid : {targetGrid}"); | 57500e9e3290b3066f6ffc925d2d7238 |
## 明细
| Issue | 类别 | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---|---:|---:|---|---|
| [10d4df507992c1a66a90693df20b21c3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/10d4df507992c1a66a90693df20b21c3?pid=10) | 行动执行玩家不一致 | UnityLogError | 4059 | 767 | 2026-06-02 10:50:16 | CompleteExecute Player 不一致 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [bb81bce180d8672f500aa9f2021ec9f8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bb81bce180d8672f500aa9f2021ec9f8?pid=10) | AI 计算死循环保护 | UnityLogError | 635 | 312 | 2026-06-02 10:50:56 | 死循环了 |
| [9b415b4bbb546c66eba3a6b67f916d35](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9b415b4bbb546c66eba3a6b67f916d35?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 309 | 67 | 2026-06-02 10:11:39 | 应用层拒绝连接 - 错误码: 1000可能原因1.对方未创建监听套接字 2.对方主动拒绝 3.对方游戏未运行 |
| [01eaa6aefd9162eccc930c2450a63779](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/01eaa6aefd9162eccc930c2450a63779?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 299 | 234 | 2026-06-02 10:50:33 | Connection failed - Reason: 1000 |
| [4c75b2d78a859ca6b6418bd8ea9103c3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4c75b2d78a859ca6b6418bd8ea9103c3?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 290 | 69 | 2026-06-02 10:50:27 | OnReceivedActionExcute MapHash 不一致,拒绝执行 |
| [ad6a6bee84c34a853e6038146f334126](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad6a6bee84c34a853e6038146f334126?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 216 | 35 | 2026-06-02 10:27:08 | OnReceivedActionConfirm MapHash 不一致,拒绝执行 |
| [8b25a3e618ff41836a53290accc32ac4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8b25a3e618ff41836a53290accc32ac4?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 193 | 41 | 2026-06-02 10:27:08 | 房主端message.Index > Main.MapData.Net.Actions.Count |
| [f491e675022da1efea0d0392ab128f62](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f491e675022da1efea0d0392ab128f62?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 185 | 62 | 2026-06-02 10:50:28 | 客户端请求重连: SendRequestForceUpdate |
| [4de7d427f16ede45dbd3693fc3431ac3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4de7d427f16ede45dbd3693fc3431ac3?pid=10) | 网络发送失败诊断 | UnityLogError | 170 | 26 | 2026-06-02 10:38:14 | ij: 房主广播失败 |
| [83c5b5b46447ac4e50101f1148f4ab70](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/83c5b5b46447ac4e50101f1148f4ab70?pid=10) | AI 计算死循环保护 | UnityLogError | 140 | 101 | 2026-06-02 10:43:01 | 死循环了,最终记录点为:194 |
| [d8de4834232190d1b31e54f83f92455d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d8de4834232190d1b31e54f83f92455d?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 125 | 59 | 2026-06-02 10:31:11 | 成员端: message.Index > Main.MapData.Net.Actions.Count |
| [6015aabf5b375a7e2a323b4b520f7fa7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6015aabf5b375a7e2a323b4b520f7fa7?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 115 | 59 | 2026-06-02 10:10:43 | 客户端请求重连: SendRequestForceUpdate |
| [8ea23c00bbb51e4cd7f62f25a2dde6c0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8ea23c00bbb51e4cd7f62f25a2dde6c0?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 112 | 55 | 2026-06-02 10:44:08 | 客户端请求重连: SendRequestForceUpdate |
| [46e066ae0b769b9bf90484685e8f2687](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/46e066ae0b769b9bf90484685e8f2687?pid=10) | 网络发送失败诊断 | UnityLogError | 106 | 2 | 2026-06-02 09:00:13 | cwj: 发送给成员失败 memberId=76561199226609027 |
| [b9356ab138b2b54e96f3db7887c3b8d0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b9356ab138b2b54e96f3db7887c3b8d0?pid=10) | 相似 Action 重复诊断 | UnityLogError | 95 | 48 | 2026-06-02 10:32:32 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianNavigation PlayerAction : None AIParam : AllClear Tech : KomeijiIndianNavigation CultureCardType : None 重复次数 … |
| [dbce2880e5ad9287fcca2bf271f97622](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dbce2880e5ad9287fcca2bf271f97622?pid=10) | 网络发送失败诊断 | UnityLogError | 83 | 52 | 2026-06-02 10:39:37 | ij: 房主广播失败 |
| [1c750a91b04ed35e88058ba5c14be2ee](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1c750a91b04ed35e88058ba5c14be2ee?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 82 | 51 | 2026-06-02 10:44:04 | 触发断线重连, 触发原因: OK |
| [99c0d1f01c2fd32ecadaa6d93a458b2c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/99c0d1f01c2fd32ecadaa6d93a458b2c?pid=10) | MapData 序列化差异诊断 | UnityLogError | 81 | 18 | 2026-06-02 10:44:09 | |
| [37c3a6f1b4b5b39220ee5ed7563118bf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/37c3a6f1b4b5b39220ee5ed7563118bf?pid=10) | 网络发送失败诊断 | UnityLogError | 75 | 24 | 2026-06-02 10:39:35 | eop: 房主广播失败 |
| [2cb3d67ddfe0d9587abd02390f5de041](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2cb3d67ddfe0d9587abd02390f5de041?pid=10) | 网络发送失败诊断 | UnityLogError | 69 | 47 | 2026-06-02 10:39:31 | ij: 房主广播失败 |
| [ad7196902c3d09741b1ab6a89457727f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad7196902c3d09741b1ab6a89457727f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 67 | 4 | 2026-06-02 10:10:42 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].fps: 21 != 18 gor.gph[2].gpq: 5605 != 5620 got.grb.Count: 106 != 107 gou.gpd.Count: 1669 != 1670 gow… |
| [1d2092e8267a158d39aa1a040041020d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1d2092e8267a158d39aa1a040041020d?pid=10) | 网络发送失败诊断 | UnityLogError | 61 | 46 | 2026-06-02 10:39:29 | P2P broadcast preflight failed: target=76561199140125537, reason=No connection to 76561199140125537 |
| [a0830cd150cf6348c957fa17694ae9f6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a0830cd150cf6348c957fa17694ae9f6?pid=10) | 网络发送失败诊断 | UnityLogError | 56 | 32 | 2026-06-02 09:50:47 | Failed to send game invite to: 76561198041520499 |
| [81a5e2896daabc7005cd79ae522de4bf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/81a5e2896daabc7005cd79ae522de4bf?pid=10) | 网络发送失败诊断 | UnityLogError | 54 | 47 | 2026-06-02 10:39:36 | P2P broadcast preflight failed: target=76561199481856121, reason=Target is not a lobby peer: 76561199481856121 |
| [691253c2a412f07945231dd650f58213](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/691253c2a412f07945231dd650f58213?pid=10) | 多语言 ID 为空 | UnityLogError | 53 | 42 | 2026-06-02 09:31:28 | 多语言ID为空 |
| [d7a74e6e95985e97e0bbecc7de0c0f44](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d7a74e6e95985e97e0bbecc7de0c0f44?pid=10) | 网络发送失败诊断 | UnityLogError | 51 | 8 | 2026-06-02 02:30:26 | Failed to send game invite to: 76561199211883909 |
| [c3051df0699d3a433ecbef7e85411c9e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c3051df0699d3a433ecbef7e85411c9e?pid=10) | 相似 Action 重复诊断 | UnityLogError | 49 | 36 | 2026-06-02 09:40:35 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoFreeSpirit PlayerAction : None AIParam : AllClear Tech : KanakoFreeSpirit CultureCardType : None 重复次数 :7 |
| [17ad3797303c790702e726900b44d7a1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/17ad3797303c790702e726900b44d7a1?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 43 | 7 | 2026-06-02 09:00:14 | Failed to enter lobby: k_EChatRoomEnterResponseFull |
| [edcd261bfeff53e33bfe7210c87dcb57](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/edcd261bfeff53e33bfe7210c87dcb57?pid=10) | 相似 Action 重复诊断 | UnityLogError | 42 | 11 | 2026-06-02 10:12:12 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoRiding PlayerAction : None AIParam : AllClear Tech : KanakoRiding CultureCardType : None 重复次数 :6 |
| [76c4c1b1a5add246455aec813c46d59a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/76c4c1b1a5add246455aec813c46d59a?pid=10) | 相似 Action 重复诊断 | UnityLogError | 39 | 11 | 2026-06-02 08:24:56 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianRiding PlayerAction : None AIParam : AllClear Tech : KomeijiIndianRiding CultureCardType : None 重复次数 :7 |
| [ad52d9e056bfbd17f4ccb8384e5f83d9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad52d9e056bfbd17f4ccb8384e5f83d9?pid=10) | 相似 Action 重复诊断 | UnityLogError | 39 | 16 | 2026-06-02 10:12:25 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianMethematics PlayerAction : None AIParam : AllClear Tech : KomeijiIndianMethematics CultureCardType : None 重复次… |
| [d7e6cc2799b68c86e60f214b087d67a2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d7e6cc2799b68c86e60f214b087d67a2?pid=10) | 行动执行玩家不一致 | UnityLogError | 37 | 32 | 2026-06-02 10:25:46 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : SecondHero |
| [eef7fa7503168965448a647bfbe7ae65](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/eef7fa7503168965448a647bfbe7ae65?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 35 | 8 | 2026-06-02 02:15:13 | OnReceivedActionConfirm Version 不一致 |
| [c7cbea703f42ecf6f54444f481fe7465](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c7cbea703f42ecf6f54444f481fe7465?pid=10) | 行动执行玩家不一致 | UnityLogError | 33 | 20 | 2026-06-02 08:33:28 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : SecondHero |
| [60d84edf5f69d3592e1dc8aef452a038](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/60d84edf5f69d3592e1dc8aef452a038?pid=10) | 网络发送失败诊断 | UnityLogError | 32 | 32 | 2026-06-02 09:27:42 | Failed to send message to 76561198041520499: k_EResultConnectFailed |
| [e2d6a88d46dcb49a0d139cdc09cfcf60](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e2d6a88d46dcb49a0d139cdc09cfcf60?pid=10) | 相似 Action 重复诊断 | UnityLogError | 32 | 16 | 2026-06-02 10:46:20 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoSmithery PlayerAction : None AIParam : AllClear Tech : KanakoSmithery CultureCardType : None 重复次数 :6 |
| [1df80dbcaf6f1f71cbd77fff64532361](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1df80dbcaf6f1f71cbd77fff64532361?pid=10) | 网络发送失败诊断 | UnityLogError | 31 | 27 | 2026-06-02 10:38:13 | P2P broadcast preflight failed: target=76561199841273076, reason=No connection to 76561199841273076 |
| [7f6a8332378f3bf99f4514490f913b17](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7f6a8332378f3bf99f4514490f913b17?pid=10) | 相似 Action 重复诊断 | UnityLogError | 31 | 9 | 2026-06-02 08:51:11 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianSailing PlayerAction : None AIParam : AllClear Tech : KomeijiIndianSailing CultureCardType : None 重复次数 :6 |
| [e0607caeab32ce4c102dd3db17f6d498](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e0607caeab32ce4c102dd3db17f6d498?pid=10) | 网络发送失败诊断 | UnityLogError | 30 | 6 | 2026-06-01 23:29:24 | bfv: 发送给房主失败 |
| [b3b11c4905b4514323dcab8bd7d5a857](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b3b11c4905b4514323dcab8bd7d5a857?pid=10) | 行动执行玩家不一致 | UnityLogError | 26 | 16 | 2026-06-02 06:17:12 | CompleteExecute Player 不一致 Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [886fa66ed99f8ff6955fe0e47d8e2f82](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/886fa66ed99f8ff6955fe0e47d8e2f82?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 25 | 2 | 2026-06-01 17:29:23 | 未知连接失败原因: 5008 |
| [c2e29a96dac5ed12b99c32c8670a4375](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c2e29a96dac5ed12b99c32c8670a4375?pid=10) | 网络发送失败诊断 | UnityLogError | 25 | 1 | 2026-06-01 21:27:59 | ActionExecute broadcast failed, abort owner execute: Action : GridMisc Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : ClearForest Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [f5d6caefc1e5ac72cd5c21a56e3dfddb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5d6caefc1e5ac72cd5c21a56e3dfddb?pid=10) | 多语言 ID 为空 | UnityLogError | 25 | 22 | 2026-06-02 09:31:28 | 多语言ID为空 |
| [8107c16369fb00417c1682a0350ec64f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8107c16369fb00417c1682a0350ec64f?pid=10) | 相似 Action 重复诊断 | UnityLogError | 24 | 13 | 2026-06-02 09:39:07 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoChivalry PlayerAction : None AIParam : AllClear Tech : KanakoChivalry CultureCardType : None 重复次数 :6 |
| [e411b59aba2e1015cd27950bef1e17e4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e411b59aba2e1015cd27950bef1e17e4?pid=10) | 多语言 ID 为空 | UnityLogError | 22 | 14 | 2026-06-02 09:31:33 | 多语言ID为空 |
| [c11f14ad2fbd5625c5b53fb910cdba76](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c11f14ad2fbd5625c5b53fb910cdba76?pid=10) | 网络发送失败诊断 | UnityLogError | 21 | 19 | 2026-06-02 10:39:34 | P2P broadcast preflight failed: target=76561199211883909, reason=No connection to 76561199211883909 |
| [4519111d864a8906a22e97fb6b1dafde](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4519111d864a8906a22e97fb6b1dafde?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 20 | 20 | 2026-06-02 10:19:04 | CollectData upload failed: STS request failed: HTTP/1.1 403 Forbidden |
| [93509b23a954c79d835f4138bab9f3f7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/93509b23a954c79d835f4138bab9f3f7?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 19 | 19 | 2026-06-02 09:19:24 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: Steam API 请求失败(重试 2 次): Steam API 请求超时8000ms"} |
| [bc7e88e9811a3e38d26e15577210e3d7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bc7e88e9811a3e38d26e15577210e3d7?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 19 | 7 | 2026-06-02 10:27:09 | 远程超时 - 目标用户网络问题 |
| [cf8c203b0fba86738b81adabfddb6773](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cf8c203b0fba86738b81adabfddb6773?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 18 | 16 | 2026-06-02 09:40:27 | 触发断线重连, 触发原因: Error |
| [4b1db5b10234b3092b2adfa099ee8e69](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4b1db5b10234b3092b2adfa099ee8e69?pid=10) | 其他项目诊断日志 | UnityLogError | 16 | 1 | 2026-06-02 02:42:53 | AddUnitData blocked: target grid occupied. gid=122, cid=518, newUnit=Catapult/None/0, existingUnitId=585, existingUnit=Cloak/None/0, mapId=1589163 |
| [a2897449c9b8859f7fdc82ff7e1099f9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a2897449c9b8859f7fdc82ff7e1099f9?pid=10) | 多语言 ID 为空 | UnityLogError | 15 | 12 | 2026-06-02 04:26:20 | 多语言ID为空 |
| [fc2d124d395f06a7f9a3d4f88141e46e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fc2d124d395f06a7f9a3d4f88141e46e?pid=10) | 行动执行玩家不一致 | UnityLogError | 15 | 14 | 2026-06-02 10:17:41 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentForest |
| [8580a82c199b326d8623eef77b8af637](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8580a82c199b326d8623eef77b8af637?pid=10) | 相似 Action 重复诊断 | UnityLogError | 14 | 13 | 2026-06-02 08:07:19 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Aquatism PlayerAction : None AIParam : AllClear Tech : Aquatism CultureCardType : None 重复次数 :6 |
| [afec6671a017afaa004d0c956b773ca4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/afec6671a017afaa004d0c956b773ca4?pid=10) | 多语言 ID 为空 | UnityLogError | 13 | 13 | 2026-06-02 09:31:32 | 多语言ID为空 |
| [daec796293ecae6d73a5eef8f5e3707c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/daec796293ecae6d73a5eef8f5e3707c?pid=10) | 网络发送失败诊断 | UnityLogError | 13 | 8 | 2026-06-02 01:53:35 | Failed to send message to 76561199040381920: k_EResultConnectFailed |
| [250d1a8a1acff41c635ce86249462e21](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/250d1a8a1acff41c635ce86249462e21?pid=10) | 行动执行玩家不一致 | UnityLogError | 12 | 11 | 2026-06-02 10:33:05 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : ThirdHero |
| [0235699b0853634b6f7cf7927d01b1b6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0235699b0853634b6f7cf7927d01b1b6?pid=10) | 其他项目诊断日志 | UnityLogError | 11 | 1 | 2026-06-02 06:55:45 | AddUnitData blocked: target grid occupied. gid=176, cid=368, newUnit=Minder/None/0, existingUnitId=587, existingUnit=Cloak/None/0, mapId=1599374442 |
| [7f1d39e4d1ab06af2b277d2a5eeec9cf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7f1d39e4d1ab06af2b277d2a5eeec9cf?pid=10) | 相似 Action 重复诊断 | UnityLogError | 11 | 7 | 2026-06-02 10:27:08 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoRoads PlayerAction : None AIParam : AllClear Tech : KanakoRoads CultureCardType : None 重复次数 :6 |
| [b8bbf46c799fc64adba48fa5070a2891](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b8bbf46c799fc64adba48fa5070a2891?pid=10) | 不可执行行动圈诊断 | UnityLogError | 11 | 7 | 2026-06-02 09:35:35 | CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None |
| [ea2c22182f1187fccfaa5e605b3072c0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ea2c22182f1187fccfaa5e605b3072c0?pid=10) | 多语言 ID 为空 | UnityLogError | 11 | 8 | 2026-06-02 09:31:34 | 多语言ID为空 |
| [0fc9fec6c17b8d12527197dae35611d6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0fc9fec6c17b8d12527197dae35611d6?pid=10) | 相似 Action 重复诊断 | UnityLogError | 10 | 3 | 2026-06-02 05:11:07 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Roads PlayerAction : None AIParam : AllClear Tech : Roads CultureCardType : None 重复次数 :6 |
| [193d2d61f85358b92951ff088aecf11e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/193d2d61f85358b92951ff088aecf11e?pid=10) | 相似 Action 重复诊断 | UnityLogError | 10 | 2 | 2026-06-02 06:35:38 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Spiritualism PlayerAction : None AIParam : AllClear Tech : Spiritualism CultureCardType : None 重复次数 :7 |
| [5b3c6d96b848815202763b13c522f434](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5b3c6d96b848815202763b13c522f434?pid=10) | 相似 Action 重复诊断 | UnityLogError | 10 | 9 | 2026-06-02 08:19:24 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Ramming PlayerAction : None AIParam : AllClear Tech : Ramming CultureCardType : None 重复次数 :6 |
| [9e8f0e125886eb7d8915c71e359f7035](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9e8f0e125886eb7d8915c71e359f7035?pid=10) | 相似 Action 重复诊断 | UnityLogError | 10 | 3 | 2026-06-02 01:18:11 | 存在相似action ,记录点为:142 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Riding PlayerAction : None AIParam : AllClear Tech : Riding CultureCardType : None 重复次数 :6 |
| [6f9a7dfae381416b2527844f750fafc1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6f9a7dfae381416b2527844f750fafc1?pid=10) | 相似 Action 重复诊断 | UnityLogError | 9 | 9 | 2026-06-02 09:58:28 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : FreeSpirit PlayerAction : None AIParam : AllClear Tech : FreeSpirit CultureCardType : None 重复次数 :6 |
| [d0c686e60340f8c46826266c5ddd9f47](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d0c686e60340f8c46826266c5ddd9f47?pid=10) | 行动执行玩家不一致 | UnityLogError | 9 | 5 | 2026-06-02 09:25:02 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentShallow |
| [e7f8cb8e59e26d51248a4ffb8f221d97](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e7f8cb8e59e26d51248a4ffb8f221d97?pid=10) | 相似 Action 重复诊断 | UnityLogError | 8 | 2 | 2026-06-02 02:15:13 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Navigation PlayerAction : None AIParam : AllClear Tech : Navigation CultureCardType : None 重复次数 :6 |
| [7a6fa21d90f878506c719d1371bf7a07](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7a6fa21d90f878506c719d1371bf7a07?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 7 | 6 | 2026-06-02 03:53:36 | 触发断线重连, 触发原因: Leaved |
| [8f35d8d1fd8078645abcd7bd1061b0c5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8f35d8d1fd8078645abcd7bd1061b0c5?pid=10) | 相似 Action 重复诊断 | UnityLogError | 7 | 7 | 2026-06-02 07:40:48 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoPhilosophy PlayerAction : None AIParam : AllClear Tech : KanakoPhilosophy CultureCardType : None 重复次数 :6 |
| [e2a98324f7a4c57aaa59f09240f2aa14](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e2a98324f7a4c57aaa59f09240f2aa14?pid=10) | 相似 Action 重复诊断 | UnityLogError | 7 | 1 | 2026-06-02 07:44:21 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : BritishByakuren Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [683af7e6fbb1a3d4bf25311b223076bb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/683af7e6fbb1a3d4bf25311b223076bb?pid=10) | 相似 Action 重复诊断 | UnityLogError | 5 | 5 | 2026-06-02 09:50:34 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoNavigation PlayerAction : None AIParam : AllClear Tech : KanakoNavigation CultureCardType : None 重复次数 :6 |
| [a1669cc14acdfdbfbb7e4b67d8edaa17](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a1669cc14acdfdbfbb7e4b67d8edaa17?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 5 | 5 | 2026-06-01 23:22:21 | 触发断线重连, 触发原因: Timeout |
| [f14ac061b2149a6e99d386b3b392434d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f14ac061b2149a6e99d386b3b392434d?pid=10) | 相似 Action 重复诊断 | UnityLogError | 5 | 2 | 2026-06-02 05:46:37 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : GermanyAya Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [0d3c117cffe5cca3489b9158c6c5236b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0d3c117cffe5cca3489b9158c6c5236b?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-06-02 03:12:31 | fme: 发送给成员失败 memberId=76561199211883909 |
| [40b385e6956400fe315db114f30e0fb7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/40b385e6956400fe315db114f30e0fb7?pid=10) | 行动执行玩家不一致 | UnityLogError | 4 | 4 | 2026-06-02 05:56:36 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentMountain |
| [43f14319d1b258affd890dcee07175f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/43f14319d1b258affd890dcee07175f4?pid=10) | 相似 Action 重复诊断 | UnityLogError | 4 | 4 | 2026-06-02 03:02:24 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Mathematics PlayerAction : None AIParam : AllClear Tech : Mathematics CultureCardType : None 重复次数 :6 |
| [698fb570ca698169d602f9b227a34074](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/698fb570ca698169d602f9b227a34074?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-06-02 10:27:07 | P2P broadcast preflight failed: target=76561199866057583, reason=No connection to 76561199866057583 |
| [6bd22a2a6ee31e8e8e34144c082e7850](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6bd22a2a6ee31e8e8e34144c082e7850?pid=10) | 结算卡住兜底诊断 | UnityLogError | 4 | 4 | 2026-06-01 23:44:45 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=24 NetMode=Single PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=24 CityCount=8 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [75a3ccfed59a3b1e5cdff8183b987406](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/75a3ccfed59a3b1e5cdff8183b987406?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 4 | 3 | 2026-06-02 00:05:15 | Failed to create lobby: k_EResultTimeout |
| [773e5d47d6aad89edb0492504359a8c9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/773e5d47d6aad89edb0492504359a8c9?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-06-02 10:38:18 | P2P broadcast preflight failed: target=76561199211883909, reason=No connection to 76561199211883909 |
| [879342965b3e2cf8dfb3f6e6be2f3b0c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/879342965b3e2cf8dfb3f6e6be2f3b0c?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 4 | 3 | 2026-06-02 08:10:46 | 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning. |
| [8eb9ee08571dd02d30df4b986b9b9b15](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8eb9ee08571dd02d30df4b986b9b9b15?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-06-01 21:07:23 | P2P message send failed: target=0, reason=Target member is not in lobby: 0 |
| [1e23e5097f67681dbbf3a36b1a30d9ad](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1e23e5097f67681dbbf3a36b1a30d9ad?pid=10) | MapData 序列化差异诊断 | UnityLogError | 3 | 3 | 2026-06-01 21:49:23 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpw: 16 != 17 gor.gph[0].gqb.Count: 8 != 9 gor.gph[0].jio.jid[16].jig.Count: 3 != 4 gor.gph[0].jio.j… |
| [2c90fb76aec9552214914833df6a3776](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2c90fb76aec9552214914833df6a3776?pid=10) | 相似 Action 重复诊断 | UnityLogError | 3 | 3 | 2026-06-02 02:17:27 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchMokou Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [3073af8438a779606ac04d433962d5cd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3073af8438a779606ac04d433962d5cd?pid=10) | 相似 Action 重复诊断 | UnityLogError | 3 | 3 | 2026-06-02 08:05:08 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoTrade PlayerAction : None AIParam : AllClear Tech : KanakoTrade CultureCardType : None 重复次数 :7 |
| [341bbed051698b373151b84bde7e144f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/341bbed051698b373151b84bde7e144f?pid=10) | 本机音频/显卡能力诊断 | UnityLogError | 3 | 1 | 2026-06-02 02:54:36 | RenderTexture.Create failed: format unsupported for random writes - R32 SFloat (49). |
| [3781e3c243cadba4b1550cdf922b6d2e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3781e3c243cadba4b1550cdf922b6d2e?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 2 | 2026-06-02 02:05:31 | dyo: 房主广播失败 |
| [3ed551ed5c3ec29c3205b6381c3f9aa5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3ed551ed5c3ec29c3205b6381c3f9aa5?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 3 | 3 | 2026-06-02 02:45:42 | 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations. |
| [41ede517297398a59bc70bc4b37551cd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/41ede517297398a59bc70bc4b37551cd?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 3 | 2 | 2026-06-02 10:19:24 | CollectData upload failed: STS request failed: Cannot resolve destination host |
| [44325775d9be4ec4305b2ebc4cc8c20c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/44325775d9be4ec4305b2ebc4cc8c20c?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 3 | 3 | 2026-06-01 22:37:21 | 房主端message.Index < Main.MapData.Net.Actions.Count |
| [50fe0e473c1fd9ee31d2aa194443b59e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/50fe0e473c1fd9ee31d2aa194443b59e?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-02 02:14:28 | P2P broadcast preflight failed: target=76561198301249146, reason=No connection to 76561198301249146 |
| [61179b905f0719752d39947d6e801de7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/61179b905f0719752d39947d6e801de7?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-01 23:01:12 | dyo: 房主广播失败 |
| [79b846fa5c6d9ecf2ee6e9dc931a3d05](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/79b846fa5c6d9ecf2ee6e9dc931a3d05?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 2 | 2026-06-01 21:46:32 | ActionExecute broadcast failed, abort owner execute: Action : CityLevelUpAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : Expand GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [9043dd945e4b0289ae7aa38939ee3105](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9043dd945e4b0289ae7aa38939ee3105?pid=10) | 相似 Action 重复诊断 | UnityLogError | 3 | 2 | 2026-06-02 03:07:23 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchTewi Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [a2ef12b1ee1a74022509f9d18067a863](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a2ef12b1ee1a74022509f9d18067a863?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 3 | 2 | 2026-06-01 23:06:19 | Failed to enter lobby: k_EChatRoomEnterResponseError |
| [b077bae2896d3af9bd09e6b4f64e81ec](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b077bae2896d3af9bd09e6b4f64e81ec?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-02 10:27:07 | dyo: 房主广播失败 |
| [c01e176659cfee5baba883ae144f3620](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c01e176659cfee5baba883ae144f3620?pid=10) | 相似 Action 重复诊断 | UnityLogError | 3 | 3 | 2026-06-02 08:04:39 | 存在相似action ,记录点为:18 ,Action为:Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : SecondHero 重复次数 :1 |
| [cf2eb96359369cc1db5a70e5e2b219b1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cf2eb96359369cc1db5a70e5e2b219b1?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-02 02:47:59 | dyo: 房主广播失败 |
| [de0c2d2b0f202b1fc6c1854636197b23](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/de0c2d2b0f202b1fc6c1854636197b23?pid=10) | Origin Player 为空诊断 | UnityLogError | 3 | 3 | 2026-06-02 10:23:41 | Origin Player is null target.id:360 |
| [e139e615cb7de95a6f55d1391aaa7410](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e139e615cb7de95a6f55d1391aaa7410?pid=10) | 相似 Action 重复诊断 | UnityLogError | 3 | 3 | 2026-06-02 06:09:21 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Chivalry PlayerAction : None AIParam : AllClear Tech : Chivalry CultureCardType : None 重复次数 :6 |
| [ef6af01bde7f25d4d8e4b961893178c1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ef6af01bde7f25d4d8e4b961893178c1?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 3 | 3 | 2026-06-02 00:32:37 | 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations. |
| [f2f7b0d765f02f220afa323e5b952b13](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f2f7b0d765f02f220afa323e5b952b13?pid=10) | MapData 序列化差异诊断 | UnityLogError | 3 | 3 | 2026-06-01 22:26:21 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[520].gnl.Count: 1 != 2 gor.gph[2].gpw: 34 != 35 gor.gph[2].g… |
| [f3987f573fe7f08021e2cc7fa7f6b737](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f3987f573fe7f08021e2cc7fa7f6b737?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-02 03:12:31 | P2P message send failed: target=76561199526358242, reason=Target member is not in lobby: 76561199526358242 |
| [034cfe80d745e3c9774d27e82ff3a0f3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/034cfe80d745e3c9774d27e82ff3a0f3?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-02 10:38:25 | ActionExecute broadcast failed, abort owner execute: Action : UnitMove Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [0a378c585b18c98458a488aa2dd6e83b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0a378c585b18c98458a488aa2dd6e83b?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-06-01 20:09:18 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) CityToPlayerDict differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs … |
| [0fa4c1abdd227c1c0901d15140fdca45](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0fa4c1abdd227c1c0901d15140fdca45?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-06-02 05:53:15 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gqb.Count: 2 != 3 gor.gph[2].gqb.Count: 4 != 5 got.grb[35].fwi: 10 != 3 got.grb[35].kfk.Count: 1 != 0 got.grb[35].gqz.Count: 11 != 12 got.grb[35].gqz[… |
| [18881ca550f30dcd6389af3fec2d7699](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/18881ca550f30dcd6389af3fec2d7699?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-02 02:47:59 | ActionExecute broadcast failed, abort owner execute: Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [1de81d5299ca7c580b2188fae37d6b85](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1de81d5299ca7c580b2188fae37d6b85?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 22:28:09 | dyo: 房主广播失败 |
| [2155cbc9cb2baf0262737433bbc6e38f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2155cbc9cb2baf0262737433bbc6e38f?pid=10) | 相似 Action 重复诊断 | UnityLogError | 2 | 2 | 2026-06-02 07:31:01 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianArchery PlayerAction : None AIParam : AllClear Tech : KomeijiIndianArchery CultureCardType : None 重复次数 :6 |
| [39f1705c6be89cfc405d62a429cd3ecf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/39f1705c6be89cfc405d62a429cd3ecf?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 2 | 2 | 2026-06-02 10:40:35 | STS request failed: Cannot resolve destination host, Response: |
| [4e3d34adfbf230fd950555e4bdb181c6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4e3d34adfbf230fd950555e4bdb181c6?pid=10) | 相似 Action 重复诊断 | UnityLogError | 2 | 2 | 2026-06-02 02:49:24 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Trade PlayerAction : None AIParam : AllClear Tech : Trade CultureCardType : None 重复次数 :6 |
| [4ead7c53428772d3e2104f3e2d46022e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4ead7c53428772d3e2104f3e2d46022e?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-02 00:28:24 | fme: 发送给成员失败 memberId=76561199197364272 |
| [50119431f45750d343ff2c70de7250b5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/50119431f45750d343ff2c70de7250b5?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-06-02 03:53:19 | CompleteExecute Player 不一致 Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [52462b09c717e6f28d4662656683c73b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/52462b09c717e6f28d4662656683c73b?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-06-02 03:53:36 | got.grb[7].gqz[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[7].gqz[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[7].gqz[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. |
| [589373c458d67eceb1a52ffc4f2b59b8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/589373c458d67eceb1a52ffc4f2b59b8?pid=10) | Origin Player 为空诊断 | UnityLogError | 2 | 2 | 2026-06-02 09:14:33 | Origin Player is null target.id:518 |
| [6ee31c38052e7317d1a8272de7d3017a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6ee31c38052e7317d1a8272de7d3017a?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-06-02 00:22:21 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[64].gni: Metal != Mine goq.gnc[64].gnk: None != Metal gor.gph[0].fps: 1 != 777777777 gor.gph[0].gpq: 815 != 865 gor.gph[0].gpt.gqh.Count: 0 != 1 gos.gmm[0].gmq:… |
| [76d11ab2660e25809c01e3d96b2c754f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/76d11ab2660e25809c01e3d96b2c754f?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 21:43:10 | P2P message send failed: target=76561199226609027, reason=Not in lobby |
| [791d4ca1ba424779c33a51ac2a073c8c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/791d4ca1ba424779c33a51ac2a073c8c?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 2 | 2 | 2026-06-02 04:45:29 | 触发断线重连, 触发原因: Disconnected |
| [7a429d2f62a67d85c0463e7044115a28](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7a429d2f62a67d85c0463e7044115a28?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-02 00:28:24 | P2P message send failed: target=76561199364945694, reason=Target member is not in lobby: 76561199364945694 |
| [7b5f54e17dc2f09810eaf4a23c8fbf40](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7b5f54e17dc2f09810eaf4a23c8fbf40?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 2 | 2 | 2026-06-02 10:40:36 | 连接超时 - 可能的原因1.目标用户不在线 2.网络问题 3.防火墙阻止 |
| [87a6329f9316e72c1c9c5f474b977471](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/87a6329f9316e72c1c9c5f474b977471?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-06-02 08:33:12 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) gor.gph[0].gpq: 2380 != 2680 gor.gph[0].gps.gqj.Count: 7 != 8 gou.gpd.Count: 168 != 169 |
| [905cd0a686862f7ef61ada740bdeebb8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/905cd0a686862f7ef61ada740bdeebb8?pid=10) | MapData 序列化差异诊断 | UnityLogError | 2 | 2 | 2026-06-02 02:35:22 | got.grb[30].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[30].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[30].jom[0].jpz[2].Item: reflection error - Number of parameters specified does not match the expected number. got.g… |
| [9bee5c48b8f6a2c0247259901eb430dd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9bee5c48b8f6a2c0247259901eb430dd?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 2 | 2 | 2026-06-02 01:33:47 | Failed to refresh lobby data before joining: 109775242361674222 |
| [9d8525f680bdc767d1d86654d6a6b2bf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9d8525f680bdc767d1d86654d6a6b2bf?pid=10) | ForceUpdate 玩家网络映射失败 | UnityLogError | 2 | 2 | 2026-06-01 21:34:30 | OnReceivedForceUpdate 玩家网络映射失败 |
| [9e004d52e5ba61a1cd8a5ba76ea3202d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9e004d52e5ba61a1cd8a5ba76ea3202d?pid=10) | OSS/创意工坊上传失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 23:29:28 | OSS PostObject 上传失败: Request timeout, HTTP 0, Response: |
| [a0e37aa641e65872faadaebad6187c91](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a0e37aa641e65872faadaebad6187c91?pid=10) | 相似 Action 重复诊断 | UnityLogError | 2 | 2 | 2026-06-02 06:59:43 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KanakoMining PlayerAction : None AIParam : AllClear Tech : KanakoMining CultureCardType : None 重复次数 :6 |
| [a5cf4a112ad2857bf6aa9fdaca54e1dd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a5cf4a112ad2857bf6aa9fdaca54e1dd?pid=10) | 结算卡住兜底诊断 | UnityLogError | 2 | 2 | 2026-06-02 09:27:20 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=123 Turn=25 NetMode=Multi PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=26 CityCount=4 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [a5f3b19aed3ce29ef71c3c613868573e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a5f3b19aed3ce29ef71c3c613868573e?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 20:01:27 | P2P message send failed: target=76561199030260664, reason=Drop queued P2P messages for non-lobby peer: 76561199030260664 |
| [b49644a24a466f956045d2bcbb75f449](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b49644a24a466f956045d2bcbb75f449?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 22:28:09 | ActionExecute broadcast failed, abort owner execute: Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [b6268405e423097fce87050da2cc675d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b6268405e423097fce87050da2cc675d?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-06-02 08:36:16 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : AdvancedHeroEnhance |
| [c1fac556b3209f47572e74e6d7f0ab64](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c1fac556b3209f47572e74e6d7f0ab64?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 22:28:09 | P2P broadcast preflight failed: target=76561199489395727, reason=No connection to 76561199489395727 |
| [c2daa8b71f370b978be659cda9e902bb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c2daa8b71f370b978be659cda9e902bb?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-01 23:29:24 | P2P message send failed: target=76561198335928045, reason=No connection to 76561198335928045 |
| [c62525a73e2a6202ed8c50e256b95aff](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c62525a73e2a6202ed8c50e256b95aff?pid=10) | 相似 Action 重复诊断 | UnityLogError | 2 | 2 | 2026-06-02 01:55:42 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : GermanySuwako Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [cdf7ee24424388a30f7e343d1a6a9a25](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cdf7ee24424388a30f7e343d1a6a9a25?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-02 00:28:28 | fme: 发送给成员失败 memberId=76561199197364272 |
| [f4563635cbea9b4a9393e863e268bae3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f4563635cbea9b4a9393e863e268bae3?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 1 | 2026-06-01 22:26:08 | P2P broadcast preflight failed: target=76561199509606225, reason=No connection to 76561199509606225 |
| [016d17abc7fece1335eb4f51e4243630](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/016d17abc7fece1335eb4f51e4243630?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 05:20:34 | P2P broadcast preflight failed: target=76561199221042595, reason=No connection to 76561199221042595 |
| [053057fb82582b3a7050023d2ee4ddc1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/053057fb82582b3a7050023d2ee4ddc1?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:08:58 | GridMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[157].gnl.Count: 1 != 2 got.grb[1].fwi: 24 != 20 got.grb[1].gqz.Count: 14 != 15 got.grb[1].gqz[13]: type mismatch (bfn vs fzn) gou.gpd.Count: 2683 != 2682 |
| [057ef2b408764457863b43defadf1af7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/057ef2b408764457863b43defadf1af7?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:26:20 | got.grb[4].gqz[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[4].gqz[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. gou.gpd.Count: 215 != 214 |
| [0939de0a9c0b3ee8fb9c7e5b34c4fe9b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0939de0a9c0b3ee8fb9c7e5b34c4fe9b?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:17:30 | 存在相似action ,记录点为:30 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchTewi Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : SelectHero AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [0ab8f713ebd63c31fc6e7d47a8b187e8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0ab8f713ebd63c31fc6e7d47a8b187e8?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:34:46 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[0].gpq: 3665 != 3695 gos.gmm[9].gmq: 4 != 5 gos.gmm[9].gmr: 4 != 0 gos.gmm[9].gmx: False != True got.grb[26].gqz[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expec… |
| [0c18d4d62d41cbbca18a4edf54e4dd59](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0c18d4d62d41cbbca18a4edf54e4dd59?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:09:39 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[0].fps: 33 != 38 gor.gph[0].gpq: 4965 != 5050 gor.gph[0].gpr.gqi.Count: 169 != 179 gos.gmm[19].gmq: 3 != 4 gos.gmm[19].gmr: 3 != 0 gos.gmm[19].gna: 1 != 0 got.grb[2].jom[0].jpz[0].Item: reflection error … |
| [0cb4b0db462d1610c11fe1d5444a01d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0cb4b0db462d1610c11fe1d5444a01d?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-02 07:58:50 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Construction PlayerAction : None AIParam : AllClear Tech : Construction CultureCardType : None 重复次数 :6 |
| [107abe1efb00c8f713af9d2750b13da9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/107abe1efb00c8f713af9d2750b13da9?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 20:01:35 | epn: 发送给房主失败 |
| [12ed0f69fca856ef427fdcf7af6604ad](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/12ed0f69fca856ef427fdcf7af6604ad?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:56:04 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[231].gni: None != Windmill goq.gnc[231].gno: 0 != 1 gor.gph[4].fps: 38 != 7 gor.gph[4].gpq: 7455 != 8060 gor.gph[4].gps.gqj.Count: 21 != 23 gor.gph[4].gpt.gqh.C… |
| [150b5bb75bb87e21302412db50b03699](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/150b5bb75bb87e21302412db50b03699?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 00:26:21 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[0].gpq: 7805 != 7815 gor.gph[0].gpu.gqm[0].gqo: NoDiplomacy != Neutral gor.gph[0].gpu.gqm[7].gqo: NoDiplomacy != Neutral gor.gph[0].gpu.gqm[9].gqp: 15 != 0 gor.gph[0].gpu.gqm[9].gqq: Suspicion != Terribl… |
| [169c57caae3618454fd2d6a29cd2f0a9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/169c57caae3618454fd2d6a29cd2f0a9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:03:29 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 45 != 42 gor.gph[0].gpw: 32 != 33 gor.gph[0].gqb.Count: 2 != 4 got.grb[4].gqz[13]: type mismatch (fzn vs bfn) gou.gpd.Count: 1663 != 1665 |
| [18691faf23fa35f39e1cf5d765516a5a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/18691faf23fa35f39e1cf5d765516a5a?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:28:01 | dyo: 房主广播失败 |
| [18a2efd630e569ef1b4ebb749381aac5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/18a2efd630e569ef1b4ebb749381aac5?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 08:32:07 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpq: 9315 != 9335 gor.gph[0].gpr.gqi.Count: 168 != 172 gou.gpd.Count: 4656 != 4657 |
| [1bc4d63d3b5feb69fb2834615eba64c8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1bc4d63d3b5feb69fb2834615eba64c8?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:28:01 | ActionExecute broadcast failed, abort owner execute: Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Aquatism PlayerAction : None AIParam : AllClear Tech : Aquatism CultureCardType : None |
| [1e50ff3ab5d5d6f9a383b00f48ee10af](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1e50ff3ab5d5d6f9a383b00f48ee10af?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:40:28 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[2].fps: 5 != 0 gor.gph[2].gpq: 2450 != 2405 gos.gmm[5].gmq: 5 != 4 gos.gmm[5].gmr: 4 != 5 gos.gmm[5].gna: 0 != 1 got.grb[9].gqz[0].jpz[0].Item: reflection error - Number of parameters specified does not … |
| [1e6f83a8e64cb3ab72783afa45a3fbfa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1e6f83a8e64cb3ab72783afa45a3fbfa?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 19:42:20 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : IndianSatori Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [2004e1860db71825a45e9c040ee1205e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2004e1860db71825a45e9c040ee1205e?pid=10) | OSS/创意工坊上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 01:03:21 | OSS PostObject 上传失败: Cannot resolve destination host, HTTP 0, Response: |
| [2316ecd3908f899fcb262b8509c51627](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2316ecd3908f899fcb262b8509c51627?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:08:59 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[2].fps: 15 != 10 gor.gph[2].gpq: 4150 != 4105 gos.gmm[9].gmq: 5 != 4 gos.gmm[9].gmr: 4 != 5 gos.gmm[9].gna: 0 != 1 gou.gpd.Count: 701 != 699 |
| [243770b240cacb8e250ca6b27f573a49](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/243770b240cacb8e250ca6b27f573a49?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 00:13:45 | UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) got.grb[51].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[51].jom[0].jpz[1].Item: reflection error - Number of parameters specified does not match the expected number. got.grb[51].jom[0].jpz[2].Item… |
| [2465214ff36afcb1c31f2297c009be7f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2465214ff36afcb1c31f2297c009be7f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 00:09:53 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpw: 12 != 13 gor.gph[0].gqb.Count: 10 != 11 gor.gph[1].gpq: 4060 != 4050 gor.gph[1].gqb.Count: 12 !… |
| [274139e5c384da1e4e889daf775bbd24](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/274139e5c384da1e4e889daf775bbd24?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:44:29 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=26 NetMode=Multi PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=26 CityCount=9 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [29726044126a568b1fc9716c2fad1cbd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/29726044126a568b1fc9716c2fad1cbd?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:27:20 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=198 Turn=21 NetMode=Multi PlayerCount=2 Player Id=197 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=21 CityCount=8 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [2bfeeee92a4e4c0d6f5f7aa3cdfc497d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2bfeeee92a4e4c0d6f5f7aa3cdfc497d?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:55:46 | gou.gpd.Count: 3717 != 3687 |
| [2c80a08593d1d79d0f9f6d9ef7a2ec77](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2c80a08593d1d79d0f9f6d9ef7a2ec77?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:21:27 | CollectData upload failed: STS request failed: Request timeout |
| [2d0bbabbf9621ffea27a1911c9422767](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2d0bbabbf9621ffea27a1911c9422767?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:42:17 | P2P broadcast preflight failed: target=76561197989899016, reason=Connection to 76561197989899016 is not active for queueing. State: k_ESteamNetworkingConnectionState_ClosedByPeer |
| [2d721c42b89b3b897cb9eeeb4ce02f06](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2d721c42b89b3b897cb9eeeb4ce02f06?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:28:21 | ActionExecute broadcast failed, abort owner execute: Action : PlayerSurrender Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [2fe5980bd5f6cb4805b74f93ef06653d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2fe5980bd5f6cb4805b74f93ef06653d?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:59:41 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=326 Turn=24 NetMode=Multi PlayerCount=3 Player Id=325 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=25 CityCount=7 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [2fe84e0968f6b04080492b95951174b7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2fe84e0968f6b04080492b95951174b7?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 20:22:33 | UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gou.gpd.Count: 1175 != 1174 |
| [3254094a7c0e12bc421633559916ba63](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3254094a7c0e12bc421633559916ba63?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 03:38:16 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[135].gnl.Count: 2 != 3 gor.gph[0].gpw: 24 != 25 gor.gph[0].g… |
| [32d4925a40f9db0fb7d2b098c38b2845](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/32d4925a40f9db0fb7d2b098c38b2845?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-02 01:00:21 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Warrior Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [331a81e1bd88c8f2b164e455c7299715](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/331a81e1bd88c8f2b164e455c7299715?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:27:11 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].gpv: 0 != 3 gor.gph[2].gqe: True != False gor.gph[3].gpi: 2 != 3 gor.gph[3].fps: 4 != 3 gor.gph[3].gpq: 775 != 1090 gor.gph[3].gpr.gqi.Count: 32 != 35… |
| [34d36e5daf08bcbfbfde8946192bd768](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/34d36e5daf08bcbfbfde8946192bd768?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 10:27:09 | ActionExecute broadcast failed, abort owner execute: Action : GridMisc Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : Destroy Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [378434af7c2f55f4ffb8ec2a9f287b4c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/378434af7c2f55f4ffb8ec2a9f287b4c?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 20:34:31 | 存在相似action ,记录点为:716 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Strategy PlayerAction : None AIParam : AllClear Tech : Strategy CultureCardType : None 重复次数 :7 |
| [37f25cc98990dc68e3ff203ac9ca4916](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/37f25cc98990dc68e3ff203ac9ca4916?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-02 00:49:12 | AddUnitData blocked: target grid occupied. gid=104, cid=359, newUnit=Cloak/None/0, existingUnitId=462, existingUnit=Cloak/None/0, mapId=1178655086 |
| [3b3df7c46086bfe4e95a9d425dd5970f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3b3df7c46086bfe4e95a9d425dd5970f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:53:46 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[2].fps: 20 != 15 gor.gph[2].gpq: 3635 != 3600 gor.gph[2].jio.jid[22].jif: True != False gor.gph[2].jio.jid[22].kew: 1 != 0 gos.gmm[18].gmq: 4 != 3 gos.gmm[18].gmr: 0 != 3 gos.gmm[18].gmy: True != False g… |
| [3b57b3da955504db4dd9cbfcab8bdadb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3b57b3da955504db4dd9cbfcab8bdadb?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-02 07:23:12 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : IndianRin Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :7 |
| [3dabcad606c1feba717d3236c7c89da0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3dabcad606c1feba717d3236c7c89da0?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:29:20 | 地图数据反序列化失败,可能是版本不兼容: Length header size is larger than buffer size, length: 201326592. |
| [3f7acd62a44f7eb3e259181d5a063d04](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3f7acd62a44f7eb3e259181d5a063d04?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 1 | 1 | 2026-06-01 21:44:52 | 房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData) |
| [40305eaa5534e7b848986ce7aea78110](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/40305eaa5534e7b848986ce7aea78110?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 20:20:17 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Mining PlayerAction : None AIParam : AllClear Tech : Mining CultureCardType : None 重复次数 :6 |
| [407d6298c3aae233f526e40b028a3826](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/407d6298c3aae233f526e40b028a3826?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:26:08 | ActionExecute broadcast failed, abort owner execute: Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [41cfe52bca30053ec5f8e9e3354f5f36](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/41cfe52bca30053ec5f8e9e3354f5f36?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-01 23:24:00 | RenderingCommandBuffer: shader Hidden/Universal/CoreBlit: invalid pass index 23 in DrawProcedural |
| [42d6b47d8a74bf373ade1533f107cfc8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/42d6b47d8a74bf373ade1533f107cfc8?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:21:23 | STS request failed: Request timeout, Response: |
| [43893b3963f34772559fb784d4e089b9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/43893b3963f34772559fb784d4e089b9?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:28:01 | P2P broadcast preflight failed: target=76561199748189579, reason=No connection to 76561199748189579 |
| [478f89742cef27060c8ae48a4841f0eb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/478f89742cef27060c8ae48a4841f0eb?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 00:54:41 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[745].gni: Forge != None goq.gnc[745].gno: 2 != 0 gor.gph[1].fps: 1 != 6 gor.gph[1].gpq: 2420 != 2365 gos.gmm[18].gmq: 4 != 3 gos.gmm[18].gmr: 1 != 0 gos.gmm[18]… |
| [47b901f167c15f9be3547573d7266736](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/47b901f167c15f9be3547573d7266736?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-02 03:57:11 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : AdvancedEconomyEnhance |
| [488bf90a1941834d1dce5cc782faec89](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/488bf90a1941834d1dce5cc782faec89?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 03:13:26 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 777777781 != 777777777 gor.gph[0].gpq: 865 != 915 gor.gph[0].gpr.gqi.Count: 25 != 33 gor.gph[0]… |
| [4c7836a488c94db87f294a0e89b556ff](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4c7836a488c94db87f294a0e89b556ff?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:09:17 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[565].gnl.Count: 0 != 1 gor.gph[2].gpq: 2775 != 2790 gor.gph[… |
| [4e5577b8620259d901db838dedfd5262](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4e5577b8620259d901db838dedfd5262?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:21:23 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=14 NetMode=Single PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=14 CityCount=6 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSuc… |
| [4f5545a1638cac79f5067beb3876ae4c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4f5545a1638cac79f5067beb3876ae4c?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:38:27 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : FrenchReisen Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [500aba23dbb4416764ebd69227ab3b12](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/500aba23dbb4416764ebd69227ab3b12?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:10:33 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[3].gni: Animal != None gor.gph[0].gpq: 1235 != 1290 gor.gph[… |
| [506a15b69a3bd51cbd5e19db9cdc58b0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/506a15b69a3bd51cbd5e19db9cdc58b0?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:47:37 | 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning. |
| [57500e9e3290b3066f6ffc925d2d7238](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/57500e9e3290b3066f6ffc925d2d7238?pid=10) | 受击生命周期格子为空诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:17:09 | BeforeUnitDamaged Error selfGrid : bsr, targetGrid : |
| [5b43fb939ee15af71b061baef0fdfaa1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5b43fb939ee15af71b061baef0fdfaa1?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:25:40 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Farming PlayerAction : None AIParam : AllClear Tech : Farming CultureCardType : None 重复次数 :6 |
| [5f2294e63d9d4a8a8d15f5fdc25b5cb2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5f2294e63d9d4a8a8d15f5fdc25b5cb2?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-02 05:32:17 | CompleteExecute Player 不一致 Action : Build Wonder : None Resource : LumberHut Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [624cac1b8518b0381fe9b293c76bcace](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/624cac1b8518b0381fe9b293c76bcace?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:05:31 | P2P broadcast preflight failed: target=76561199395792272, reason=Target is not a lobby peer: 76561199395792272 |
| [65b06fbb438780b70bdb76c45f529d9c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/65b06fbb438780b70bdb76c45f529d9c?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 03:26:33 | P2P message send failed: target=76561199030260664, reason=Queued P2P message dropped because connection is not active: state=k_ESteamNetworkingConnectionState_ClosedByPeer, messageId: 0, chunk: 1/1 |
| [6726be43071cc1b5642ba280268ed465](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6726be43071cc1b5642ba280268ed465?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:51:02 | GridMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[405].gnl.Count: 1 != 0 got.grb[4].fwi: 20 != 24 got.grb[4].gqz.Count: 14 != 13 got.grb[4].gqz[12]: type mismatch (fzn vs bfn) gou.gpd.Count: 1146 != 1147 |
| [68b2d6d9e5c0e2c2af6da9dfb018deff](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/68b2d6d9e5c0e2c2af6da9dfb018deff?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:27:27 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[2].gpv: 0 != 1 gor.gph[2].gqe: True != False gor.gph[3].gpi: 5 != 6 gor.gph[3].fps: 0 != 9 gor.gph[3].gpu.gqm[1].gqo: War != Neutral gor.gph[3].gpz[3]: 2 != 1 gor.gph[3].gqa.Count: 5 != 6 gor.gph[3].gqc.… |
| [6dfe783e1262151aaa8989ab8b12c2f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6dfe783e1262151aaa8989ab8b12c2f4?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:31:50 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : NorwayReimu Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [71bf68dc805d45a68885ae8fd296caf9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/71bf68dc805d45a68885ae8fd296caf9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 01:34:36 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].gpw: 27 != 26 gor.gph[2].gqb.Count: 15 != 14 gor.gph[2].jio.jid[16].jih.Count: 1 != 0 gor.gph[2].jio… |
| [72ab090656030e72d75c167c719589ad](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/72ab090656030e72d75c167c719589ad?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-01 23:26:30 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : KomeijiIndianArcher Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [736b76f612c90176d984722fdbfdb5b7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/736b76f612c90176d984722fdbfdb5b7?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 20:36:08 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KaguyaConstruction PlayerAction : None AIParam : AllClear Tech : KaguyaConstruction CultureCardType : None 重复次数 :6 |
| [77f4d3c3221f15b63042010a7aa6ab76](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/77f4d3c3221f15b63042010a7aa6ab76?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:06:40 | 地图数据反序列化失败,可能是版本不兼容: eab property count is 19 but binary's header maked as 21, can't deserialize about versioning. |
| [813f3c196bd9ecb3f213d7ac04fb8fd9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/813f3c196bd9ecb3f213d7ac04fb8fd9?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 07:08:33 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[201].gni: Wonder != None goq.gnc[201].gnj: EgyptianRemiliaWEALTH != EgyptianRemiliaPEACE gor.gph[1].gpq: 11230 != 10790 gor.gph[1].gpu.gqm[2].gqp: 35 != 40 gor.… |
| [8467630975f1d53d7e757b6450d89999](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8467630975f1d53d7e757b6450d89999?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:04:17 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gqb.Count: 3 != 4 gor.gph[2].gpu.gqm[2].gqp: 80 != 65 gor.gph[2].gpu.gqm[2].gqr.Count: 2 != 3 gor.gph[2].gpu.gqm[2].gqr[0]: Peaceful != Foolish gor.gp… |
| [8907dd5ff47a362f2e35031c7ec08faa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8907dd5ff47a362f2e35031c7ec08faa?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:21:47 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=23 NetMode=Multi PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=23 CityCount=6 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucc… |
| [8a01152efadcf8977cd49d9f39e10077](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8a01152efadcf8977cd49d9f39e10077?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:05:30 | ActionExecute broadcast failed, abort owner execute: Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [8ab5f9fb28f24515e78e882986a0774c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8ab5f9fb28f24515e78e882986a0774c?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:09:43 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) gor.gph[1].gpq: 11175 != 11070 gos.gmm[1].gmo.gnb.Count: 13 != 9 gos.gmm[1].gmq: 6 != 5 gos.gmm[1].gmr: 1 != 6 got.grb[16].gqz[1].jpz[0].Item: reflection error - Number of parameters specified does not match the… |
| [8b3ee2ef2603960433c01c80fe20b398](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8b3ee2ef2603960433c01c80fe20b398?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:26:14 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[56].gnl.Count: 1 != 0 gor.gph[1].gpw: 17 != 16 gor.gph[1].gq… |
| [8dee5a028588c30aa11a92ed01361d50](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8dee5a028588c30aa11a92ed01361d50?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-01 22:36:10 | UpdateNextPlayer Error : PlayerDataList Alive Count = 0!!! |
| [8e0b937600f25dc9ddb015f7f5789d83](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8e0b937600f25dc9ddb015f7f5789d83?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 01:44:41 | UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) got.grb.Count: 55 != 56 gou.gpd.Count: 1502 != 1503 gow.Count: 55 != 56 gox.Count: 55 != 56 |
| [8e7ee8b6b5234dac76123045123d93d3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8e7ee8b6b5234dac76123045123d93d3?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 03:51:25 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gpq: 2260 != 2270 gor.gph[1].gpu.gqm[6].gqp: 80 != 65 gor.gph[1].gpu.gqm[6].gqr.Count: 2 != 1 gor.gp… |
| [8f267b2f5c50f93b544af8886fe61db8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8f267b2f5c50f93b544af8886fe61db8?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-01 23:03:33 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentDeepSea |
| [910f0b916a6c6637f8eb65f443e5a7f6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/910f0b916a6c6637f8eb65f443e5a7f6?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:16:30 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[0].gpv: 0 != 1 gor.gph[0].gqe: True != False gor.gph[1].gpi: 16 != 17 gor.gph[1].fps: 6 != 15 gor.gph[1].gqb.Count: 2 != 0 gor.gph[1].gqc.Count: 5 != 2 gor.gph[1].gqe: False != True gor.gph[1].jio.jid[16… |
| [9230d794163fb4ceeb84632bb8f65053](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9230d794163fb4ceeb84632bb8f65053?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 03:15:06 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 777777811 != 777777777 gor.gph[0].gpu.gqm[11].gqr.Count: 5 != 4 gor.gph[0].gpu.gqm[11].gqr[3]: … |
| [935640bc3320e1f2309d7734a2183a3e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/935640bc3320e1f2309d7734a2183a3e?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:29:30 | P2P connection error: Ordered P2P message gap timed out from 76561199364945694 |
| [95aabdb7f346efa423a7b082878dd636](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/95aabdb7f346efa423a7b082878dd636?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:12:19 | 存在相似action ,记录点为:771 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Organization PlayerAction : None AIParam : AllClear Tech : Organization CultureCardType : None 重复次数 :6 |
| [99958faf39cc5573311ea22bd5ee901d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/99958faf39cc5573311ea22bd5ee901d?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:59:41 | 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning. |
| [9b741a158ad3946e41599313dbea7a2f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9b741a158ad3946e41599313dbea7a2f?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-02 08:06:47 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : PersianMiko Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [9bdd7ded0a12f17a10bb7a18ba6d0547](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9bdd7ded0a12f17a10bb7a18ba6d0547?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:15:35 | P2P broadcast preflight failed: target=76561199746741916, reason=Target is not a lobby peer: 76561199746741916 |
| [9c97ea379fd9f3b95e8f758b307e4997](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9c97ea379fd9f3b95e8f758b307e4997?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-02 03:19:06 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianChivalry PlayerAction : None AIParam : AllClear Tech : KomeijiIndianChivalry CultureCardType : None 重复次数 :6 |
| [9fcb34a345ff175a560d15a1512b3603](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9fcb34a345ff175a560d15a1512b3603?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-01 20:36:22 | AddUnitData blocked: target grid occupied. gid=619, cid=918, newUnit=MoriyaRider/None/0, existingUnitId=1369, existingUnit=Cloak/None/0, mapId=3047782648 |
| [a028074d459066a519ffbd4807341ebd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a028074d459066a519ffbd4807341ebd?pid=10) | Shader fallback 诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:23:28 | An error occurred with the replacement pass "<Unnamed Pass 0>" from the shader "Hidden/InternalErrorShader". The built-in corresponding shader pass has been used as a fallback. |
| [a2e470eb7356afc0d3d08dfe4217631f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a2e470eb7356afc0d3d08dfe4217631f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:38:13 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) goq.gnc[496].gni: Animal != None gor.gph[5].fps: 7 != 0 gor.gph[5].gpq: 615 != 720 gor.gph[5].gps.gqj.Count: 2 != 3 gor.gph[5… |
| [a4b9850f4fff9fc2e741d86c2bf5f8a5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a4b9850f4fff9fc2e741d86c2bf5f8a5?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-02 09:00:13 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentPlain |
| [a74e191b1f09a95ff60ea5021a42a8cb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a74e191b1f09a95ff60ea5021a42a8cb?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 19:04:34 | UnitMap differs (serialized data mismatch) got.grb[2].kfk.Count: 1 != 0 got.grb[2].gqz.Count: 4 != 5 got.grb[2].gqz[0].jpz.Count: 0 != 3 gou.gpd.Count: 4 != 5 |
| [a8bc47d986e78a5610405d77211bed15](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a8bc47d986e78a5610405d77211bed15?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:05:31 | ActionExecute broadcast failed, abort owner execute: Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Catapult Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [a9fe7d5cac59e54371ec6576bbf4cf7d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a9fe7d5cac59e54371ec6576bbf4cf7d?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:23:06 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gpq: 3880 != 3810 gor.gph[1].gpr.gqi.Count: 140 != 126 got.grb[8].gqz[11]: type mismatch (dwy vs jjn) got.grb[8].gqz[12]: type mismatch (jjn vs dwy) g… |
| [ab1eaf7e258e9ed5ec685035d10cc688](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ab1eaf7e258e9ed5ec685035d10cc688?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-06-02 10:05:48 | Origin Player is null target.id:2619 |
| [ab20315a23d915d21ac68ad7777fa135](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ab20315a23d915d21ac68ad7777fa135?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 00:28:23 | P2P message send failed: target=76561198065287173, reason=Target member is not in lobby: 76561198065287173 |
| [abfdfbeed2903fa37ec07bc2d452964e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/abfdfbeed2903fa37ec07bc2d452964e?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 01:24:24 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].fps: 0 != 3 gor.gph[1].gpq: 8015 != 8000 gor.gph[1].gpv: 0 != 1 gor.gph[1].gqe: True != False gor.gp… |
| [ae26ec13b52b95ec21a074775091e3cb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ae26ec13b52b95ec21a074775091e3cb?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 01:25:20 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[0].gpq: 15120 != 15145 gor.gph[0].gpv: 0 != 1 gor.gph[0].gqe: True != False gor.gph[1].gpi: 26 != 27 gor.gph[1].fps: 83 != 140 gor.gph[1].ggg: 0 != 22 gor.gph[1… |
| [b16dca08cbda154c0d94b6fa5504356f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b16dca08cbda154c0d94b6fa5504356f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:52:16 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[1].gpq: 3600 != 3580 gor.gph[1].gpr.gqi.Count: 116 != 112 gou.gpd.Count: 517 != 516 |
| [b1b300a5aed28183fc7a4a246f96e7a5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b1b300a5aed28183fc7a4a246f96e7a5?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:21:38 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[372].gnl.Count: 0 != 1 gor.gph[0].gpq: 18470 != 18510 gor.gp… |
| [b25949b9ea51932adb6d260ef9aaa08b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b25949b9ea51932adb6d260ef9aaa08b?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:38:02 | ActionExecute broadcast failed, abort owner execute: Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : KomeijiIndianCatapult Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [b2f3b086bfb3ae98194da301fb16c1d3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b2f3b086bfb3ae98194da301fb16c1d3?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-02 03:06:23 | AddUnitData blocked: target grid occupied. gid=77, cid=267, newUnit=Defender/None/0, existingUnitId=357, existingUnit=Giant/IndianKoishi/3, mapId=2774423459 |
| [b41c894d87c9213be3c67dfe0412bacf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b41c894d87c9213be3c67dfe0412bacf?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:57:33 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=325 Turn=24 NetMode=Single PlayerCount=17 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=24 CityCount=20 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsS… |
| [b5f21c643259e8ce36978d1f91010ddb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b5f21c643259e8ce36978d1f91010ddb?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-01 22:25:53 | CompleteExecute Player 不一致 Action : TrainUnit Wonder : None Resource : None Feature : None Terrain : None Unit : Giant Giant : GermanySuwako Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [b63bc16c733e36d73849205e87363b5f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b63bc16c733e36d73849205e87363b5f?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-02 01:25:17 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : ThirdHero |
| [b7bac56fc28271f62f9c7349694fe277](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b7bac56fc28271f62f9c7349694fe277?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:05:29 | P2P broadcast preflight failed: target=76561199395792272, reason=Connection to 76561199395792272 is not active for queueing. State: k_ESteamNetworkingConnectionState_ClosedByPeer |
| [bb054e7b6ffe7952ead3894de1bc5983](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bb054e7b6ffe7952ead3894de1bc5983?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:21:46 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=122 Turn=6 NetMode=Multi PlayerCount=2 Player Id=122 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=3 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
| [bc85dad1ecb800b2c83c1e13c1455a14](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bc85dad1ecb800b2c83c1e13c1455a14?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 10:47:12 | CollectData upload failed: STS request failed: Unable to complete SSL connection |
| [be7476c06e009865fd558fc6f6ef2a88](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/be7476c06e009865fd558fc6f6ef2a88?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-02 00:42:46 | CompleteExecute Player 不一致 Action : Build Wonder : None Resource : ForestTemple Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [c3cb242451ac90361e8265f70239560c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c3cb242451ac90361e8265f70239560c?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:05:52 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[100].gng: None !=… |
| [c8bb360bc43adb4031886d360f65d8d7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c8bb360bc43adb4031886d360f65d8d7?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-02 10:47:11 | STS request failed: Unable to complete SSL connection, Response: |
| [cc34b0135ead8f0ce87e144265ab4184](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cc34b0135ead8f0ce87e144265ab4184?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:10:13 | ActionExecute broadcast failed, abort owner execute: Action : Gain Wonder : None Resource : Animal Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [cc879d1c7a4b866c75708dc07f078e9b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cc879d1c7a4b866c75708dc07f078e9b?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 20:05:55 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[286].gni: Animal … |
| [cca19beb697d0fe87ecc28527e163639](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/cca19beb697d0fe87ecc28527e163639?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-01 20:58:28 | AddUnitData blocked: target grid occupied. gid=103, cid=413, newUnit=Defender/None/0, existingUnitId=534, existingUnit=Cloak/None/0, mapId=3220148926 |
| [d31d2af5ed700067025d8e7b6808bc78](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d31d2af5ed700067025d8e7b6808bc78?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:18:18 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gpu.gqm[3].gqp: 0 != 10 gor.gph[0].gpw: 103 != 104 gor.gph[0].gqb.Count: 29 != 30 gor.gph[9].gpq: 96… |
| [d442bf74027186605417ab80c6ab8d73](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d442bf74027186605417ab80c6ab8d73?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-02 01:22:15 | AddUnitData blocked: target grid occupied. gid=726, cid=944, newUnit=Swordsman/None/0, existingUnitId=1288, existingUnit=Cloak/None/0, mapId=1486902125 |
| [d8dfe08d24850e4a6078a4f3c19b87d5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d8dfe08d24850e4a6078a4f3c19b87d5?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:28:20 | dyo: 房主广播失败 |
| [d9a4f43e6cddaa13c324480b8a433978](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d9a4f43e6cddaa13c324480b8a433978?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 04:11:51 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[92].gnl.Count: 2 != 1 gor.gph[1].gpq: 2900 != 2910 gor.gph[1… |
| [dbe49322ac6a6a97fec1179a004fccee](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dbe49322ac6a6a97fec1179a004fccee?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:59:43 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[1].fps: 11 != 6 gor.gph[1].gpq: 2395 != 2365 gos.gmm[1].gmq: 5 != 4 gos.gmm[1].gmr: 1 != 5 gou.gpd.Count: 879 != 878 |
| [de42c9e120f180a56c18162d03cdaac1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/de42c9e120f180a56c18162d03cdaac1?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-02 02:18:34 | 存在相似action ,记录点为:38 ,Action为:Action : PlayerAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : IndianUtsuho Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : FinishHeroTask AIParam : AllClear Tech : None CultureCardType : None 重复次数 :6 |
| [e291bdb73abff89136a1ca46e1c7318f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e291bdb73abff89136a1ca46e1c7318f?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 10:31:01 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].gqb.Count: 6 != 7 gor.gph[6].gqb.Count: 1 != 2 got.grb[4].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not match the exp… |
| [e72101cce36cd8bd113c888ef63d7562](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e72101cce36cd8bd113c888ef63d7562?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-06-01 22:42:57 | Origin Player is null target.id:568 |
| [ea209233d60605a08ea8c8c8457e3252](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ea209233d60605a08ea8c8c8457e3252?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-02 09:59:41 | [MatchSettlementStuck] 触发兜底MatchType=Normal BlockingPlayerId=326 Turn=24 NetMode=Multi PlayerCount=3 Player Id=325 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=25 CityCount=7 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSucce… |
| [ec59137e5c44e0a7af7eb302fb92439e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ec59137e5c44e0a7af7eb302fb92439e?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 17:15:34 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[77].gnl.Count: 2 != 1 gor.gph[1].gpq: 2910 != 2920 gor.gph[1… |
| [ec7859700b1bbdfb1a268f54f5b1cc10](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ec7859700b1bbdfb1a268f54f5b1cc10?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-01 23:01:11 | CompleteExecute Player 不一致 Action : GridMisc Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : GrowForest Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [edb012b4a4da59fdfc29118cbcde9636](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/edb012b4a4da59fdfc29118cbcde9636?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:27:59 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[0].fvz.fwc: 1 != 2 gor.gph[0].kff.kfh: 15 != 0 gor.gph[0].kff.kfi.Count: 1 != 2 gor.gph[0].kff.kfj.Count: 1 != 2 got.grb[2].jom[0].jpz[0].Item: reflection error - Number of parameters specified does not … |
| [ee21b68ca2e3e307200bfdd4c08317e4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ee21b68ca2e3e307200bfdd4c08317e4?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 20:52:14 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Forestry PlayerAction : None AIParam : AllClear Tech : Forestry CultureCardType : None 重复次数 :7 |
| [f1889c30ba46c477e039cea037c6b2ac](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f1889c30ba46c477e039cea037c6b2ac?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:11:38 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : Fishing PlayerAction : None AIParam : AllClear Tech : Fishing CultureCardType : None 重复次数 :1 |
| [f212b00a9fd45e7f105bc9b546931ca1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f212b00a9fd45e7f105bc9b546931ca1?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 00:26:46 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[599].gni: Wonder != Preserve goq.gnc[599].gnj: GermanyKanakoWEALTH != EgyptianRemiliaPEACE goq.gnc[599].gno: 0 != 1 gor.gph[1].gpq: 10595 != 10145 gor.gph[1].gp… |
| [f45122930f915849a585b8cb970e4d38](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f45122930f915849a585b8cb970e4d38?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 04:50:12 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[0].fps: 21 != 13 gor.gph[0].gpq: 4785 != 4825 got.grb.Count: 100 != 101 got.grb[83].kfk.Count: 1 != 0 g… |
| [f80f28bf5d017a0fc235683902dd667a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f80f28bf5d017a0fc235683902dd667a?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:10:46 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) goq.gnc[56].gnl.Count: 1 != 0 gor.gph[1].gpw: 17 != 16 gor.gph[1].gq… |
| [f83da76e57db430958acde0a8d5c9b4e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f83da76e57db430958acde0a8d5c9b4e?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:05:13 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) UnitMap differs (serialized data mismatch) gor.gph[4].gpv: 3 != 4 gor.gph[4].gqe: True != False gor.gph[5].gpi: 3 != 4 gor.gph[5].fps: 0 != 6 gor.gph[5].gqb.Count: 1 != 0 gor.gph[5].gqc.Count: 0 != 1 gor.gph[5].… |
| [f871f3637835b5cc7c48a607a3ad834a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f871f3637835b5cc7c48a607a3ad834a?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 08:33:28 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToCityDict differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) gor.gph[2].fps: 12 != 6 gor.gph[2].gpq: 7745 != 7775 got.grb.Count: 133 != 135 got.grb[80].gqz[1].jpz[0].Item: … |
| [f96ccf8b5fb0a677a4c96ec7cdb3142b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f96ccf8b5fb0a677a4c96ec7cdb3142b?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-02 05:41:25 | GridMap differs (serialized data mismatch) PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) CityMap differs (serialized data mismatch) goq.gnc[487].gni: None != LumberHut gor.gph[0].fps: 103 != 100 gor.gph[0].gpq: 11840 != 11845 gos.gmm[44].gmr: 2 != 3 got.grb[17].jom[0].jpz[0].Item: reflection error -… |
| [fcd31a0248c865b1c6b3293349e062a9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fcd31a0248c865b1c6b3293349e062a9?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-01 23:01:12 | ActionExecute broadcast failed, abort owner execute: Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
| [fee3cb23e5797cfeb3a2b328a5511245](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fee3cb23e5797cfeb3a2b328a5511245?pid=10) | 地图反序列化/版本兼容诊断 | UnityLogError | 1 | 1 | 2026-06-01 21:15:42 | 地图数据反序列化失败,可能是版本不兼容: Length header size is larger than buffer size, length: 184549376. |

View File

@ -0,0 +1,604 @@
{
"date": "2026-06-02",
"version": "0.7.2c",
"capture": {
"capturedAtUtc": "2026-06-02T02:51:04+00:00",
"capturedAtLocal": "2026-06-02 10:51:04",
"rawDir": "Temp\\CrashSight\\Daily_2026-06-02_0.7.2c",
"reportDir": "MD\\CrashSight_2026-06-02_0.7.2c_1day"
},
"filter": {
"version": "0.7.2c",
"date": "last_1_day",
"status": "0,2",
"exceptionCategoryList": "ERROR",
"sortField": "uploadTime",
"sortOrder": "desc",
"rows": 100
},
"totalIssues": 277,
"blockingIssues": 11,
"blockingOccurrences": 62,
"logerrorIssues": 266,
"logerrorOccurrences": 9035,
"blockingReports": [
{
"categoryId": "steamworks-not-initialized",
"title": "Steamworks 未初始化",
"issueCount": 5,
"occurrences": 47,
"path": "blocking/001_steamworks-not-initialized.md",
"issues": [
"8605ccfc9311840c54f1e112669c6c4a",
"341f705a3c788ba90fbf37396a4c9470",
"6824d854c4dbc78d5d41cc0cba4081fb",
"ee679306da516a599fea816f2ff6653f",
"589a482d3aa15b5adaf39c75d3caa9de"
]
},
{
"categoryId": "sanae-onheal-null",
"title": "早苗治疗技能空引用",
"issueCount": 1,
"occurrences": 10,
"path": "blocking/002_sanae-onheal-null.md",
"issues": [
"526d5bd9c92269231f74e9c90cfaed62"
]
},
{
"categoryId": "null-reference",
"title": "空引用异常",
"issueCount": 2,
"occurrences": 2,
"path": "blocking/003_null-reference.md",
"issues": [
"9ccfcf2261240f94e0e8d784db68694c",
"d81f2cf20a94cda3fb516f49212b31d5"
]
},
{
"categoryId": "index-out-of-range",
"title": "IndexOutOfRangeException",
"issueCount": 1,
"occurrences": 1,
"path": "blocking/004_index-out-of-range.md",
"issues": [
"e50cf99b415ba6b21d90e50a1e7c47c7"
]
},
{
"categoryId": "map-click-move-keynotfound",
"title": "点击移动字典 Key 缺失",
"issueCount": 1,
"occurrences": 1,
"path": "blocking/005_map-click-move-keynotfound.md",
"issues": [
"ab9f079f9f66a99ede0ba5a44ba49676"
]
},
{
"categoryId": "announce-major-event-null",
"title": "重大事件公告 UI 空引用",
"issueCount": 1,
"occurrences": 1,
"path": "blocking/006_announce-major-event-null.md",
"issues": [
"0af437dc7c73331f892ca95178c964cc"
]
}
],
"categories": [
{
"id": "action-completeexecute-player-mismatch",
"title": "行动执行玩家不一致",
"class": "logerror",
"issueCount": 20,
"occurrences": 4209,
"issues": [
"10d4df507992c1a66a90693df20b21c3",
"250d1a8a1acff41c635ce86249462e21",
"d7e6cc2799b68c86e60f214b087d67a2",
"fc2d124d395f06a7f9a3d4f88141e46e",
"d0c686e60340f8c46826266c5ddd9f47",
"a4b9850f4fff9fc2e741d86c2bf5f8a5",
"b6268405e423097fce87050da2cc675d",
"c7cbea703f42ecf6f54444f481fe7465",
"b3b11c4905b4514323dcab8bd7d5a857",
"40b385e6956400fe315db114f30e0fb7",
"5f2294e63d9d4a8a8d15f5fdc25b5cb2",
"47b901f167c15f9be3547573d7266736",
"50119431f45750d343ff2c70de7250b5",
"b63bc16c733e36d73849205e87363b5f",
"32d4925a40f9db0fb7d2b098c38b2845",
"be7476c06e009865fd558fc6f6ef2a88",
"72ab090656030e72d75c167c719589ad",
"8f267b2f5c50f93b544af8886fe61db8",
"ec7859700b1bbdfb1a268f54f5b1cc10",
"b5f21c643259e8ce36978d1f91010ddb"
]
},
{
"id": "network-send-failure",
"title": "网络发送失败诊断",
"class": "logerror",
"issueCount": 58,
"occurrences": 958,
"issues": [
"dbce2880e5ad9287fcca2bf271f97622",
"81a5e2896daabc7005cd79ae522de4bf",
"37c3a6f1b4b5b39220ee5ed7563118bf",
"c11f14ad2fbd5625c5b53fb910cdba76",
"2cb3d67ddfe0d9587abd02390f5de041",
"1d2092e8267a158d39aa1a040041020d",
"034cfe80d745e3c9774d27e82ff3a0f3",
"773e5d47d6aad89edb0492504359a8c9",
"4de7d427f16ede45dbd3693fc3431ac3",
"1df80dbcaf6f1f71cbd77fff64532361",
"34d36e5daf08bcbfbfde8946192bd768",
"b077bae2896d3af9bd09e6b4f64e81ec",
"698fb570ca698169d602f9b227a34074",
"a0830cd150cf6348c957fa17694ae9f6",
"60d84edf5f69d3592e1dc8aef452a038",
"46e066ae0b769b9bf90484685e8f2687",
"016d17abc7fece1335eb4f51e4243630",
"65b06fbb438780b70bdb76c45f529d9c",
"f3987f573fe7f08021e2cc7fa7f6b737",
"0d3c117cffe5cca3489b9158c6c5236b",
"cf2eb96359369cc1db5a70e5e2b219b1",
"18881ca550f30dcd6389af3fec2d7699",
"d7a74e6e95985e97e0bbecc7de0c0f44",
"9bdd7ded0a12f17a10bb7a18ba6d0547",
"50fe0e473c1fd9ee31d2aa194443b59e",
"3781e3c243cadba4b1550cdf922b6d2e",
"624cac1b8518b0381fe9b293c76bcace",
"a8bc47d986e78a5610405d77211bed15",
"8a01152efadcf8977cd49d9f39e10077",
"b7bac56fc28271f62f9c7349694fe277",
"daec796293ecae6d73a5eef8f5e3707c",
"cdf7ee24424388a30f7e343d1a6a9a25",
"4ead7c53428772d3e2104f3e2d46022e",
"7a429d2f62a67d85c0463e7044115a28",
"ab20315a23d915d21ac68ad7777fa135",
"c2daa8b71f370b978be659cda9e902bb",
"e0607caeab32ce4c102dd3db17f6d498",
"cc34b0135ead8f0ce87e144265ab4184",
"61179b905f0719752d39947d6e801de7",
"fcd31a0248c865b1c6b3293349e062a9",
"2d0bbabbf9621ffea27a1911c9422767",
"b25949b9ea51932adb6d260ef9aaa08b",
"2d721c42b89b3b897cb9eeeb4ce02f06",
"d8dfe08d24850e4a6078a4f3c19b87d5",
"c1fac556b3209f47572e74e6d7f0ab64",
"b49644a24a466f956045d2bcbb75f449",
"1de81d5299ca7c580b2188fae37d6b85",
"43893b3963f34772559fb784d4e089b9",
"18691faf23fa35f39e1cf5d765516a5a",
"1bc4d63d3b5feb69fb2834615eba64c8",
"f4563635cbea9b4a9393e863e268bae3",
"407d6298c3aae233f526e40b028a3826",
"79b846fa5c6d9ecf2ee6e9dc931a3d05",
"76d11ab2660e25809c01e3d96b2c754f",
"c2e29a96dac5ed12b99c32c8670a4375",
"8eb9ee08571dd02d30df4b986b9b9b15",
"107abe1efb00c8f713af9d2750b13da9",
"a5f3b19aed3ce29ef71c3c613868573e"
]
},
{
"id": "action-sync-version-index",
"title": "行动同步版本/索引不一致",
"class": "logerror",
"issueCount": 7,
"occurrences": 863,
"issues": [
"4c75b2d78a859ca6b6418bd8ea9103c3",
"d8de4834232190d1b31e54f83f92455d",
"ad6a6bee84c34a853e6038146f334126",
"8b25a3e618ff41836a53290accc32ac4",
"eef7fa7503168965448a647bfbe7ae65",
"44325775d9be4ec4305b2ebc4cc8c20c",
"3f7acd62a44f7eb3e259181d5a063d04"
]
},
{
"id": "ai-loop-guard",
"title": "AI 计算死循环保护",
"class": "logerror",
"issueCount": 2,
"occurrences": 775,
"issues": [
"bb81bce180d8672f500aa9f2021ec9f8",
"83c5b5b46447ac4e50101f1148f4ab70"
]
},
{
"id": "p2p-lobby-connection-failure",
"title": "P2P/大厅连接失败诊断",
"class": "logerror",
"issueCount": 10,
"occurrences": 707,
"issues": [
"01eaa6aefd9162eccc930c2450a63779",
"7b5f54e17dc2f09810eaf4a23c8fbf40",
"bc7e88e9811a3e38d26e15577210e3d7",
"9b415b4bbb546c66eba3a6b67f916d35",
"17ad3797303c790702e726900b44d7a1",
"9bee5c48b8f6a2c0247259901eb430dd",
"75a3ccfed59a3b1e5cdff8183b987406",
"a2ef12b1ee1a74022509f9d18067a863",
"935640bc3320e1f2309d7734a2183a3e",
"886fa66ed99f8ff6955fe0e47d8e2f82"
]
},
{
"id": "reconnect-forceupdate",
"title": "断线重连/ForceUpdate 诊断",
"class": "logerror",
"issueCount": 8,
"occurrences": 526,
"issues": [
"f491e675022da1efea0d0392ab128f62",
"8ea23c00bbb51e4cd7f62f25a2dde6c0",
"1c750a91b04ed35e88058ba5c14be2ee",
"6015aabf5b375a7e2a323b4b520f7fa7",
"cf8c203b0fba86738b81adabfddb6773",
"791d4ca1ba424779c33a51ac2a073c8c",
"7a6fa21d90f878506c719d1371bf7a07",
"a1669cc14acdfdbfbb7e4b67d8edaa17"
]
},
{
"id": "duplicate-similar-action",
"title": "相似 Action 重复诊断",
"class": "logerror",
"issueCount": 46,
"occurrences": 500,
"issues": [
"e2d6a88d46dcb49a0d139cdc09cfcf60",
"b9356ab138b2b54e96f3db7887c3b8d0",
"7f1d39e4d1ab06af2b277d2a5eeec9cf",
"ad52d9e056bfbd17f4ccb8384e5f83d9",
"edcd261bfeff53e33bfe7210c87dcb57",
"6f9a7dfae381416b2527844f750fafc1",
"683af7e6fbb1a3d4bf25311b223076bb",
"c3051df0699d3a433ecbef7e85411c9e",
"8107c16369fb00417c1682a0350ec64f",
"4f5545a1638cac79f5067beb3876ae4c",
"95aabdb7f346efa423a7b082878dd636",
"7f6a8332378f3bf99f4514490f913b17",
"76c4c1b1a5add246455aec813c46d59a",
"5b3c6d96b848815202763b13c522f434",
"8580a82c199b326d8623eef77b8af637",
"9b741a158ad3946e41599313dbea7a2f",
"3073af8438a779606ac04d433962d5cd",
"c01e176659cfee5baba883ae144f3620",
"0cb4b0db462d1610c11fe1d5444a01d",
"e2a98324f7a4c57aaa59f09240f2aa14",
"8f35d8d1fd8078645abcd7bd1061b0c5",
"2155cbc9cb2baf0262737433bbc6e38f",
"3b57b3da955504db4dd9cbfcab8bdadb",
"a0e37aa641e65872faadaebad6187c91",
"193d2d61f85358b92951ff088aecf11e",
"e139e615cb7de95a6f55d1391aaa7410",
"f14ac061b2149a6e99d386b3b392434d",
"0fc9fec6c17b8d12527197dae35611d6",
"9c97ea379fd9f3b95e8f758b307e4997",
"9043dd945e4b0289ae7aa38939ee3105",
"43f14319d1b258affd890dcee07175f4",
"4e3d34adfbf230fd950555e4bdb181c6",
"de42c9e120f180a56c18162d03cdaac1",
"2c90fb76aec9552214914833df6a3776",
"e7f8cb8e59e26d51248a4ffb8f221d97",
"c62525a73e2a6202ed8c50e256b95aff",
"9e8f0e125886eb7d8915c71e359f7035",
"5b43fb939ee15af71b061baef0fdfaa1",
"0939de0a9c0b3ee8fb9c7e5b34c4fe9b",
"f1889c30ba46c477e039cea037c6b2ac",
"6dfe783e1262151aaa8989ab8b12c2f4",
"ee21b68ca2e3e307200bfdd4c08317e4",
"736b76f612c90176d984722fdbfdb5b7",
"378434af7c2f55f4ffb8ec2a9f287b4c",
"40305eaa5534e7b848986ce7aea78110",
"1e6f83a8e64cb3ab72783afa45a3fbfa"
]
},
{
"id": "mapdata-diff-diagnostic",
"title": "MapData 序列化差异诊断",
"class": "logerror",
"issueCount": 63,
"occurrences": 219,
"issues": [
"99c0d1f01c2fd32ecadaa6d93a458b2c",
"e291bdb73abff89136a1ca46e1c7318f",
"ad7196902c3d09741b1ab6a89457727f",
"6726be43071cc1b5642ba280268ed465",
"1e50ff3ab5d5d6f9a383b00f48ee10af",
"910f0b916a6c6637f8eb65f443e5a7f6",
"c3cb242451ac90361e8265f70239560c",
"8467630975f1d53d7e757b6450d89999",
"f871f3637835b5cc7c48a607a3ad834a",
"87a6329f9316e72c1c9c5f474b977471",
"18a2efd630e569ef1b4ebb749381aac5",
"813f3c196bd9ecb3f213d7ac04fb8fd9",
"0fa4c1abdd227c1c0901d15140fdca45",
"f96ccf8b5fb0a677a4c96ec7cdb3142b",
"f45122930f915849a585b8cb970e4d38",
"d9a4f43e6cddaa13c324480b8a433978",
"52462b09c717e6f28d4662656683c73b",
"8e7ee8b6b5234dac76123045123d93d3",
"3254094a7c0e12bc421633559916ba63",
"9230d794163fb4ceeb84632bb8f65053",
"488bf90a1941834d1dce5cc782faec89",
"b16dca08cbda154c0d94b6fa5504356f",
"905cd0a686862f7ef61ada740bdeebb8",
"b1b300a5aed28183fc7a4a246f96e7a5",
"053057fb82582b3a7050023d2ee4ddc1",
"8e0b937600f25dc9ddb015f7f5789d83",
"71bf68dc805d45a68885ae8fd296caf9",
"ae26ec13b52b95ec21a074775091e3cb",
"abfdfbeed2903fa37ec07bc2d452964e",
"478f89742cef27060c8ae48a4841f0eb",
"f212b00a9fd45e7f105bc9b546931ca1",
"150b5bb75bb87e21302412db50b03699",
"6ee31c38052e7317d1a8272de7d3017a",
"243770b240cacb8e250ca6b27f573a49",
"2465214ff36afcb1c31f2297c009be7f",
"3b3df7c46086bfe4e95a9d425dd5970f",
"0ab8f713ebd63c31fc6e7d47a8b187e8",
"8b3ee2ef2603960433c01c80fe20b398",
"f80f28bf5d017a0fc235683902dd667a",
"500aba23dbb4416764ebd69227ab3b12",
"4c7836a488c94db87f294a0e89b556ff",
"12ed0f69fca856ef427fdcf7af6604ad",
"2bfeeee92a4e4c0d6f5f7aa3cdfc497d",
"a2e470eb7356afc0d3d08dfe4217631f",
"f2f7b0d765f02f220afa323e5b952b13",
"d31d2af5ed700067025d8e7b6808bc78",
"8ab5f9fb28f24515e78e882986a0774c",
"2316ecd3908f899fcb262b8509c51627",
"169c57caae3618454fd2d6a29cd2f0a9",
"dbe49322ac6a6a97fec1179a004fccee",
"1e23e5097f67681dbbf3a36b1a30d9ad",
"edb012b4a4da59fdfc29118cbcde9636",
"68b2d6d9e5c0e2c2af6da9dfb018deff",
"331a81e1bd88c8f2b164e455c7299715",
"057ef2b408764457863b43defadf1af7",
"a9fe7d5cac59e54371ec6576bbf4cf7d",
"0c18d4d62d41cbbca18a4edf54e4dd59",
"f83da76e57db430958acde0a8d5c9b4e",
"2fe84e0968f6b04080492b95951174b7",
"0a378c585b18c98458a488aa2dd6e83b",
"cc879d1c7a4b866c75708dc07f078e9b",
"a74e191b1f09a95ff60ea5021a42a8cb",
"ec59137e5c44e0a7af7eb302fb92439e"
]
},
{
"id": "multilingual-empty-id",
"title": "多语言 ID 为空",
"class": "logerror",
"issueCount": 6,
"occurrences": 139,
"issues": [
"ea2c22182f1187fccfaa5e605b3072c0",
"e411b59aba2e1015cd27950bef1e17e4",
"afec6671a017afaa004d0c956b773ca4",
"691253c2a412f07945231dd650f58213",
"f5d6caefc1e5ac72cd5c21a56e3dfddb",
"a2897449c9b8859f7fdc82ff7e1099f9"
]
},
{
"id": "sts-upload-failure",
"title": "STS/OSS 上传失败诊断",
"class": "logerror",
"issueCount": 8,
"occurrences": 48,
"issues": [
"bc85dad1ecb800b2c83c1e13c1455a14",
"c8bb360bc43adb4031886d360f65d8d7",
"39f1705c6be89cfc405d62a429cd3ecf",
"41ede517297398a59bc70bc4b37551cd",
"4519111d864a8906a22e97fb6b1dafde",
"93509b23a954c79d835f4138bab9f3f7",
"2c80a08593d1d79d0f9f6d9ef7a2ec77",
"42d6b47d8a74bf373ade1533f107cfc8"
]
},
{
"id": "steamworks-not-initialized",
"title": "Steamworks 未初始化",
"class": "blocking",
"issueCount": 5,
"occurrences": 47,
"issues": [
"8605ccfc9311840c54f1e112669c6c4a",
"341f705a3c788ba90fbf37396a4c9470",
"6824d854c4dbc78d5d41cc0cba4081fb",
"ee679306da516a599fea816f2ff6653f",
"589a482d3aa15b5adaf39c75d3caa9de"
]
},
{
"id": "other-logerror",
"title": "其他项目诊断日志",
"class": "logerror",
"issueCount": 9,
"occurrences": 34,
"issues": [
"0235699b0853634b6f7cf7927d01b1b6",
"b2f3b086bfb3ae98194da301fb16c1d3",
"4b1db5b10234b3092b2adfa099ee8e69",
"d442bf74027186605417ab80c6ab8d73",
"37f25cc98990dc68e3ff203ac9ca4916",
"41cfe52bca30053ec5f8e9e3354f5f36",
"8dee5a028588c30aa11a92ed01361d50",
"cca19beb697d0fe87ecc28527e163639",
"9fcb34a345ff175a560d15a1512b3603"
]
},
{
"id": "mapdata-deserialize-compat",
"title": "地图反序列化/版本兼容诊断",
"class": "logerror",
"issueCount": 8,
"occurrences": 15,
"issues": [
"99958faf39cc5573311ea22bd5ee901d",
"879342965b3e2cf8dfb3f6e6be2f3b0c",
"3ed551ed5c3ec29c3205b6381c3f9aa5",
"ef6af01bde7f25d4d8e4b961893178c1",
"77f4d3c3221f15b63042010a7aa6ab76",
"506a15b69a3bd51cbd5e19db9cdc58b0",
"3dabcad606c1feba717d3236c7c89da0",
"fee3cb23e5797cfeb3a2b328a5511245"
]
},
{
"id": "match-settlement-stuck-fallback",
"title": "结算卡住兜底诊断",
"class": "logerror",
"issueCount": 10,
"occurrences": 14,
"issues": [
"2fe5980bd5f6cb4805b74f93ef06653d",
"ea209233d60605a08ea8c8c8457e3252",
"29726044126a568b1fc9716c2fad1cbd",
"a5cf4a112ad2857bf6aa9fdaca54e1dd",
"b41c894d87c9213be3c67dfe0412bacf",
"4e5577b8620259d901db838dedfd5262",
"6bd22a2a6ee31e8e8e34144c082e7850",
"8907dd5ff47a362f2e35031c7ec08faa",
"bb054e7b6ffe7952ead3894de1bc5983",
"274139e5c384da1e4e889daf775bbd24"
]
},
{
"id": "invalid-action-circle-diagnostic",
"title": "不可执行行动圈诊断",
"class": "logerror",
"issueCount": 1,
"occurrences": 11,
"issues": [
"b8bbf46c799fc64adba48fa5070a2891"
]
},
{
"id": "sanae-onheal-null",
"title": "早苗治疗技能空引用",
"class": "blocking",
"issueCount": 1,
"occurrences": 10,
"issues": [
"526d5bd9c92269231f74e9c90cfaed62"
]
},
{
"id": "origin-player-null-diagnostic",
"title": "Origin Player 为空诊断",
"class": "logerror",
"issueCount": 4,
"occurrences": 7,
"issues": [
"de0c2d2b0f202b1fc6c1854636197b23",
"ab1eaf7e258e9ed5ec685035d10cc688",
"589373c458d67eceb1a52ffc4f2b59b8",
"e72101cce36cd8bd113c888ef63d7562"
]
},
{
"id": "oss-workshop-upload-failure",
"title": "OSS/创意工坊上传失败诊断",
"class": "logerror",
"issueCount": 2,
"occurrences": 3,
"issues": [
"2004e1860db71825a45e9c040ee1205e",
"9e004d52e5ba61a1cd8a5ba76ea3202d"
]
},
{
"id": "local-device-capability",
"title": "本机音频/显卡能力诊断",
"class": "logerror",
"issueCount": 1,
"occurrences": 3,
"issues": [
"341bbed051698b373151b84bde7e144f"
]
},
{
"id": "forceupdate-player-net-map",
"title": "ForceUpdate 玩家网络映射失败",
"class": "logerror",
"issueCount": 1,
"occurrences": 2,
"issues": [
"9d8525f680bdc767d1d86654d6a6b2bf"
]
},
{
"id": "null-reference",
"title": "空引用异常",
"class": "blocking",
"issueCount": 2,
"occurrences": 2,
"issues": [
"9ccfcf2261240f94e0e8d784db68694c",
"d81f2cf20a94cda3fb516f49212b31d5"
]
},
{
"id": "index-out-of-range",
"title": "IndexOutOfRangeException",
"class": "blocking",
"issueCount": 1,
"occurrences": 1,
"issues": [
"e50cf99b415ba6b21d90e50a1e7c47c7"
]
},
{
"id": "shader-fallback-diagnostic",
"title": "Shader fallback 诊断",
"class": "logerror",
"issueCount": 1,
"occurrences": 1,
"issues": [
"a028074d459066a519ffbd4807341ebd"
]
},
{
"id": "damage-grid-null-diagnostic",
"title": "受击生命周期格子为空诊断",
"class": "logerror",
"issueCount": 1,
"occurrences": 1,
"issues": [
"57500e9e3290b3066f6ffc925d2d7238"
]
},
{
"id": "map-click-move-keynotfound",
"title": "点击移动字典 Key 缺失",
"class": "blocking",
"issueCount": 1,
"occurrences": 1,
"issues": [
"ab9f079f9f66a99ede0ba5a44ba49676"
]
},
{
"id": "announce-major-event-null",
"title": "重大事件公告 UI 空引用",
"class": "blocking",
"issueCount": 1,
"occurrences": 1,
"issues": [
"0af437dc7c73331f892ca95178c964cc"
]
}
]
}

View File

@ -357,7 +357,7 @@ Unity 菜单:`Tools/玩家 Bug 汇报`
- 玩家自述文本输入。
- 版本号默认读取当前 `VersionConfig`,可手动修改。
- 默认附带最近一局存档,根据本地 `map_archive_begin + map_archive_continue/end` 自动识别。
- 默认附带最近一局存档,根据 `GameRecord` 索引到本地 `GameArchives/begin + quick_continue/continue/end` 自动识别。
- 可勾选单机存档、联机存档;打包为一个 zip 后走 `type=bugreport` 上传。
Zip 内容:
@ -365,10 +365,10 @@ Zip 内容:
```
manifest.json
description.txt
saves/single/map_archive_begin_{mapId}.dat
saves/single/map_archive_continue_{mapId}.dat 或 map_archive_end_{mapId}.dat
saves/multi/map_archive_begin_multi_{mapId}.dat
saves/multi/map_archive_continue_multi_{mapId}.dat 或 map_archive_end_multi_{mapId}.dat
saves/single/begin/{beginArchiveId}.dat
saves/single/quick_continue/quick.dat 或 saves/single/continue/{continueArchiveId}.dat 或 saves/single/end/{endArchiveId}.dat
saves/multi/begin/{beginArchiveId}.dat
saves/multi/quick_continue/quick.dat 或 saves/multi/continue/{continueArchiveId}.dat 或 saves/multi/end/{endArchiveId}.dat
```
`manifest.json` 目前包含:
@ -377,7 +377,7 @@ saves/multi/map_archive_continue_multi_{mapId}.dat 或 map_archive_end_multi_{ma
- 玩家与版本:`steamId``version``unityVersion``platform`
- CrashSight 对齐字段:`crashSightDeviceId`。项目初始化 CrashSight 时也会显式设置同一个设备 ID便于后台检索对应玩家。来源优先使用 `SystemInfo.deviceUniqueIdentifier`;如果 Unity 返回空值或 unsupported则生成并持久化一个 `th1-{guid}` 作为本机安装级 fallback极端情况下 PlayerPrefs 不可用时,使用进程内 `th1-device-id-unavailable-{guid}` fallback。
- 设备信息:`deviceName``deviceModel``operatingSystem``processorType``processorCount``systemMemorySizeMb``graphicsDeviceName``graphicsMemorySizeMb`
- 玩家自述与存档:`description``archiveCount``archives[]`。每个存档条目包含模式、MapID、begin/continue/end 类型、源文件名、zip 路径、文件大小和最后写入时间。
- 玩家自述与存档:`description``archiveCount``archives[]`。每个存档条目包含模式、MapID、begin/continue/end 类型、`archiveFolder` 子目录、源文件名、zip 路径、文件大小和最后写入时间。
### 12.2 开发者查看器
@ -388,7 +388,7 @@ saves/multi/map_archive_continue_multi_{mapId}.dat 或 map_archive_end_multi_{ma
- 使用 OSS AccessKey 更新 `bugreport/` 内容到本地缓存。
- 按版本和 SteamID 筛选条目。
- 预览玩家自述、上传时间、版本、SteamID、CrashSight 设备 ID、设备信息、附带存档。
- 一键清理本地 `map_archive_*.dat/.bak` 并替换为该汇报内的存档
- 一键清理本地 `Config/GameArchives` 下的新存档文件,并按汇报内的 `archiveFolder` 子目录写回
---

View File

@ -0,0 +1,38 @@
# CrashSight API Triage Tools
TH1 CrashSight analysis can run without browser automation through these two
helpers:
- `crashsight_api.py`: low-level signed OpenAPI calls and sample/detail fetches.
- `crashsight_daily.py`: version/date scoped ERROR collection, classification,
context fetch, decode input generation, and Markdown report writing.
Credentials are read from:
```text
Temp/CrashSight/crashsight_api_credentials.json
```
That file is local-only and must not be committed.
## Daily Workflow
```powershell
python Tools\CrashSight\crashsight_daily.py collect --version 0.7.2b --date last_1_day --rows 100 --out-dir Temp\CrashSight\Daily_2026-06-01_0.7.2b
python Tools\CrashSight\crashsight_daily.py fetch-context --version 0.7.2b --date last_1_day --out-dir Temp\CrashSight\Daily_2026-06-01_0.7.2b --sample-rows 5 --sample-docs 2 --access-rows 30 --sleep 0.1
pwsh -NoProfile -ExecutionPolicy Bypass -File Tools\DecodeOnlineError.ps1 -InputPath Temp\CrashSight\Daily_2026-06-01_0.7.2b\blocking_decode_input.txt -OutputPath Temp\CrashSight\Daily_2026-06-01_0.7.2b\blocking_decoded.txt
python Tools\CrashSight\crashsight_daily.py write-reports --version 0.7.2b --date last_1_day --out-dir Temp\CrashSight\Daily_2026-06-01_0.7.2b --report-dir MD\CrashSight_2026-06-01_0.7.2b_1day --contexts-per-report 3
```
## Classification Rule
The daily tool classifies every CrashSight ERROR issue into one of two buckets:
- `blocking`: real exceptions, native CrashSight exception rows, or
`UnityLogError` rows that wrap a concrete exception object/stack.
- `logerror`: project diagnostic `LogSystem.LogError` rows without a concrete
exception object/stack.
Blocking reports are merged by root-cause family and written under
`MD/CrashSight_<date>_<version>_1day/blocking/`. Non-blocking diagnostics are
merged into `logerror_summary.md`.

View File

@ -0,0 +1,388 @@
#!/usr/bin/env python3
"""CrashSight OpenAPI helper for TH1 crash/error triage.
Credentials are read from Temp/CrashSight/crashsight_api_credentials.json by
default. Keep that file out of source control.
"""
from __future__ import annotations
import argparse
import base64
import datetime as dt
import hashlib
import hmac
import json
import os
import sys
import time
import urllib.error
import urllib.parse
import urllib.request
from pathlib import Path
from typing import Any
ROOT = Path(__file__).resolve().parents[2]
DEFAULT_CREDENTIALS = ROOT / "Temp" / "CrashSight" / "crashsight_api_credentials.json"
DEFAULT_BASE_URL = "https://crashsight.qq.com/uniform/openapi"
DEFAULT_APP_ID = "01076c49ce"
DEFAULT_PLATFORM_ID = 10
DEFAULT_PID = "10"
def load_json(path: Path) -> dict[str, Any]:
with path.open("r", encoding="utf-8") as f:
return json.load(f)
def write_json(path: Path, data: Any) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
with path.open("w", encoding="utf-8", newline="\n") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.write("\n")
def load_credentials(path: Path) -> dict[str, Any]:
if not path.exists():
raise SystemExit(f"Credentials file not found: {path}")
creds = load_json(path)
missing = [k for k in ("localUserId", "user_key") if not creds.get(k)]
if missing:
raise SystemExit(f"Credentials file missing keys: {', '.join(missing)}")
return creds
def sign(local_user_id: str, user_key: str, timestamp_seconds: int) -> str:
message = f"{local_user_id}_{timestamp_seconds}".encode("utf-8")
digest_hex = hmac.new(user_key.encode("utf-8"), message, hashlib.sha256).hexdigest()
return base64.b64encode(digest_hex.encode("utf-8")).decode("ascii")
def auth_query(creds: dict[str, Any]) -> str:
timestamp_seconds = int(time.time())
local_user_id = str(creds["localUserId"])
user_key = str(creds["user_key"])
query = {
"localUserId": local_user_id,
"t": str(timestamp_seconds),
"userSecret": sign(local_user_id, user_key, timestamp_seconds),
}
return urllib.parse.urlencode(query)
def request_api(
path: str,
body: dict[str, Any],
*,
creds: dict[str, Any],
base_url: str = DEFAULT_BASE_URL,
method: str = "POST",
timeout: int = 60,
) -> dict[str, Any]:
if not path.startswith("/"):
path = "/" + path
auth = auth_query(creds)
method = method.upper()
data = None
if method == "GET":
query = urllib.parse.urlencode({k: v for k, v in body.items() if v is not None})
sep = "&" if "?" in path else "?"
path = f"{path}{sep}{query}" if query else path
url = f"{base_url.rstrip('/')}{path}&{auth}" if "?" in path else f"{base_url.rstrip('/')}{path}?{auth}"
else:
url = f"{base_url.rstrip('/')}{path}?{auth}"
data = json.dumps(body, ensure_ascii=False, separators=(",", ":")).encode("utf-8")
req = urllib.request.Request(
url,
data=data,
headers={
"Content-Type": "application/json;charset=UTF-8",
"Accept": "application/json, text/plain, */*",
"User-Agent": "TH1-CrashSight-OpenAPI/1.0",
},
method=method,
)
try:
with urllib.request.urlopen(req, timeout=timeout) as resp:
raw = resp.read().decode("utf-8", errors="replace")
status = resp.status
content_type = resp.headers.get("content-type", "")
except urllib.error.HTTPError as exc:
raw = exc.read().decode("utf-8", errors="replace")
raise RuntimeError(f"HTTP {exc.code} for {url}: {raw[:1000]}") from exc
except urllib.error.URLError as exc:
raise RuntimeError(f"Request failed for {url}: {exc}") from exc
try:
parsed = json.loads(raw)
except json.JSONDecodeError as exc:
raise RuntimeError(
f"Non-JSON response from {url} status={status} content-type={content_type}: {raw[:1000]}"
) from exc
return parsed
def normalize_response(resp: dict[str, Any]) -> Any:
if isinstance(resp, dict):
if "data" in resp:
return resp["data"]
if "ret" in resp and "msg" in resp:
return resp
return resp
def common_body(args: argparse.Namespace) -> dict[str, Any]:
body: dict[str, Any] = {
"appId": args.app_id,
"platformId": args.platform_id,
"pid": str(args.pid),
}
if getattr(args, "version", None):
body["version"] = args.version
if getattr(args, "date", None):
body["date"] = args.date
return body
def cmd_init(args: argparse.Namespace) -> int:
data = {
"localUserId": str(args.local_user_id),
"user_key": args.user_key,
"base_url": args.base_url,
"app_id": args.app_id,
"platform_id": args.platform_id,
"created_at": dt.datetime.now(dt.timezone.utc).isoformat(),
}
write_json(args.credentials, data)
print(f"Wrote credentials: {args.credentials}")
return 0
def cmd_call(args: argparse.Namespace) -> int:
creds = load_credentials(args.credentials)
body = json.loads(args.body) if args.body else {}
resp = request_api(args.path, body, creds=creds, base_url=creds.get("base_url", args.base_url))
print(json.dumps(resp, ensure_ascii=False, indent=2))
return 0
def cmd_issue_list(args: argparse.Namespace) -> int:
creds = load_credentials(args.credentials)
body = common_body(args)
body.update(
{
"start": args.start,
"rows": args.rows,
"sortField": args.sort_field,
"sortOrder": args.sort_order,
}
)
if args.status:
body["status"] = args.status
if args.exception_type:
body["exceptionTypeList"] = args.exception_type
if args.extra:
body.update(json.loads(args.extra))
resp = request_api(
"/queryIssueList",
body,
creds=creds,
base_url=creds.get("base_url", args.base_url),
timeout=args.timeout,
)
if args.output:
write_json(args.output, resp)
print(json.dumps(resp, ensure_ascii=False, indent=2))
return 0
def cmd_issue_info(args: argparse.Namespace) -> int:
creds = load_credentials(args.credentials)
body = common_body(args)
body["issueId"] = args.issue_id
if args.extra:
body.update(json.loads(args.extra))
resp = request_api(
"/issueInfo",
body,
creds=creds,
base_url=creds.get("base_url", args.base_url),
method="GET",
timeout=args.timeout,
)
if args.output:
write_json(args.output, resp)
print(json.dumps(resp, ensure_ascii=False, indent=2))
return 0
def cmd_crash_list(args: argparse.Namespace) -> int:
creds = load_credentials(args.credentials)
body = common_body(args)
body.update({"issueId": args.issue_id, "start": args.start, "rows": args.rows})
if args.extra:
body.update(json.loads(args.extra))
resp = request_api(
"/crashList/crashDataType/undefined",
body,
creds=creds,
base_url=creds.get("base_url", args.base_url),
method="GET",
timeout=args.timeout,
)
if args.output:
write_json(args.output, resp)
print(json.dumps(resp, ensure_ascii=False, indent=2))
return 0
def cmd_crash_info(args: argparse.Namespace) -> int:
creds = load_credentials(args.credentials)
body = common_body(args)
body["crashId"] = args.crash_id
if args.issue_id:
body["issueId"] = args.issue_id
if args.extra:
body.update(json.loads(args.extra))
resp = request_api(
"/crashDoc/appId/{}/platformId/{}/crashHash/{}".format(
urllib.parse.quote(str(args.app_id), safe=""),
urllib.parse.quote(str(args.platform_id), safe=""),
urllib.parse.quote(str(args.crash_id), safe=""),
),
body,
creds=creds,
base_url=creds.get("base_url", args.base_url),
method="GET",
timeout=args.timeout,
)
if args.output:
write_json(args.output, resp)
print(json.dumps(resp, ensure_ascii=False, indent=2))
return 0
def cmd_query_access(args: argparse.Namespace) -> int:
creds = load_credentials(args.credentials)
if not args.device_id and not args.user_id:
raise SystemExit("Provide --device-id or --user-id.")
body: dict[str, Any] = {
"appId": args.app_id,
"platformId": args.platform_id,
"pid": str(args.pid),
"skipDistinctQuery": True,
"pageNumber": args.page_number,
"pageSize": args.page_size,
"exceptionCategoryList": args.exception_category,
}
if args.upload_time_begin_millis is not None:
body["uploadTimeBeginMillis"] = args.upload_time_begin_millis
else:
body["uploadTimeBeginMillis"] = int((time.time() - args.since_days * 86400) * 1000)
if args.device_id:
body["deviceIdList"] = [args.device_id]
if args.user_id:
body["userIdList"] = [args.user_id]
if args.extra:
body.update(json.loads(args.extra))
resp = request_api(
"/redir/api/queryAccess/queryAccessList",
body,
creds=creds,
base_url="https://crashsight.qq.com",
method="POST",
timeout=args.timeout,
)
if args.output:
write_json(args.output, resp)
print(json.dumps(resp, ensure_ascii=False, indent=2))
return 0
def add_common(parser: argparse.ArgumentParser) -> None:
parser.add_argument("--credentials", type=Path, default=DEFAULT_CREDENTIALS)
parser.add_argument("--base-url", default=DEFAULT_BASE_URL)
parser.add_argument("--app-id", default=DEFAULT_APP_ID)
parser.add_argument("--platform-id", type=int, default=DEFAULT_PLATFORM_ID)
parser.add_argument("--pid", default=DEFAULT_PID)
def add_query_common(parser: argparse.ArgumentParser) -> None:
add_common(parser)
parser.add_argument("--version")
parser.add_argument("--date", default="last_1_day")
parser.add_argument("--extra", help="JSON object merged into the request body")
parser.add_argument("--output", type=Path)
parser.add_argument("--timeout", type=int, default=60)
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description=__doc__)
sub = parser.add_subparsers(required=True)
p = sub.add_parser("init", help="Write local credentials file")
add_common(p)
p.add_argument("--local-user-id", required=True)
p.add_argument("--user-key", required=True)
p.set_defaults(func=cmd_init)
p = sub.add_parser("call", help="Raw API call for endpoint exploration")
add_common(p)
p.add_argument("path")
p.add_argument("--body", default="{}")
p.set_defaults(func=cmd_call)
p = sub.add_parser("issue-list", help="List CrashSight issues")
add_query_common(p)
p.add_argument("--start", type=int, default=0)
p.add_argument("--rows", type=int, default=100)
p.add_argument("--status", default="0,2")
p.add_argument("--exception-type")
p.add_argument("--sort-field", default="uploadTime")
p.add_argument("--sort-order", default="desc")
p.set_defaults(func=cmd_issue_list)
p = sub.add_parser("issue-info", help="Fetch issue details")
add_query_common(p)
p.add_argument("issue_id")
p.set_defaults(func=cmd_issue_info)
p = sub.add_parser("crash-list", help="List reports/samples under an issue")
add_query_common(p)
p.add_argument("issue_id")
p.add_argument("--start", type=int, default=0)
p.add_argument("--rows", type=int, default=20)
p.set_defaults(func=cmd_crash_list)
p = sub.add_parser("crash-info", help="Fetch one report/sample detail")
add_query_common(p)
p.add_argument("crash_id")
p.add_argument("--issue-id")
p.set_defaults(func=cmd_crash_info)
p = sub.add_parser("query-access", help="List recent reports for a device/user")
add_common(p)
p.add_argument("--device-id")
p.add_argument("--user-id")
p.add_argument("--since-days", type=int, default=3)
p.add_argument("--upload-time-begin-millis", type=int)
p.add_argument("--page-number", type=int, default=1)
p.add_argument("--page-size", type=int, default=100)
p.add_argument("--exception-category", action="append", default=[])
p.add_argument("--extra", help="JSON object merged into the request body")
p.add_argument("--output", type=Path)
p.add_argument("--timeout", type=int, default=60)
p.set_defaults(func=cmd_query_access)
return parser
def main(argv: list[str] | None = None) -> int:
parser = build_parser()
args = parser.parse_args(argv)
return args.func(args)
if __name__ == "__main__":
raise SystemExit(main())

View File

@ -0,0 +1,984 @@
#!/usr/bin/env python3
"""Collect and triage TH1 CrashSight daily ERROR rows.
This script builds on crashsight_api.py and keeps raw API captures under
Temp/CrashSight so the generated reports can be audited later.
"""
from __future__ import annotations
import argparse
import datetime as dt
import json
import re
import subprocess
import sys
import time
from collections import Counter, defaultdict
from pathlib import Path
from typing import Any
import crashsight_api as api
ROOT = Path(__file__).resolve().parents[2]
DEFAULT_VERSION = "0.7.2b"
DEFAULT_DATE = "last_1_day"
REPORT_DATE = dt.datetime.now().strftime("%Y-%m-%d")
REAL_EXCEPTION_NAMES = {
"NullReferenceException",
"KeyNotFoundException",
"InvalidOperationException",
"ArgumentNullException",
"ArgumentException",
"IndexOutOfRangeException",
"MemoryPackSerializationException",
"DllNotFoundException",
"Exception",
"FileNotFoundException",
"IOException",
"FormatException",
"NotSupportedException",
"ObjectDisposedException",
}
EXCEPTION_CONTEXT_RE = re.compile(
r"(?i)(?:\bSystem\.(?:NullReference|KeyNotFound|InvalidOperation|ArgumentNull|Argument|IndexOutOfRange|MemoryPackSerialization|DllNotFound|FileNotFound|IO|Format|NotSupported|ObjectDisposed)[A-Za-z0-9_.]*Exception\b|"
r"\b[A-Za-z0-9_.]*(?:NullReferenceException|KeyNotFoundException|InvalidOperationException|ArgumentNullException|ArgumentException|IndexOutOfRangeException|MemoryPackSerializationException|DllNotFoundException|FileNotFoundException|IOException|FormatException|NotSupportedException|ObjectDisposedException)\b|"
r"\bSystem\.Exception\s*:|异常类型\s*:\s*(?:System\.)?Exception\b|"
r"Object reference not set|"
r"异常类型\s*:|异常信息\s*:|调用堆栈\s*:|"
r"listener failed:\s*(?:System\.|MemoryPack\.)|"
r"Timer任务执行异常|"
r"MemoryPackSerializationException|"
r"failed in provider at creating formatter|"
r"Type implements IMemoryPackFormatterRegister|"
r"\bat\s+[A-Za-z0-9_.<>`]+\s*\()"
)
PLAIN_LOGERROR_HINTS = [
"CompleteExecute Player 不一致",
"OnReceivedActionExcute Player 不一致",
"Player 不一致",
"Map不一致",
"存在相似action",
"不应该出现在",
"CheckCan No",
"ActionConfirm send failed",
"ForceUpdate 玩家网络映射失败",
"P2P message send failed",
"安全写入失败",
"Wrong With Fragment",
"多语言ID为空",
"Steam not logged in",
"死循环了",
"CollectData upload failed",
"PlayerBugReport upload failed",
"STS request failed",
]
def write_json(path: Path, data: Any) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
with path.open("w", encoding="utf-8", newline="\n") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.write("\n")
def read_json(path: Path) -> Any:
with path.open("r", encoding="utf-8") as f:
return json.load(f)
def safe_name(text: str) -> str:
text = re.sub(r"[^0-9A-Za-z._-]+", "_", text)
text = re.sub(r"_+", "_", text).strip("_")
return text or "unknown"
def utc_now_iso() -> str:
return dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat()
def local_now_text() -> str:
return dt.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def version_occurrence(row: dict[str, Any], version: str) -> dict[str, Any]:
for item in row.get("issueVersions") or []:
if item.get("version") == version:
return {
"count": int(item.get("count") or 0),
"deviceCount": int(item.get("deviceCount") or 0),
"firstUploadTime": item.get("firstUploadTime") or row.get("firstUploadTime") or "",
"lastUploadTime": item.get("lastUploadTime") or row.get("lastestUploadTime") or "",
}
return {
"count": int(row.get("esCount") or row.get("count") or row.get("crashNum") or 0),
"deviceCount": int(row.get("esDeviceCount") or row.get("imeiCount") or 0),
"firstUploadTime": row.get("firstUploadTime") or "",
"lastUploadTime": row.get("lastestUploadTime") or "",
}
def nested_get(data: dict[str, Any], *keys: str) -> Any:
cur: Any = data
for key in keys:
if not isinstance(cur, dict):
return None
cur = cur.get(key)
return cur
def issue_text(row: dict[str, Any]) -> str:
parts: list[str] = []
for key in ("exceptionName", "exceptionMessage", "keyStack"):
value = row.get(key)
if value:
parts.append(str(value))
es = row.get("esMap") or {}
for key in ("exceptionMessage", "stackText", "exceptionType", "expName"):
value = es.get(key)
if value:
parts.append(str(value))
crash = nested_get(row, "lastMatchedReport", "crashMap") or {}
for key in ("expName", "expMessage", "callStack", "rawStack", "retraceCrashDetail"):
value = crash.get(key)
if value:
parts.append(str(value))
return "\n".join(parts)
def preview_message(row: dict[str, Any], limit: int = 180) -> str:
msg = str(row.get("exceptionMessage") or nested_get(row, "lastMatchedReport", "crashMap", "expMessage") or "")
msg = re.sub(r"\s+", " ", msg).strip()
return msg[: limit - 1] + "" if len(msg) > limit else msg
def classify(row: dict[str, Any]) -> dict[str, Any]:
name = str(row.get("exceptionName") or nested_get(row, "lastMatchedReport", "crashMap", "expName") or "")
text = issue_text(row)
if name and name != "UnityLogError":
return {"class": "blocking", "reason": f"CrashSight exception type is {name}"}
if EXCEPTION_CONTEXT_RE.search(text):
return {"class": "blocking", "reason": "UnityLogError contains concrete exception or stack context"}
for hint in PLAIN_LOGERROR_HINTS:
if hint in text:
return {"class": "logerror", "reason": f"plain diagnostic: {hint}"}
return {"class": "logerror", "reason": "UnityLogError without concrete exception object/stack"}
def category_for(row: dict[str, Any], klass: str) -> dict[str, str]:
text = issue_text(row)
msg = preview_message(row, 260)
name = str(row.get("exceptionName") or "")
if klass == "blocking":
if "steam_api64" in text or "DllNotFoundException" in text or name == "DllNotFoundException":
return {"id": "steam-api64-dll-missing", "title": "Steam API DLL 缺失"}
if "Steamworks is not initialized" in text:
return {"id": "steamworks-not-initialized", "title": "Steamworks 未初始化"}
if "IndexOutOfRangeException" in text and "TMP_Text.DrawUnderlineMesh" in text:
return {"id": "tmp-underline-indexoutofrange", "title": "TMP 下划线渲染数组越界"}
if "IndexOutOfRangeException" in text and ("TMP_TextUtilities.FindNearestCharacterOnLine" in text or "TMP_InputField" in text):
return {"id": "tmp-inputfield-cursor-indexoutofrange", "title": "TMP 输入框光标数组越界"}
if "UnitTypeTransform ReservedOnTransform failed" in text:
return {"id": "unit-transform-reserved-null", "title": "单位类型转换技能空引用"}
if "UIBottomBottomBarView" in text:
return {"id": "bottom-sl-resume-null", "title": "底栏 SL/Resume 空引用"}
if "ShowUIAnnounceMajorEvent" in text:
return {"id": "announce-major-event-null", "title": "重大事件公告 UI 空引用"}
if "SANAEDIVINE" in text or "SANAENINE" in text:
return {"id": "sanae-onheal-null", "title": "早苗治疗技能空引用"}
if "MapInteraction_OnTileClicked_Move" in text:
return {"id": "map-click-move-keynotfound", "title": "点击移动字典 Key 缺失"}
if "fj.bgn" in text:
return {"id": "maprenderer-highlight-keynotfound", "title": "移动攻击高亮字典 Key 缺失"}
if "MemoryPack" in text or "IMemoryPackFormatterRegister" in text or "failed in provider at creating formatter" in text:
return {"id": "memorypack-serialization", "title": "MemoryPack 序列化/反序列化异常"}
if "NullReferenceException" in text or name == "NullReferenceException" or "Object reference not set" in text:
return {"id": "null-reference", "title": "空引用异常"}
if "IndexOutOfRangeException" in text or name == "IndexOutOfRangeException":
return {"id": "index-out-of-range", "title": "IndexOutOfRangeException"}
if "KeyNotFoundException" in text:
return {"id": "key-not-found", "title": "字典 Key 缺失异常"}
if "InvalidOperationException" in text or name == "InvalidOperationException":
return {"id": "invalid-operation", "title": "InvalidOperationException"}
if "ArgumentNullException" in text or name == "ArgumentNullException":
return {"id": "argument-null", "title": "参数为空异常"}
return {"id": safe_name(name.lower() or msg[:40].lower()), "title": name or msg[:60] or "阻断异常"}
if "CompleteExecute Player 不一致" in text:
return {"id": "action-completeexecute-player-mismatch", "title": "行动执行玩家不一致"}
if "OnReceivedActionExcute Player 不一致" in text or "ActionExcute Player 不一致" in text:
return {"id": "network-action-receive-player-mismatch", "title": "网络接收行动玩家不一致"}
if "Map不一致" in text or "Map 不一致" in text:
return {"id": "map-desync-diagnostic", "title": "地图/同步状态不一致诊断"}
if "存在相似action" in text:
return {"id": "duplicate-similar-action", "title": "相似 Action 重复诊断"}
if "死循环了" in text or "AI 行为次数过多" in text:
return {"id": "ai-loop-guard", "title": "AI 计算死循环保护"}
if "Wrong With FragmentCityConnectExpUp" in text:
return {"id": "fragment-city-connect-exp-up", "title": "FragmentCityConnectExpUp 数值异常"}
if "Wrong With Fragment" in text:
return {"id": "fragment-guard", "title": "Fragment 运行时保护日志"}
if "不应该出现在" in text:
return {"id": "invalid-action-circle-diagnostic", "title": "不可执行行动圈诊断"}
if "CheckCan No" in text:
return {"id": "checkcan-no-diagnostic", "title": "CheckCan 拒绝诊断"}
if "ForceUpdate 玩家网络映射失败" in text:
return {"id": "forceupdate-player-net-map", "title": "ForceUpdate 玩家网络映射失败"}
if "OnReceivedActionExcute MapHash" in text or "OnReceivedActionConfirm MapHash" in text or "OnReceivedActionConfirm Version" in text or "message.Index" in text:
return {"id": "action-sync-version-index", "title": "行动同步版本/索引不一致"}
if "SendRequestForceUpdate" in text or "触发断线重连" in text:
return {"id": "reconnect-forceupdate", "title": "断线重连/ForceUpdate 诊断"}
if (
"ActionConfirm send failed" in text
or "P2P message send failed" in text
or "Failed to send" in text
or "房主广播失败" in text
or "发送给房主失败" in text
or "发送给成员失败" in text
or "P2P broadcast preflight failed" in text
or "ActionExecute broadcast failed" in text
):
return {"id": "network-send-failure", "title": "网络发送失败诊断"}
if (
"应用层拒绝连接" in text
or "远程超时" in text
or "Connection failed" in text
or "连接超时" in text
or "未知连接失败原因" in text
or "P2P connection error" in text
or "Failed to enter lobby" in text
or "Failed to create lobby" in text
or "Failed to refresh lobby data" in text
):
return {"id": "p2p-lobby-connection-failure", "title": "P2P/大厅连接失败诊断"}
if "CollectData upload failed" in text or "PlayerBugReport upload failed" in text or "STS request failed" in text:
return {"id": "sts-upload-failure", "title": "STS/OSS 上传失败诊断"}
if "OSS PostObject 上传失败" in text or "WorkshopModUploader" in text:
return {"id": "oss-workshop-upload-failure", "title": "OSS/创意工坊上传失败诊断"}
if "differs (serialized data mismatch)" in text or "cfo.iqk" in text or re.search(r"\b[A-Za-z0-9_.]+\.Count:\s*\d+\s*!=\s*\d+", text):
return {"id": "mapdata-diff-diagnostic", "title": "MapData 序列化差异诊断"}
if "地图数据反序列化失败" in text or "反序列化后的地图数据不完整" in text or "reflection error" in text:
return {"id": "mapdata-deserialize-compat", "title": "地图反序列化/版本兼容诊断"}
if "[MatchSettlementStuck]" in text:
return {"id": "match-settlement-stuck-fallback", "title": "结算卡住兜底诊断"}
if "Origin Player is null" in text:
return {"id": "origin-player-null-diagnostic", "title": "Origin Player 为空诊断"}
if "OnGridInfoAction Error: Main.MapData is null" in text or "FragmentDie: UnitRenderer 为空" in text:
return {"id": "ui-renderer-null-guard", "title": "UI/Renderer 空保护诊断"}
if "FMOD failed" in text or "RenderTexture.Create failed" in text:
return {"id": "local-device-capability", "title": "本机音频/显卡能力诊断"}
if "[Achievement]" in text:
return {"id": "achievement-file-diagnostic", "title": "成就文件损坏诊断"}
if "BeforeUnitDamaged Error" in text:
return {"id": "damage-grid-null-diagnostic", "title": "受击生命周期格子为空诊断"}
if "Hidden/InternalErrorShader" in text:
return {"id": "shader-fallback-diagnostic", "title": "Shader fallback 诊断"}
if "GetPointerTouchInfo failed" in text:
return {"id": "touch-info-platform-diagnostic", "title": "触控信息平台诊断"}
if "多语言ID为空" in text or "Multilingual" in text:
return {"id": "multilingual-empty-id", "title": "多语言 ID 为空"}
if "安全写入失败" in text:
return {"id": "safe-write-failure", "title": "本地安全写入失败"}
if "Steam not logged in" in text or "Steam" in text and "logged" in text:
return {"id": "steam-env-diagnostic", "title": "Steam 环境诊断"}
return {"id": "other-logerror", "title": "其他项目诊断日志"}
def issue_url(row: dict[str, Any], app_id: str) -> str:
issue_id = row.get("issueId") or row.get("issueHash") or ""
return f"https://crashsight.qq.com/crash-reporting/errors/{app_id}/{issue_id}?pid=10"
def fetch_issue_pages(args: argparse.Namespace, out_dir: Path) -> dict[str, Any]:
creds = api.load_credentials(args.credentials)
rows: list[dict[str, Any]] = []
pages: list[dict[str, Any]] = []
num_found: int | None = None
start = 0
page_dir = out_dir / "issue_pages"
page_dir.mkdir(parents=True, exist_ok=True)
while True:
body: dict[str, Any] = {
"appId": args.app_id,
"platformId": args.platform_id,
"pid": str(args.pid),
"version": args.version,
"date": args.date,
"status": args.status,
"exceptionCategoryList": args.exception_category,
"start": start,
"rows": args.rows,
"sortField": args.sort_field,
"sortOrder": args.sort_order,
}
resp = api.request_api(
"/queryIssueList",
body,
creds=creds,
base_url=creds.get("base_url", args.base_url),
timeout=args.timeout,
)
ret = resp.get("ret") or resp.get("data") or {}
page_rows = ret.get("issueList") or []
if num_found is None:
num_found = int(ret.get("numFound") or 0)
page_path = page_dir / f"page_{start:04d}.json"
write_json(page_path, resp)
rows.extend(page_rows)
pages.append({"start": start, "count": len(page_rows), "file": str(page_path.relative_to(out_dir))})
print(f"fetched start={start} rows={len(page_rows)} total={num_found}", flush=True)
if not page_rows:
break
start += args.rows
if num_found is not None and start >= num_found:
break
if args.max_pages and len(pages) >= args.max_pages:
break
time.sleep(args.sleep)
dedup: dict[str, dict[str, Any]] = {}
for row in rows:
issue_id = str(row.get("issueId") or row.get("issueHash") or "")
if issue_id and issue_id not in dedup:
dedup[issue_id] = row
result = {
"capturedAtUtc": utc_now_iso(),
"capturedAtLocal": local_now_text(),
"filter": {
"version": args.version,
"date": args.date,
"status": args.status,
"exceptionCategoryList": args.exception_category,
"sortField": args.sort_field,
"sortOrder": args.sort_order,
"rows": args.rows,
},
"numFound": num_found,
"pageSummaries": pages,
"totalRowsRaw": len(rows),
"totalRowsDeduped": len(dedup),
"issues": list(dedup.values()),
}
write_json(out_dir / "daily_issue_rows.json", result)
return result
def summarize_issues(data: dict[str, Any], version: str, app_id: str) -> dict[str, Any]:
issues = data.get("issues") or []
enriched: list[dict[str, Any]] = []
cats: dict[str, dict[str, Any]] = {}
class_counter = Counter()
class_occ = Counter()
for row in issues:
c = classify(row)
stats = version_occurrence(row, version)
cat = category_for(row, c["class"])
issue_id = str(row.get("issueId") or row.get("issueHash") or "")
record = {
"issueId": issue_id,
"class": c["class"],
"classificationReason": c["reason"],
"categoryId": cat["id"],
"categoryTitle": cat["title"],
"exceptionName": row.get("exceptionName") or "",
"message": preview_message(row, 360),
"keyStack": (row.get("keyStack") or "").strip(),
"count": stats["count"],
"deviceCount": stats["deviceCount"],
"firstUploadTime": stats["firstUploadTime"],
"lastUploadTime": stats["lastUploadTime"],
"url": issue_url(row, app_id),
"lastCrashId": nested_get(row, "lastMatchedReport", "crashMap", "crashId") or "",
"lastDeviceId": nested_get(row, "lastMatchedReport", "crashMap", "deviceId") or "",
"hasLogFile": bool(nested_get(row, "lastMatchedReport", "crashMap", "hasLogFile")),
"raw": row,
}
enriched.append(record)
class_counter[c["class"]] += 1
class_occ[c["class"]] += int(stats["count"] or 0)
bucket = cats.setdefault(
cat["id"],
{
"id": cat["id"],
"title": cat["title"],
"class": c["class"],
"issueCount": 0,
"occurrences": 0,
"deviceCount": 0,
"issues": [],
"exampleMessages": [],
},
)
bucket["issueCount"] += 1
bucket["occurrences"] += int(stats["count"] or 0)
bucket["deviceCount"] += int(stats["deviceCount"] or 0)
bucket["issues"].append(issue_id)
if len(bucket["exampleMessages"]) < 5:
bucket["exampleMessages"].append(record["message"])
categories = sorted(cats.values(), key=lambda x: (-x["occurrences"], x["title"]))
enriched.sort(key=lambda x: (-x["count"], x["issueId"]))
return {
"capturedAtUtc": data.get("capturedAtUtc"),
"capturedAtLocal": data.get("capturedAtLocal"),
"filter": data.get("filter"),
"numFound": data.get("numFound"),
"totalRowsRaw": data.get("totalRowsRaw"),
"totalRowsDeduped": data.get("totalRowsDeduped"),
"classCounts": dict(class_counter),
"classOccurrences": dict(class_occ),
"categories": categories,
"issues": enriched,
}
def collect(args: argparse.Namespace) -> int:
out_dir = args.out_dir or ROOT / "Temp" / "CrashSight" / f"Daily_{REPORT_DATE}_{safe_name(args.version)}"
out_dir.mkdir(parents=True, exist_ok=True)
data = fetch_issue_pages(args, out_dir)
summary = summarize_issues(data, args.version, args.app_id)
write_json(out_dir / "classification_summary.json", summary)
write_json(out_dir / "blocking_candidates.json", [i for i in summary["issues"] if i["class"] == "blocking"])
write_json(out_dir / "logerror_rows.json", [i for i in summary["issues"] if i["class"] == "logerror"])
print(
"classification: "
f"blocking={summary['classCounts'].get('blocking', 0)} "
f"logerror={summary['classCounts'].get('logerror', 0)} "
f"out={out_dir}",
flush=True,
)
return 0
def extract_crash_rows(resp: dict[str, Any]) -> list[dict[str, Any]]:
ret = resp.get("ret") or resp.get("data") or {}
for key in ("crashList", "list", "rows", "crashs"):
value = ret.get(key)
if isinstance(value, list):
return value
if isinstance(ret, list):
return ret
return []
def fetch_context(args: argparse.Namespace) -> int:
out_dir = args.out_dir
summary = read_json(out_dir / "classification_summary.json")
creds = api.load_credentials(args.credentials)
context_dir = out_dir / "blocking_contexts"
context_dir.mkdir(parents=True, exist_ok=True)
contexts: list[dict[str, Any]] = []
blocking = [i for i in summary["issues"] if i["class"] == "blocking"]
if args.category:
blocking = [i for i in blocking if i["categoryId"] in set(args.category)]
for idx, issue in enumerate(blocking, start=1):
issue_id = issue["issueId"]
ctx: dict[str, Any] = {"issue": issue, "crashList": None, "crashDocs": [], "access": None}
body = {
"appId": args.app_id,
"platformId": args.platform_id,
"pid": str(args.pid),
"version": args.version,
"date": args.date,
"issueId": issue_id,
"start": 0,
"rows": args.sample_rows,
}
try:
crash_list = api.request_api(
"/crashList/crashDataType/undefined",
body,
creds=creds,
base_url=creds.get("base_url", args.base_url),
method="GET",
timeout=args.timeout,
)
ctx["crashList"] = crash_list
except Exception as exc: # noqa: BLE001 - preserved in audit output
ctx["crashListError"] = str(exc)
crash_list = {}
rows = extract_crash_rows(crash_list)
crash_ids: list[str] = []
device_id = issue.get("lastDeviceId") or ""
for row in rows[: args.sample_docs]:
crash_id = str(row.get("crashId") or row.get("crashHash") or row.get("id") or "")
if crash_id:
crash_ids.append(crash_id)
if not device_id:
device_id = str(row.get("deviceId") or row.get("mac") or "")
if issue.get("lastCrashId") and issue["lastCrashId"] not in crash_ids:
crash_ids.insert(0, issue["lastCrashId"])
for crash_id in crash_ids[: args.sample_docs]:
info_body = {
"appId": args.app_id,
"platformId": args.platform_id,
"pid": str(args.pid),
"version": args.version,
"date": args.date,
"issueId": issue_id,
"crashId": crash_id,
}
try:
doc = api.request_api(
f"/crashDoc/appId/{args.app_id}/platformId/{args.platform_id}/crashHash/{crash_id}",
info_body,
creds=creds,
base_url=creds.get("base_url", args.base_url),
method="GET",
timeout=args.timeout,
)
ctx["crashDocs"].append(doc)
except Exception as exc: # noqa: BLE001
ctx.setdefault("crashDocErrors", []).append({"crashId": crash_id, "error": str(exc)})
if device_id:
access_body = {
"appId": args.app_id,
"platformId": args.platform_id,
"pid": str(args.pid),
"skipDistinctQuery": True,
"pageNumber": 1,
"pageSize": args.access_rows,
"uploadTimeBeginMillis": int((time.time() - args.access_days * 86400) * 1000),
"deviceIdList": [device_id],
"exceptionCategoryList": ["ERROR"],
}
try:
ctx["access"] = api.request_api(
"/redir/api/queryAccess/queryAccessList",
access_body,
creds=creds,
base_url="https://crashsight.qq.com",
method="POST",
timeout=args.timeout,
)
except Exception as exc: # noqa: BLE001
ctx["accessError"] = str(exc)
ctx_path = context_dir / f"{idx:03d}_{issue_id}.json"
write_json(ctx_path, ctx)
contexts.append({"issueId": issue_id, "file": str(ctx_path.relative_to(out_dir))})
print(f"context {idx}/{len(blocking)} {issue_id}", flush=True)
time.sleep(args.sleep)
write_json(out_dir / "blocking_context_index.json", contexts)
return 0
def rg_locations(pattern: str, limit: int = 8) -> list[str]:
if not pattern or len(pattern) < 3:
return []
cmd = [
"rg",
"-n",
"--fixed-strings",
"--glob",
"*.cs",
pattern,
"Unity/Assets/Scripts",
]
try:
result = subprocess.run(
cmd,
cwd=ROOT,
capture_output=True,
text=True,
encoding="utf-8",
errors="replace",
timeout=12,
check=False,
)
except Exception:
return []
lines = [line.strip() for line in result.stdout.splitlines() if line.strip()]
return lines[:limit]
def category_search_terms(category_id: str, messages: list[str]) -> list[str]:
mapping = {
"action-completeexecute-player-mismatch": ["CompleteExecute Player 不一致"],
"network-action-receive-player-mismatch": ["OnReceivedActionExcute Player 不一致", "Player 不一致"],
"map-desync-diagnostic": ["Map不一致", "Map 不一致"],
"duplicate-similar-action": ["存在相似action"],
"ai-loop-guard": ["死循环了"],
"fragment-city-connect-exp-up": ["Wrong With FragmentCityConnectExpUp"],
"fragment-guard": ["Wrong With Fragment"],
"invalid-action-circle-diagnostic": ["不应该出现在"],
"checkcan-no-diagnostic": ["CheckCan No"],
"forceupdate-player-net-map": ["ForceUpdate 玩家网络映射失败"],
"network-send-failure": ["ActionConfirm send failed", "P2P message send failed", "Failed to send"],
"action-sync-version-index": ["OnReceivedActionConfirm Version 不一致", "message.Index > Main.MapData.Net.Actions.Count"],
"reconnect-forceupdate": ["SendRequestForceUpdate", "触发断线重连"],
"p2p-lobby-connection-failure": ["Connection failed - Reason", "Failed to enter lobby"],
"sts-upload-failure": ["CollectData upload failed", "STS request failed", "PlayerBugReport upload failed"],
"oss-workshop-upload-failure": ["OSS PostObject 上传失败", "WorkshopModUploader"],
"mapdata-diff-diagnostic": ["serialized data mismatch", "MapDataDebug"],
"mapdata-deserialize-compat": ["地图数据反序列化失败", "reflection error"],
"match-settlement-stuck-fallback": ["MatchSettlementStuck"],
"origin-player-null-diagnostic": ["Origin Player is null"],
"ui-renderer-null-guard": ["OnGridInfoAction Error", "FragmentDie: UnitRenderer 为空"],
"local-device-capability": ["FMOD failed", "RenderTexture.Create failed"],
"achievement-file-diagnostic": ["[Achievement] 读取文件失败", "achievement.json"],
"damage-grid-null-diagnostic": ["BeforeUnitDamaged Error"],
"shader-fallback-diagnostic": ["Hidden/InternalErrorShader"],
"touch-info-platform-diagnostic": ["GetPointerTouchInfo failed"],
"multilingual-empty-id": ["多语言ID为空"],
"safe-write-failure": ["安全写入失败"],
"steam-env-diagnostic": ["Steam not logged in"],
"memorypack-serialization": ["MemoryPackSerializationException", "failed in provider at creating formatter"],
"tmp-underline-indexoutofrange": ["DrawUnderlineMesh", "<u>"],
"tmp-inputfield-cursor-indexoutofrange": ["TMP_InputField", "FindNearestCharacterOnLine"],
"steamworks-not-initialized": ["SearchPublicLobbies", "OnRefreshLobbyClicked"],
"steam-api64-dll-missing": ["SearchPublicLobbies", "steam_api64"],
"unit-transform-reserved-null": ["UnitTypeTransform ReservedOnTransform failed", "ReservedOnTransform"],
"bottom-sl-resume-null": ["OnSLButtonClicked", "ResumeMatch"],
"announce-major-event-null": ["UIAnnounceMajorEventView", "ShowUIAnnounceMajorEvent"],
"sanae-onheal-null": ["SANAEDIVINE - SANAENINE - OnHeal", "OmikujiAnim"],
"map-click-move-keynotfound": ["MapInteraction_OnTileClicked_Move", "OnTileClicked"],
"maprenderer-highlight-keynotfound": ["SetUnitAllMoveAttackTargetHighlight", "ROUnitMap"],
"null-reference": ["NullReferenceException", "Object reference not set"],
"key-not-found": ["KeyNotFoundException"],
"invalid-operation": ["InvalidOperationException"],
"argument-null": ["ArgumentNullException"],
}
return mapping.get(category_id, []) + [m[:60] for m in messages[:1] if len(m) > 8]
def load_contexts(out_dir: Path) -> dict[str, dict[str, Any]]:
context_dir = out_dir / "blocking_contexts"
contexts: dict[str, dict[str, Any]] = {}
if not context_dir.exists():
return contexts
for path in context_dir.glob("*.json"):
try:
ctx = read_json(path)
except Exception:
continue
issue_id = str((ctx.get("issue") or {}).get("issueId") or "")
if issue_id:
contexts[issue_id] = ctx
return contexts
def access_items(access_resp: dict[str, Any] | None) -> list[dict[str, Any]]:
if not access_resp:
return []
ret = access_resp.get("ret") or {}
data = access_resp.get("data") or (ret.get("data") if isinstance(ret, dict) else None)
result = data.get("result") if isinstance(data, dict) else None
for obj in (result, data, ret):
if isinstance(obj, dict):
for key in ("records", "list", "rows", "result", "issueList"):
val = obj.get(key)
if isinstance(val, list):
return val
if isinstance(obj, list):
return obj
return []
def crash_doc_text(doc: dict[str, Any]) -> str:
ret = doc.get("ret") or doc.get("data") or doc
parts: list[str] = []
for root in (ret.get("crashMap") if isinstance(ret, dict) else None, ret.get("detailMap") if isinstance(ret, dict) else None, ret.get("esMap") if isinstance(ret, dict) else None):
if not isinstance(root, dict):
continue
for key in ("expName", "expMessage", "callStack", "rawStack", "retraceCrashDetail", "stackText", "detail"):
value = root.get(key)
if value:
parts.append(str(value))
return "\n".join(parts)
def md_escape(text: Any) -> str:
return str(text if text is not None else "").replace("|", "\\|").replace("\n", "<br>")
def write_reports(args: argparse.Namespace) -> int:
out_dir = args.out_dir
summary = read_json(out_dir / "classification_summary.json")
contexts = load_contexts(out_dir)
report_dir = args.report_dir or ROOT / "MD" / f"CrashSight_{REPORT_DATE}_{safe_name(args.version)}_1day"
blocking_dir = report_dir / "blocking"
blocking_dir.mkdir(parents=True, exist_ok=True)
categories = summary["categories"]
issues = summary["issues"]
issue_by_id = {i["issueId"]: i for i in issues}
cat_locations: dict[str, list[str]] = {}
for cat in categories:
locs: list[str] = []
for term in category_search_terms(cat["id"], cat.get("exampleMessages") or []):
for loc in rg_locations(term):
if loc not in locs:
locs.append(loc)
if locs:
break
cat_locations[cat["id"]] = locs[:8]
blocking_cats = [c for c in categories if c["class"] == "blocking"]
logerror_cats = [c for c in categories if c["class"] == "logerror"]
blocking_reports: list[dict[str, Any]] = []
for idx, cat in enumerate(blocking_cats, start=1):
report_name = f"{idx:03d}_{safe_name(cat['id'])}.md"
report_path = blocking_dir / report_name
cat_issues = [issue_by_id[i] for i in cat["issues"] if i in issue_by_id]
sample_contexts = [contexts[i["issueId"]] for i in cat_issues if i["issueId"] in contexts]
lines: list[str] = []
lines.append(f"# {cat['title']}")
lines.append("")
lines.append(f"- 分类blocking")
lines.append(f"- Issue 数:{cat['issueCount']}")
lines.append(f"- `{args.version}` 最近一天次数:{cat['occurrences']}")
lines.append(f"- 设备数合计:{cat['deviceCount']}")
lines.append(f"- 报告生成:{summary.get('capturedAtLocal')}")
lines.append("")
lines.append("## Issue")
lines.append("")
lines.append("| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |")
lines.append("|---|---|---:|---:|---|---|")
for issue in cat_issues:
lines.append(
f"| [{issue['issueId']}]({issue['url']}) | {md_escape(issue['exceptionName'])} | "
f"{issue['count']} | {issue['deviceCount']} | {md_escape(issue['lastUploadTime'])} | {md_escape(issue['message'])} |"
)
lines.append("")
lines.append("## 设备上下文")
lines.append("")
if sample_contexts:
for ctx in sample_contexts[: args.contexts_per_report]:
issue = ctx.get("issue") or {}
lines.append(f"### {issue.get('issueId')}")
lines.append("")
lines.append(f"- 样本 CrashId`{issue.get('lastCrashId') or '-'}`")
lines.append(f"- 样本 DeviceId`{issue.get('lastDeviceId') or '-'}`")
lines.append(f"- CrashSight 附带日志文件:`{issue.get('hasLogFile')}`")
docs = ctx.get("crashDocs") or []
if docs:
text = crash_doc_text(docs[0])
excerpt = re.sub(r"\n{3,}", "\n\n", text).strip()
if len(excerpt) > 2200:
excerpt = excerpt[:2200] + "\n..."
lines.append("")
lines.append("最终上报内容:")
lines.append("")
lines.append("```text")
lines.append(excerpt or "(empty)")
lines.append("```")
access = access_items(ctx.get("access"))
if access:
lines.append("")
lines.append("同设备最近 ERROR 上报序列:")
lines.append("")
lines.append("| 时间 | Issue | 类型 | 消息 |")
lines.append("|---|---|---|---|")
for item in access[:8]:
lines.append(
f"| {md_escape(item.get('uploadTime') or item.get('crashTime') or item.get('lastestUploadTime') or '')} | "
f"{md_escape(item.get('issueId') or item.get('issueHash') or '')} | "
f"{md_escape(item.get('expName') or item.get('exceptionName') or '')} | "
f"{md_escape((item.get('expMessage') or item.get('exceptionMessage') or '')[:180])} |"
)
if not docs and not access:
lines.append("")
lines.append("该样本未能从 API 取得可用 device 上下文,根因判断保持不完整。")
lines.append("")
else:
lines.append("未抓到 blocking_contexts本类根因只能基于 Issue 列表和栈,属于不完整分析。")
lines.append("")
lines.append("## 代码位置")
lines.append("")
locs = cat_locations.get(cat["id"]) or []
if locs:
for loc in locs:
lines.append(f"- `{loc}`")
else:
lines.append("- 未通过固定文本直接定位;需要结合解码栈继续追。")
lines.append("")
lines.append("## 判断")
lines.append("")
lines.append("这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。")
if sample_contexts and not any(nested_get(c, "issue", "hasLogFile") for c in sample_contexts):
lines.append("本批样本 `hasLogFile=false`API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。")
lines.append("")
lines.append("## 建议")
lines.append("")
lines.append("优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。")
report_path.write_text("\n".join(lines) + "\n", encoding="utf-8", newline="\n")
blocking_reports.append(
{
"categoryId": cat["id"],
"title": cat["title"],
"issueCount": cat["issueCount"],
"occurrences": cat["occurrences"],
"path": str(report_path.relative_to(report_dir)).replace("\\", "/"),
"issues": cat["issues"],
}
)
log_lines: list[str] = []
log_lines.append("# LogError Summary")
log_lines.append("")
log_lines.append(f"- 筛选范围:`{args.version}``{summary['filter'].get('date')}`ERRORstatus `{summary['filter'].get('status')}`")
log_lines.append(f"- 捕获时间:{summary.get('capturedAtLocal')}")
log_lines.append(f"- 非阻断 Issue{summary['classCounts'].get('logerror', 0)}")
log_lines.append(f"- 非阻断次数:{summary['classOccurrences'].get('logerror', 0)}")
log_lines.append("")
log_lines.append("## 分类汇总")
log_lines.append("")
log_lines.append("| 类别 | Issue 数 | 次数 | 设备数 | 代码位置 | 示例 Issue |")
log_lines.append("|---|---:|---:|---:|---|---|")
for cat in logerror_cats:
locs = cat_locations.get(cat["id"]) or []
issue_links = ", ".join(cat["issues"][:3])
loc_text = "<br>".join(locs[:3]) if locs else "未直接定位"
log_lines.append(
f"| {md_escape(cat['title'])} | {cat['issueCount']} | {cat['occurrences']} | {cat['deviceCount']} | "
f"{md_escape(loc_text)} | {md_escape(issue_links)} |"
)
log_lines.append("")
log_lines.append("## 明细")
log_lines.append("")
log_lines.append("| Issue | 类别 | 类型 | 次数 | 设备 | 最近上报 | 消息 |")
log_lines.append("|---|---|---|---:|---:|---|---|")
for issue in [i for i in issues if i["class"] == "logerror"]:
log_lines.append(
f"| [{issue['issueId']}]({issue['url']}) | {md_escape(issue['categoryTitle'])} | {md_escape(issue['exceptionName'])} | "
f"{issue['count']} | {issue['deviceCount']} | {md_escape(issue['lastUploadTime'])} | {md_escape(issue['message'])} |"
)
(report_dir / "logerror_summary.md").write_text("\n".join(log_lines) + "\n", encoding="utf-8", newline="\n")
idx_lines: list[str] = []
idx_lines.append(f"# CrashSight {args.version} 最近一天 ERROR 分析")
idx_lines.append("")
idx_lines.append(f"- 捕获时间:{summary.get('capturedAtLocal')}")
idx_lines.append(f"- 筛选范围:`{args.version}``{summary['filter'].get('date')}`ERROR未处理/处理中")
idx_lines.append(f"- CrashSight numFound{summary.get('numFound')}")
idx_lines.append(f"- 去重 Issue{summary.get('totalRowsDeduped')}")
idx_lines.append(f"- blocking{summary['classCounts'].get('blocking', 0)} 个 Issue{summary['classOccurrences'].get('blocking', 0)}")
idx_lines.append(f"- logerror{summary['classCounts'].get('logerror', 0)} 个 Issue{summary['classOccurrences'].get('logerror', 0)}")
idx_lines.append(f"- 原始数据:`{out_dir}`")
idx_lines.append("")
idx_lines.append("## 阻断家族")
idx_lines.append("")
if blocking_cats:
idx_lines.append("| 家族 | Issue 数 | 次数 | 报告 |")
idx_lines.append("|---|---:|---:|---|")
for rep in blocking_reports:
idx_lines.append(
f"| {md_escape(rep['title'])} | {rep['issueCount']} | {rep['occurrences']} | "
f"[{md_escape(rep['path'])}]({rep['path']}) |"
)
else:
idx_lines.append("未发现包含真实异常对象/栈的 blocking Issue。")
idx_lines.append("")
idx_lines.append("## 非阻断高频")
idx_lines.append("")
idx_lines.append("| 类别 | Issue 数 | 次数 |")
idx_lines.append("|---|---:|---:|")
for cat in logerror_cats[:12]:
idx_lines.append(f"| {md_escape(cat['title'])} | {cat['issueCount']} | {cat['occurrences']} |")
idx_lines.append("")
idx_lines.append("## 报告")
idx_lines.append("")
idx_lines.append("- [LogError Summary](logerror_summary.md)")
for rep in blocking_reports:
idx_lines.append(f"- [{rep['title']}]({rep['path']})")
idx_lines.append("")
idx_lines.append("## 说明")
idx_lines.append("")
idx_lines.append("blocking 的判定只认真实异常类型、异常对象或调用栈;纯 `LogSystem.LogError` 业务状态诊断归入 logerror。")
if blocking_reports:
idx_lines.append("本次通过 CrashSight OpenAPI 抓取样本详情和同设备最近 ERROR 上报序列;若样本 `hasLogFile=false`,文档会明确标记上下文限制。")
(report_dir / "index.md").write_text("\n".join(idx_lines) + "\n", encoding="utf-8", newline="\n")
manifest = {
"date": REPORT_DATE,
"version": args.version,
"capture": {
"capturedAtUtc": summary.get("capturedAtUtc"),
"capturedAtLocal": summary.get("capturedAtLocal"),
"rawDir": str(out_dir),
"reportDir": str(report_dir),
},
"filter": summary.get("filter"),
"totalIssues": summary.get("totalRowsDeduped"),
"blockingIssues": summary["classCounts"].get("blocking", 0),
"blockingOccurrences": summary["classOccurrences"].get("blocking", 0),
"logerrorIssues": summary["classCounts"].get("logerror", 0),
"logerrorOccurrences": summary["classOccurrences"].get("logerror", 0),
"blockingReports": blocking_reports,
"categories": [
{
"id": c["id"],
"title": c["title"],
"class": c["class"],
"issueCount": c["issueCount"],
"occurrences": c["occurrences"],
"issues": c["issues"],
}
for c in categories
],
}
write_json(report_dir / "report_manifest.json", manifest)
print(f"wrote report: {report_dir}", flush=True)
return 0
def add_common(parser: argparse.ArgumentParser) -> None:
parser.add_argument("--credentials", type=Path, default=api.DEFAULT_CREDENTIALS)
parser.add_argument("--base-url", default=api.DEFAULT_BASE_URL)
parser.add_argument("--app-id", default=api.DEFAULT_APP_ID)
parser.add_argument("--platform-id", type=int, default=api.DEFAULT_PLATFORM_ID)
parser.add_argument("--pid", default=api.DEFAULT_PID)
parser.add_argument("--version", default=DEFAULT_VERSION)
parser.add_argument("--date", default=DEFAULT_DATE)
parser.add_argument("--status", default="0,2")
parser.add_argument("--timeout", type=int, default=90)
parser.add_argument("--sleep", type=float, default=0.2)
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description=__doc__)
sub = parser.add_subparsers(required=True)
p = sub.add_parser("collect", help="Fetch issue pages and classify rows")
add_common(p)
p.add_argument("--exception-category", default="ERROR")
p.add_argument("--rows", type=int, default=100)
p.add_argument("--sort-field", default="uploadTime")
p.add_argument("--sort-order", default="desc")
p.add_argument("--max-pages", type=int, default=0)
p.add_argument("--out-dir", type=Path)
p.set_defaults(func=collect)
p = sub.add_parser("fetch-context", help="Fetch samples and same-device context for blocking rows")
add_common(p)
p.add_argument("--out-dir", type=Path, required=True)
p.add_argument("--sample-rows", type=int, default=5)
p.add_argument("--sample-docs", type=int, default=2)
p.add_argument("--access-rows", type=int, default=30)
p.add_argument("--access-days", type=int, default=3)
p.add_argument("--category", action="append")
p.set_defaults(func=fetch_context)
p = sub.add_parser("write-reports", help="Generate MD reports from collected data")
add_common(p)
p.add_argument("--out-dir", type=Path, required=True)
p.add_argument("--report-dir", type=Path)
p.add_argument("--contexts-per-report", type=int, default=3)
p.set_defaults(func=write_reports)
return parser
def main(argv: list[str] | None = None) -> int:
parser = build_parser()
args = parser.parse_args(argv)
return args.func(args)
if __name__ == "__main__":
raise SystemExit(main())

View File

@ -8,6 +8,6 @@
2. 工具会自动读取 Unity OSS 编辑器保存的 `AccessKey ID` / `AccessKey Secret`,确认 `Endpoint``Bucket`
3. 点击「更新内容」拉取 `bugreport/` 下的 zip。
4. 选择条目查看玩家自述、版本、SteamID、CrashSight 设备 ID、设备信息、附带存档。
5. 点击「一键替换到本地存档」会删除目标目录下所有 `map_archive_*.dat` / `.bak`,再写入该汇报中的 `start + continue/end` 存档。
5. 点击「一键替换到本地存档」会删除目标目录下 `GameArchives/begin``quick_continue``continue``end` 内的存档文件,再按汇报中的子目录写回 `begin + continue/end` 存档。
也可以用 `config.local.json` 或环境变量覆盖 OSS 配置,该文件应只保留在本机。

View File

@ -27,6 +27,8 @@ from oss_viewer_config import merge_default_oss_config, merge_local_oss_config
DATA_DIR = APP_DIR / "Data"
CONFIG_PATH = APP_DIR / "config.local.json"
OSS_PREFIX = "bugreport/"
ARCHIVE_ROOT_FOLDER = "GameArchives"
ARCHIVE_FOLDERS = {"begin", "quick_continue", "continue", "end"}
def default_save_config_dir() -> str:
@ -45,6 +47,21 @@ def default_config() -> dict:
}
def archive_folder_for_manifest(archive: dict, source_file_name: str) -> str | None:
folder = Path(archive.get("archiveFolder") or "").name
if folder in ARCHIVE_FOLDERS:
return folder
kind = archive.get("kind")
if kind == "begin":
return "begin"
if kind == "end":
return "end"
if kind == "continue":
return "quick_continue" if source_file_name == "quick.dat" else "continue"
return None
def load_config() -> dict:
cfg = merge_default_oss_config(default_config())
if CONFIG_PATH.exists():
@ -222,14 +239,19 @@ def download_reports(cfg: dict) -> tuple[int, int, int]:
def replace_local_saves(report: ReportEntry, save_config_dir: str) -> tuple[int, int]:
target_dir = Path(os.path.expandvars(save_config_dir)).expanduser().resolve()
target_dir.mkdir(parents=True, exist_ok=True)
archive_root = target_dir / ARCHIVE_ROOT_FOLDER
archive_root.mkdir(parents=True, exist_ok=True)
deleted = 0
for pattern in ("map_archive_*.dat", "map_archive_*.dat.bak"):
for path in target_dir.glob(pattern):
if path.is_file():
path.unlink()
deleted += 1
for folder in ARCHIVE_FOLDERS:
folder_path = archive_root / folder
if not folder_path.exists():
continue
for pattern in ("*.dat", "*.dat.bak"):
for path in folder_path.glob(pattern):
if path.is_file():
path.unlink()
deleted += 1
copied = 0
archives = report.manifest.get("archives") or []
@ -239,7 +261,12 @@ def replace_local_saves(report: ReportEntry, save_config_dir: str) -> tuple[int,
source_file_name = Path(archive.get("sourceFileName") or "").name
if not entry_name or not source_file_name:
continue
destination = target_dir / source_file_name
archive_folder = archive_folder_for_manifest(archive, source_file_name)
if not archive_folder:
continue
destination_dir = archive_root / archive_folder
destination_dir.mkdir(parents=True, exist_ok=True)
destination = destination_dir / source_file_name
with zf.open(entry_name, "r") as source, destination.open("wb") as target:
shutil.copyfileobj(source, target)
copied += 1
@ -480,7 +507,7 @@ class PlayerBugViewer(Tk):
for archive in report.manifest.get("archives") or []:
rows.append((
"存档",
f"{archive.get('mode')} map={archive.get('mapId')} {archive.get('kind')} {archive.get('sourceFileName')} {human_bytes(int(archive.get('fileSize') or 0))}",
f"{archive.get('mode')} map={archive.get('mapId')} {archive.get('kind')} {archive.get('archiveFolder') or ''}/{archive.get('sourceFileName')} {human_bytes(int(archive.get('fileSize') or 0))}",
))
for field, value in rows:
self.preview.insert("", END, values=(field, value))
@ -505,7 +532,7 @@ class PlayerBugViewer(Tk):
confirmed = messagebox.askyesno(
"确认替换",
f"将清理本地所有 map_archive 存档,并替换为当前汇报内的存档\n\n目标目录:\n{target_dir}",
f"将清理本地 GameArchives 存档,并替换为当前汇报内的存档文件\n\n目标目录:\n{target_dir}",
)
if not confirmed:
return

View File

@ -24,6 +24,7 @@ using TH1_Core.Managers;
using TH1_Logic.Collect;
using TH1_Logic.Config;
using TH1_Logic.Core;
using TH1_Logic.GameArchive;
using TH1_Logic.MatchConfig;
using TH1_Logic.Net;
using TH1_Logic.Steam;
@ -2229,371 +2230,8 @@ namespace RuntimeData
return null;
}
public static bool SaveMapData(MapData map, bool isBegin=false, bool isEnd=false)
{
if (map == null) return false;
if (ShouldSkipMapArchive(map)) return false;
// 改为二进制文件扩展名
string path = Application.persistentDataPath + "/../Config/map_archive";
if (isBegin) path += "_begin";
else if (isEnd) path += "_end";
else path += "_continue";
if (map.Net.Mode == NetMode.Multi) path += "_multi";
path += $"_{map.MapID}.dat";
int retryCount = 3;
while (retryCount > 0)
{
try
{
byte[] bytes = SerializeMapArchive(map);
if (FileTools.SafeWriteFile(path, bytes))
{
InvalidateMapArchiveAvailabilityCache();
return true;
}
retryCount--;
if (retryCount <= 0)
{
LogSystem.LogError($"保存地图数据失败: 安全写入失败");
}
}
catch (Exception ex)
{
retryCount--;
if (retryCount <= 0)
{
LogSystem.LogError($"保存地图数据失败: {ex.Message}");
}
}
}
return false;
}
private enum MapArchiveKind
{
Begin,
Continue,
End
}
private static readonly TimeSpan MapArchiveAvailabilityCacheRefreshInterval = TimeSpan.FromSeconds(1);
private static readonly Dictionary<bool, MapArchiveAvailabilityCache> MapArchiveAvailabilityCaches =
new Dictionary<bool, MapArchiveAvailabilityCache>();
private sealed class MapArchiveAvailabilityCache
{
public DateTime CheckedAtUtc;
public string Fingerprint;
public bool HasArchive;
}
public static bool HasMapArchive(bool isMulti = false)
{
var now = DateTime.UtcNow;
if (MapArchiveAvailabilityCaches.TryGetValue(isMulti, out var cache)
&& now - cache.CheckedAtUtc < MapArchiveAvailabilityCacheRefreshInterval)
{
return cache.HasArchive;
}
var fingerprint = GetMapArchiveAvailabilityFingerprint(isMulti);
if (cache != null && cache.Fingerprint == fingerprint)
{
cache.CheckedAtUtc = now;
return cache.HasArchive;
}
var hasArchive = GetLatestReadableMapArchive(isMulti, MapArchiveKind.Continue, 0) != null;
MapArchiveAvailabilityCaches[isMulti] = new MapArchiveAvailabilityCache
{
CheckedAtUtc = now,
Fingerprint = fingerprint,
HasArchive = hasArchive
};
return hasArchive;
}
public static MapData GetMapData(bool isMulti = false, bool isBegin = false, bool isEnd = false, uint mapId = 0)
{
var kind = GetMapArchiveKind(isBegin, isEnd);
return GetLatestReadableMapArchive(isMulti, kind, mapId);
}
private static MapArchiveKind GetMapArchiveKind(bool isBegin, bool isEnd)
{
if (isBegin) return MapArchiveKind.Begin;
if (isEnd) return MapArchiveKind.End;
return MapArchiveKind.Continue;
}
private static MapData GetLatestReadableMapArchive(bool isMulti, MapArchiveKind kind, uint mapId)
{
var files = GetMapArchiveCandidates(isMulti, kind, mapId);
var targetFile = files.FirstOrDefault();
if (targetFile == null) return null;
if (!TryParseMapArchiveFileName(targetFile, out _, out _, out var archiveMapId)) return null;
var endArchiveTimes = kind == MapArchiveKind.Continue
? GetLatestEndMapArchiveTimes(isMulti)
: null;
if (endArchiveTimes != null
&& endArchiveTimes.TryGetValue(archiveMapId, out var endWriteTime)
&& endWriteTime >= GetMapArchiveLastWriteTime(targetFile))
{
return null;
}
var mapData = ReadMapDataWithBackup(targetFile);
if (mapData == null) return null;
if (ShouldSkipMapArchive(mapData)) return null;
var expectedMode = isMulti ? NetMode.Multi : NetMode.Single;
if (mapData.Net.Mode != expectedMode)
{
LogSystem.LogWarning($"存档模式与文件名不一致,跳过: {targetFile}");
return null;
}
if (kind == MapArchiveKind.Continue && mapData.PlayerMap.SelfPlayerData?.IsSurrender == true)
return null;
return mapData;
}
private static bool ShouldSkipMapArchive(MapData map)
{
return map?.Net?.Mode == NetMode.Spectator
|| map?.MapConfig?.MatchSettlement == MatchSettlementType.Story;
}
private static void InvalidateMapArchiveAvailabilityCache()
{
MapArchiveAvailabilityCaches.Clear();
}
private static string GetMapArchiveAvailabilityFingerprint(bool isMulti)
{
string directory = Application.persistentDataPath + "/../Config/";
if (!Directory.Exists(directory)) return string.Empty;
unchecked
{
long hash = 17;
int count = 0;
AddMapArchiveFingerprint(directory, "map_archive_continue*.dat", isMulti, ref hash, ref count);
AddMapArchiveFingerprint(directory, "map_archive_continue*.dat.bak", isMulti, ref hash, ref count);
AddMapArchiveFingerprint(directory, "map_archive_end*.dat", isMulti, ref hash, ref count);
AddMapArchiveFingerprint(directory, "map_archive_end*.dat.bak", isMulti, ref hash, ref count);
return $"{count}:{hash}";
}
}
private static void AddMapArchiveFingerprint(string directory, string pattern, bool isMulti,
ref long hash, ref int count)
{
try
{
foreach (var path in Directory.EnumerateFiles(directory, pattern))
{
if (!TryParseMapArchiveFileName(path, out var kind, out var fileIsMulti, out _)) continue;
if (fileIsMulti != isMulti) continue;
if (kind != MapArchiveKind.Continue && kind != MapArchiveKind.End) continue;
count++;
hash = hash * 31 + Path.GetFileName(path).GetHashCode();
hash = hash * 31 + GetMapArchiveLastWriteTime(path).Ticks;
hash = hash * 31 + GetMapArchiveFileLength(path);
}
}
catch (Exception ex)
{
LogSystem.LogError($"读取存档目录失败: {ex.Message}");
}
}
private static long GetMapArchiveFileLength(string path)
{
try
{
return new FileInfo(path).Length;
}
catch
{
return 0;
}
}
private static List<string> GetMapArchiveCandidates(bool isMulti, MapArchiveKind kind, uint mapId)
{
string directory = Application.persistentDataPath + "/../Config/";
if (!Directory.Exists(directory)) return new List<string>();
try
{
return Directory.GetFiles(directory, "map_archive_*.dat")
.Concat(Directory.GetFiles(directory, "map_archive_*.dat.bak"))
.Where(path => IsMatchingMapArchive(path, isMulti, kind, mapId))
.OrderByDescending(GetMapArchiveLastWriteTime)
.ToList();
}
catch (Exception ex)
{
LogSystem.LogError($"读取存档目录失败: {ex.Message}");
return new List<string>();
}
}
private static bool IsMatchingMapArchive(string path, bool isMulti, MapArchiveKind kind, uint mapId)
{
if (!TryParseMapArchiveFileName(path, out var fileKind, out var fileIsMulti, out var fileMapId)) return false;
if (fileKind != kind || fileIsMulti != isMulti) return false;
return mapId == 0 || fileMapId == mapId;
}
private static bool TryParseMapArchiveFileName(string path, out MapArchiveKind kind, out bool isMulti, out uint mapId)
{
kind = MapArchiveKind.Continue;
isMulti = false;
mapId = 0;
var fileName = Path.GetFileName(path);
if (string.IsNullOrEmpty(fileName)) return false;
if (fileName.EndsWith(".bak", StringComparison.OrdinalIgnoreCase))
fileName = fileName.Substring(0, fileName.Length - ".bak".Length);
if (!fileName.EndsWith(".dat", StringComparison.OrdinalIgnoreCase)) return false;
var stem = fileName.Substring(0, fileName.Length - ".dat".Length);
const string prefix = "map_archive_";
if (!stem.StartsWith(prefix, StringComparison.Ordinal)) return false;
var rest = stem.Substring(prefix.Length);
if (rest.StartsWith("begin_", StringComparison.Ordinal))
{
kind = MapArchiveKind.Begin;
rest = rest.Substring("begin_".Length);
}
else if (rest.StartsWith("continue_", StringComparison.Ordinal))
{
kind = MapArchiveKind.Continue;
rest = rest.Substring("continue_".Length);
}
else if (rest.StartsWith("end_", StringComparison.Ordinal))
{
kind = MapArchiveKind.End;
rest = rest.Substring("end_".Length);
}
else
{
return false;
}
if (rest.StartsWith("multi_", StringComparison.Ordinal))
{
isMulti = true;
rest = rest.Substring("multi_".Length);
}
return uint.TryParse(rest, out mapId);
}
private static Dictionary<uint, DateTime> GetLatestEndMapArchiveTimes(bool isMulti)
{
var latestTimes = new Dictionary<uint, DateTime>();
var endFiles = GetMapArchiveCandidates(isMulti, MapArchiveKind.End, 0);
foreach (var endFile in endFiles)
{
if (!TryParseMapArchiveFileName(endFile, out _, out _, out var mapId)) continue;
var writeTime = GetMapArchiveLastWriteTime(endFile);
if (!latestTimes.TryGetValue(mapId, out var existingTime) || writeTime > existingTime)
latestTimes[mapId] = writeTime;
}
return latestTimes;
}
private static DateTime GetMapArchiveLastWriteTime(string path)
{
try
{
return File.GetLastWriteTime(path);
}
catch
{
return DateTime.MinValue;
}
}
private static MapData ReadMapDataWithBackup(string targetFile)
{
if (targetFile.EndsWith(".bak", StringComparison.OrdinalIgnoreCase))
return ReadMapDataFile(targetFile);
var mapData = ReadMapDataFile(targetFile);
if (mapData != null) return mapData;
var backupPath = targetFile + ".bak";
if (!File.Exists(backupPath)) return null;
LogSystem.LogWarning($"读取地图数据失败,尝试读取备份: {backupPath}");
return ReadMapDataFile(backupPath);
}
private static MapData ReadMapDataFile(string targetFile)
{
if (!File.Exists(targetFile)) return null;
int retryCount = 3;
while (retryCount > 0)
{
try
{
byte[] bytes = File.ReadAllBytes(targetFile);
var mapData = DeserializeMapArchive(bytes);
// 版本校验:检查反序列化后的数据是否有效
if (mapData == null
|| mapData.DeserializedMissingCriticalData
|| mapData.MapConfig == null
|| mapData.GridMap == null
|| mapData.PlayerMap == null
|| mapData.CityMap == null
|| mapData.UnitMap == null
|| mapData.Net == null)
{
LogSystem.LogError($"反序列化后的地图数据不完整,可能是版本不兼容");
return null;
}
return mapData;
}
catch (IOException ex)
{
retryCount--;
if (retryCount <= 0)
{
LogSystem.LogError($"读取地图数据失败: {ex.Message}");
return null;
}
}
catch (MemoryPackSerializationException ex)
{
LogSystem.LogError($"地图数据反序列化失败,可能是版本不兼容: {ex.Message}");
return null;
}
catch (Exception ex)
{
LogSystem.LogError($"读取地图数据时发生未知错误: {ex.Message}");
return null;
}
}
return null;
}
// 旧版按 MapID 扫描/读写散落存档文件的流程已经移除。
// 新版所有 begin / quick_continue / continue / end 都通过 GameArchiveManager 管理。
private static byte[] SerializeMapArchive(MapData map)
{
var rawBytes = MemoryPackSerializer.Serialize(map);
@ -2606,6 +2244,20 @@ namespace RuntimeData
return MemoryPackSerializer.Deserialize<MapData>(rawBytes);
}
// 给新版 GameArchiveManager 使用的 MapData 存档序列化入口。
// 新系统仍复用旧系统的 MemoryPack + NetworkPayloadCodec 格式,避免两套存档格式分裂。
public static byte[] SerializeArchiveBytes(MapData map)
{
return SerializeMapArchive(map);
}
// 给新版 GameArchiveManager 使用的 MapData 存档反序列化入口。
// 外部读新 begin/continue/end 文件时统一走这里,保证压缩/兼容解码逻辑一致。
public static MapData DeserializeArchiveBytes(byte[] bytes)
{
return DeserializeMapArchive(bytes);
}
public GameRecord ExportGameRecord()
{
var gameRecord = new GameRecord();
@ -2624,6 +2276,11 @@ namespace RuntimeData
gameRecord.MapHeight = MapConfig.Height;
gameRecord.PlayerCount = MapConfig.PlayerCount;
gameRecord.MatchSettlement = MapConfig.MatchSettlement;
gameRecord.MapID = MapID;
gameRecord.NetMode = Net?.Mode ?? NetMode.None;
var versionInfo = ConfigManager.Instance.VersionCfg?.CurVersionInfo;
gameRecord.GameVersion = versionInfo?.FullVersion ?? Application.version;
gameRecord.GameVersionId = versionInfo?.VersionId ?? 0;
return gameRecord;
}
@ -2720,15 +2377,13 @@ namespace RuntimeData
return;
}
// 存档
var saveSucceeded = SaveMapData(Main.MapData);
// 新版快速存档。
// 这里已经过了“只允许房主更新联机回合”的判断,并且 Net.CurPlayerId == 0
// 所以这是每轮轮转到下一位玩家前的统一自动保存点。
// 新版快速存档:每次回合轮转覆盖 quick_continue/quick.dat并更新唯一 Quick record。
// 不扫描本地所有存档,只维护当前这一局的快速继续入口。
GameArchiveManager.Instance.SaveQuickContinueRecord(Main.MapData);
AchievementDataManager.Instance.SaveAchievementData();
if (saveSucceeded)
{
if (Main.MapData.Net.Mode == NetMode.Single) PlayerPrefs.SetInt("Archive", 1);
if (Main.MapData.Net.Mode == NetMode.Multi) PlayerPrefs.SetInt("MultiArchive", 1);
PlayerPrefs.Save();
}
// 设置当前玩家
Main.PlayerLogic.StartPlayerTurn(this, nextPlayer.Id);
}

View File

@ -2458,23 +2458,9 @@ namespace Logic.Action
protected override bool Execute(CommonActionParams actionParams)
{
actionParams.PlayerData.Surrender(actionParams.MapData);
SaveLocalSurrenderEndArchive(actionParams);
return true;
}
private void SaveLocalSurrenderEndArchive(CommonActionParams actionParams)
{
var map = actionParams.MapData;
if (map == null || map != Main.MapData) return;
if (actionParams.PlayerData == null || actionParams.PlayerData != map.PlayerMap.SelfPlayerData) return;
if (map.MapConfig?.MatchSettlement == MatchSettlementType.Story) return;
if (map.Net.Mode == NetMode.Multi) PlayerPrefs.SetInt("MultiArchive", 0);
if (map.Net.Mode == NetMode.Single) PlayerPrefs.SetInt("Archive", 0);
PlayerPrefs.Save();
MapData.SaveMapData(map, false, true);
}
public override bool CheckCan(CommonActionParams actionParams)
{
if (actionParams.PlayerData == null) return false;

View File

@ -18,6 +18,7 @@ using TH1_Core.Managers;
using TH1_Logic.AITrain;
using TH1_Logic.Collect;
using TH1_Logic.Core;
using TH1_Logic.GameArchive;
using TH1_Logic.MatchConfig;
using TH1_Logic.Net;
using TH1_Logic.Oss;
@ -537,22 +538,16 @@ namespace Logic
CollectManager.Instance.MatchGameEndCollect(Main.MapData);
}
// 保存游戏记录
// 教程关卡不进历史存档UIOutsideHistory 只按 GameMode 过滤GameMode 没有 Tutor 这一项),
// 教程的 record.Mode 实际是 DOMINATION会污染 DOMINATION 列表。Story 仍保留。
if (Main.MapData.MapConfig.MatchSettlement != MatchSettlementType.Tutor)
{
var record = Main.MapData.ExportGameRecord();
GameRecordManager.Instance.AddRecord(record);
}
// 保存存档
if (Main.MapData.MapConfig.MatchSettlement != MatchSettlementType.Story)
{
if (Main.MapData.Net.Mode == NetMode.Multi) PlayerPrefs.SetInt("MultiArchive", 0);
if (Main.MapData.Net.Mode == NetMode.Single) PlayerPrefs.SetInt("Archive", 0);
MapData.SaveMapData(Main.MapData, false, true);
}
// 保存新版结束存档和结束记录。
//
// GameArchiveManager 会做三件事:
// 1. 写 end 文件到 Config/GameArchives/end。
// 2. 创建 Ended record让完整战绩索引 begin/end。
// 3. 删除当前 begin 对应的 Quick record 和 quick.dat避免已结束的局还能快速继续。
//
// 手动通用存档不会在这里删除,只能由玩家主动删除。
// 教程仍不进历史记录,过滤由 GameArchiveManager 内部处理。
GameArchiveManager.Instance.SaveEndRecord(Main.MapData);
// 上传到 oss 服务器
var id = LobbyManager.Instance.Lobby.GetSelfMemberId();

View File

@ -20,6 +20,7 @@ using TH1_Logic.AITrain;
using TH1_Logic.Collect;
using TH1_Logic.Comic;
using TH1_Logic.Config;
using TH1_Logic.GameArchive;
using TH1_Logic.HeroTask;
using TH1_Logic.MatchConfig;
using TH1_Logic.Net;
@ -271,7 +272,9 @@ namespace TH1_Logic.Core
}, 1.5f, "Main_CenterMessage_Anim");
MapData.SaveMatchConfig(MapConfig);
MapData.SaveMapData(MapData, true);
// 新版存档:新开局一定先写 begin。
// 后续每回合 quick、玩家手动 manual、最终 end 都会通过这个 begin 串起来。
GameArchiveManager.Instance.SaveBeginArchive(MapData);
#if CHECK_ACTIONDEFFERENCE
byte[] bt = MemoryPack.MemoryPackSerializer.Serialize(Main.MapData);
@ -280,14 +283,40 @@ namespace TH1_Logic.Core
MapData.RefreshTurn();
}
// 继续单机游戏。prereadMap 可由调用方预读传入,避免对 1MB+ 存档重复反序列化(用于 Loading 图提前拿 Empire
public bool ResumeMatch(MapData prereadMap = null)
public bool ResumeMatch(GameRecord record, MapData prereadMap = null)
{
//如果没有存档退出外部已预读传入时跳过存档磁盘检查map 自身即证据)
if (prereadMap == null && !HasArchive()) return false;
// 新版 record 继续入口。
// 传入 Quick/Manual record 后,先通过 record.ContinueArchiveId 读取 MapData。
// 只有读到完整、NetMode 匹配的 continue 文件,才会进入真正的单机/联机开始流程。
if (record == null) return false;
//step #2 读取存档的map外部已预读则复用避免重复反序列化
var resumeMap = prereadMap ?? MapData.GetMapData();
var resumeMap = prereadMap;
if (resumeMap == null && !GameArchiveManager.Instance.TryLoadContinueArchive(record, out resumeMap))
return false;
if (resumeMap?.Net == null || resumeMap.Net.Mode != record.NetMode) return false;
// record 继续要沿用原 record.BeginArchiveId。
// 如果开始流程失败,需要恢复之前的 begin 会话,避免后续保存挂错局。
var previousBeginArchiveId = GameArchiveManager.Instance.CurrentBeginArchiveId;
GameArchiveManager.Instance.SetActiveRecord(record);
var result = record.NetMode switch
{
// 单机 record直接复用单机读档开始流程。
NetMode.Single => ResumeMatch(resumeMap),
// 联机 record仍走房主联机继续流程里面会做 Net.RefreshPlayerNet 和 GameStart 广播。
NetMode.Multi => MainMemberResumeMatchWithMap(resumeMap),
_ => false
};
if (!result) GameArchiveManager.Instance.SetCurrentBeginArchiveId(previousBeginArchiveId);
return result;
}
// 继续单机游戏。
//
// 这里不再提供无 record 的旧 continue 入口;调用方必须先通过 GameRecord 找到 continue 文件。
// ResumeMatch(GameRecord) 已经绑定 record.BeginArchiveId这里只负责把传入的 MapData 启动起来。
private bool ResumeMatch(MapData resumeMap)
{
if (resumeMap == null) return false;
MapData = resumeMap;
@ -315,6 +344,7 @@ namespace TH1_Logic.Core
&& MapData.GetGridDataByCityId(cap.Id, out var grid))
camera.CameraFocusOnGrid(grid,true);
// 继续游戏不会新建 begin后续 quick/end 会继续挂到 record.BeginArchiveId。
MapData.RefreshTurn();
return true;
}
@ -398,7 +428,9 @@ namespace TH1_Logic.Core
//UIManager.Instance.CenterMessageUI.SetCenterMessageShow(UICenterMessageID.StartGame,MapData.PlayerMap.SelfPlayerData);
},1.5f,"Main_CenterMessage_Anim");
MapData.SaveMapData(MapData, true);
// 联机新开局也写 begin但必须放在 GameStart 广播成功之后。
// 否则房主本地开始失败时可能留下一个没有真正开局的 begin。
GameArchiveManager.Instance.SaveBeginArchive(MapData);
MapData.RefreshTurn();
return true;
}
@ -416,20 +448,21 @@ namespace TH1_Logic.Core
PlayerLogic?.UpdateAllTeammateCapitalSight(mapData);
}
// 房主继续多人游戏
public bool MainMemberResumeMatch()
// 房主联机继续的实际实现。
//
// ResumeMatch(GameRecord) 已经绑定 record.BeginArchiveId这里只负责用传入 MapData 启动房主联机继续。
//
// 网络安全点:
// - 先 RefreshPlayerNet 校验当前房间成员映射。
// - GameStart 广播成功后才算真正进入游戏,失败会回滚。
private bool MainMemberResumeMatchWithMap(MapData resumeMap)
{
//如果没有存档,退出
if (!HasMultiArchive()) return false;
var previousMap = MapData;
var previousInput = InputLogic;
var previousInteraction = MapInteractionLogic;
var previousGenerator = MapGeneratorLogic;
try
{
//step #1 读取存档的map
var resumeMap = MapData.GetMapData(isMulti: true);
if (resumeMap == null)
{
NetworkPlayerTipManager.Instance.Request(NetworkPlayerTipType.GameStartFailed);
@ -481,6 +514,7 @@ namespace TH1_Logic.Core
return false;
}
// 继续游戏不会新建 begin后续 quick/end 会继续挂到 record.BeginArchiveId。
MapData.RefreshTurn();
LogSystem.LogInfo($"MainMemberResumeMatch : {NetData.GetMapDataHash(MapData)}");
return true;
@ -774,7 +808,8 @@ namespace TH1_Logic.Core
Debug.Log("Main : Trgger Force Change To NetGame");
//UIManager.Instance.GameUI.CloseAllGameUI();
UIManager.Instance.UIOutsideManager.CloseAll();
MainMemberResumeMatch();
var record = GameArchiveManager.Instance.GetQuickResumeRecord(NetMode.Multi);
if (record != null) ResumeMatch(record);
}
}
@ -800,18 +835,6 @@ namespace TH1_Logic.Core
}
}
public bool HasArchive()
{
return MapData.HasMapArchive();
}
public bool HasMultiArchive()
{
return MapData.HasMapArchive(true);
}
private void OnApplicationQuit()
{
LobbyManager.Instance.Lobby.Cleanup();

View File

@ -12,6 +12,7 @@ using System.IO;
using System.Linq;
using RuntimeData;
using TH1_Logic.Core;
using TH1_Logic.GameArchive;
using UnityEditor;
using UnityEngine;
@ -76,6 +77,7 @@ namespace Logic.Editor
EditorGUILayout.BeginVertical("box");
EditorGUILayout.LabelField($"Map ID: {pair.MapId}", EditorStyles.boldLabel);
EditorGUILayout.LabelField($"记录: {pair.RecordName}");
EditorGUILayout.LabelField($"类型: {(pair.IsMulti ? "" : "")}");
EditorGUILayout.LabelField($"开始存档: {Path.GetFileName(pair.BeginPath)}");
EditorGUILayout.LabelField($"{GetEndKindLabel(pair.EndKind)}: {Path.GetFileName(pair.EndPath)}");
@ -99,54 +101,12 @@ namespace Logic.Editor
private void RefreshMapList()
{
_mapPairs.Clear();
string directory = Application.persistentDataPath + "/../Config/";
if (!Directory.Exists(directory))
var records = GameRecordManager.Instance.GameRecordData?.Records ?? new List<GameRecord>();
foreach (var record in records)
{
Debug.LogWarning($"存档目录不存在: {directory}");
return;
}
// 查找所有 begin 文件
var beginFiles = Directory.GetFiles(directory, "map_archive_begin*.dat")
.Concat(Directory.GetFiles(directory, "map_archive_begin*.dat.bak"))
.OrderByDescending(File.GetLastWriteTime);
var visitedMapKeys = new HashSet<string>();
foreach (var beginFile in beginFiles)
{
var fileName = Path.GetFileName(beginFile);
// 解析文件名获取 MapId 和类型
if (!TryParseFileName(fileName, out uint mapId, out bool isMulti))
continue;
var mapKey = $"{isMulti}:{mapId}";
if (!visitedMapKeys.Add(mapKey))
continue;
// 优先查找对应的 end 文件;没有 end 时使用 continue 作为回放终点。
var endKind = ReplayEndKind.End;
var endPath = FindArchivePath(directory, "end", isMulti, mapId);
if (endPath == null)
{
endKind = ReplayEndKind.Continue;
endPath = FindArchivePath(directory, "continue", isMulti, mapId);
}
if (endPath == null)
continue;
// 添加到列表
_mapPairs.Add(new MapArchivePair
{
MapId = mapId,
IsMulti = isMulti,
BeginPath = beginFile,
EndPath = endPath,
EndKind = endKind,
LastModifiedTime = Max(File.GetLastWriteTime(beginFile), File.GetLastWriteTime(endPath))
});
if (TryBuildMapArchivePair(record, out var pair))
_mapPairs.Add(pair);
}
// 按修改时间降序排序
@ -155,45 +115,61 @@ namespace Logic.Editor
Debug.Log($"找到 {_mapPairs.Count} 对可观战的地图存档");
}
private bool TryParseFileName(string fileName, out uint mapId, out bool isMulti)
private bool TryBuildMapArchivePair(GameRecord record, out MapArchivePair pair)
{
mapId = 0;
isMulti = false;
// 文件名格式: map_archive_begin[_multi]_{mapId}.dat
var stem = StripArchiveExtensions(fileName);
if (string.IsNullOrEmpty(stem))
return false;
const string singlePrefix = "map_archive_begin_";
const string multiPrefix = "map_archive_begin_multi_";
string idPart;
if (stem.StartsWith(multiPrefix, StringComparison.Ordinal))
{
isMulti = true;
idPart = stem.Substring(multiPrefix.Length);
}
else if (stem.StartsWith(singlePrefix, StringComparison.Ordinal))
{
idPart = stem.Substring(singlePrefix.Length);
}
else
pair = null;
if (record == null || string.IsNullOrEmpty(record.BeginArchiveId)) return false;
if (!GameArchiveManager.Instance.TryGetArchivePath(
GameArchiveFileKind.Begin,
record.BeginArchiveId,
out var beginPath))
{
return false;
}
return uint.TryParse(idPart, out mapId);
var endKind = ReplayEndKind.End;
var companionArchiveKind = GameArchiveFileKind.End;
var companionArchiveId = record.EndArchiveId;
if (string.IsNullOrEmpty(companionArchiveId))
{
endKind = ReplayEndKind.Continue;
companionArchiveKind = record.RecordKind == GameRecordKind.Quick
? GameArchiveFileKind.QuickContinue
: GameArchiveFileKind.Continue;
companionArchiveId = record.ContinueArchiveId;
}
if (string.IsNullOrEmpty(companionArchiveId)) return false;
if (!GameArchiveManager.Instance.TryGetArchivePath(companionArchiveKind, companionArchiveId, out var endPath))
{
return false;
}
pair = new MapArchivePair
{
Record = record,
RecordName = GetRecordDisplayName(record),
MapId = record.MapID,
IsMulti = record.NetMode == NetMode.Multi,
BeginPath = beginPath,
EndPath = endPath,
EndKind = endKind,
LastModifiedTime = Max(File.GetLastWriteTime(beginPath), File.GetLastWriteTime(endPath))
};
return true;
}
private void LoadMapForSpectator(MapArchivePair pair)
{
// 这里添加加载地图的逻辑
// 例如: 调用游戏中的地图加载方法
// Main.Instance.LoadSpectatorMap(mapId, isMulti);
var startMap = MapData.GetMapData(pair.IsMulti, true, false, pair.MapId);
var endMap = pair.EndKind == ReplayEndKind.End
? MapData.GetMapData(pair.IsMulti, false, true, pair.MapId)
: MapData.GetMapData(pair.IsMulti, false, false, pair.MapId);
if (!GameArchiveManager.Instance.TryLoadBeginArchive(pair.Record, out var startMap))
startMap = null;
MapData endMap = null;
if (pair.EndKind == ReplayEndKind.End)
GameArchiveManager.Instance.TryLoadEndArchive(pair.Record, out endMap);
else
GameArchiveManager.Instance.TryLoadContinueArchive(pair.Record, out endMap);
if (startMap == null || endMap == null)
{
Debug.LogWarning($"加载回放存档失败: mapId={pair.MapId}, isMulti={pair.IsMulti}, endKind={pair.EndKind}");
@ -203,24 +179,10 @@ namespace Logic.Editor
Main.Instance.StartSpectate(startMap, endMap);
}
private static string FindArchivePath(string directory, string kind, bool isMulti, uint mapId)
private static string GetRecordDisplayName(GameRecord record)
{
var fileName = $"map_archive_{kind}{(isMulti ? "_multi" : "")}_{mapId}.dat";
var path = Path.Combine(directory, fileName);
if (File.Exists(path)) return path;
var backupPath = path + ".bak";
return File.Exists(backupPath) ? backupPath : null;
}
private static string StripArchiveExtensions(string fileName)
{
if (string.IsNullOrEmpty(fileName)) return string.Empty;
if (fileName.EndsWith(".bak", StringComparison.OrdinalIgnoreCase))
fileName = fileName.Substring(0, fileName.Length - ".bak".Length);
if (!fileName.EndsWith(".dat", StringComparison.OrdinalIgnoreCase))
return string.Empty;
return fileName.Substring(0, fileName.Length - ".dat".Length);
if (!string.IsNullOrEmpty(record.RecordName)) return record.RecordName;
return $"{record.RecordKind} {record.Time}";
}
private static DateTime Max(DateTime a, DateTime b)
@ -241,6 +203,8 @@ namespace Logic.Editor
private class MapArchivePair
{
public GameRecord Record;
public string RecordName;
public uint MapId;
public bool IsMulti;
public string BeginPath;

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a84fb21d65824516b27a8ba29f2cd847
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,513 @@
/*
* @Author: Codex
* @Description:
* @Date: 20260602 00:00:00
* @Modify:
*/
using System;
using System.IO;
using Logic.CrashSight;
using RuntimeData;
using TH1_Logic.Core;
using TH1_Logic.MatchConfig;
using TH1_Logic.Tools;
using UnityEngine;
namespace TH1_Logic.GameArchive
{
// 新存档系统的文件类型。
// 注意:这里说的是“磁盘文件归类”,不是 GameRecord 的记录分类。
// GameRecordKind 负责 UI/数据层看到的三类记录:结束记录、手动存档、快速存档。
public enum GameArchiveFileKind
{
// 开局快照。每条新版 GameRecord 都会索引一条 begin用来说明这条记录属于哪一局。
Begin,
// 自动快速继续存档。全局只保留 quick.dat一局一局覆盖。
QuickContinue,
// 玩家手动创建的通用继续存档。可以有多条,每条有自己的 archiveId。
Continue,
// 结束快照。游戏结束时写入,用于完整战绩记录索引。
End
}
// 新版存档系统的统一入口。
//
// 设计关系:
// - MapData 文件是真正的大存档内容,存在 Config/GameArchives 下。
// - GameRecord 只是索引和展示信息,不直接存完整 MapData。
// - 一条 record 一定指向 BeginArchiveId可能指向 ContinueArchiveId 或 EndArchiveId。
// - 继续游戏只允许从 Quick/Manual record 读取 ContinueArchiveIdEnded record 不能继续。
public class GameArchiveManager
{
// 快速存档只有一份,所以 recordId 和文件名都使用固定 id。
// 对应磁盘文件是 Config/GameArchives/quick_continue/quick.dat。
public const string QuickArchiveId = "quick";
public static GameArchiveManager Instance = new GameArchiveManager();
private const string ArchiveRootFolderName = "GameArchives";
// 当前正在游玩的这一局对应的 begin archive id。
// 后续每回合 quick、玩家手动 manual、最终 end 都会挂到这个 begin 上。
// 从旧存档入口继续时没有 record 可用,会自动创建一个新的 begin。
// 从 record 入口继续时会沿用 record.BeginArchiveId。
private string _currentBeginArchiveId;
public string CurrentBeginArchiveId => _currentBeginArchiveId;
// 开始一局游戏时调用:写入 begin 文件,并把当前会话绑定到这个 begin。
//
// 调用时机:
// - 单机新开局:地图生成完成后。
// - 联机房主新开局GameStart 广播成功后,避免网络开始失败却留下 begin。
// - 存档兜底:如果当前局缺少 begin会先补一条 begin避免 quick/manual/end 没有索引。
public bool SaveBeginArchive(MapData map)
{
// 先清空旧会话 id避免本次 begin 写入失败时误把后续存档挂到上一局。
_currentBeginArchiveId = string.Empty;
if (!IsMapSaveable(map)) return false;
var beginArchiveId = NewArchiveId();
if (!SaveArchive(map, GameArchiveFileKind.Begin, beginArchiveId)) return false;
_currentBeginArchiveId = beginArchiveId;
return true;
}
// 回合轮转时调用:写入/覆盖 quick_continue/quick.dat并更新唯一的快速存档 record。
//
// 快速存档规则:
// - 只维护一条记录UpsertQuickRecord 会先删旧 quick record 再写新 record。
// - 文件也只维护一份 quick.dat每次保存覆盖。
// - record.BeginArchiveId 说明 quick 属于哪一局。
// - record.ContinueArchiveId 固定为 quick用于继续时找到 quick.dat。
public bool SaveQuickContinueRecord(MapData map)
{
if (!EnsureCurrentBeginArchive(map)) return false;
if (!SaveArchive(map, GameArchiveFileKind.QuickContinue, QuickArchiveId)) return false;
var record = CreateRecord(
map,
GameRecordKind.Quick,
"快速存档",
_currentBeginArchiveId,
QuickArchiveId,
string.Empty);
record.RecordId = QuickArchiveId;
GameRecordManager.Instance.UpsertQuickRecord(record);
return true;
}
// 玩家主动创建通用存档的上层接口。
// UI 调这个就够了:当前 MapData、文件 id、record 索引都会由存档系统内部处理。
public bool SaveManualGameRecord(string recordName)
{
return SaveManualContinueRecord(Main.MapData, recordName);
}
// 玩家主动手动保存时调用:创建一条通用 continue 文件和一条 Manual record。
//
// 通用存档规则:
// - 可以有任意多条,所以每条 continue 文件都使用新的 archiveId。
// - recordName 是玩家自定义名字;空名字会归一成“手动存档”。
// - 这里只创建,不自动删除;删除必须走 DeleteManualContinueRecord。
public bool SaveManualContinueRecord(MapData map, string recordName)
{
if (!EnsureCurrentBeginArchive(map)) return false;
var continueArchiveId = NewArchiveId();
if (!SaveArchive(map, GameArchiveFileKind.Continue, continueArchiveId)) return false;
var record = CreateRecord(
map,
GameRecordKind.Manual,
NormalizeManualRecordName(recordName),
_currentBeginArchiveId,
continueArchiveId,
string.Empty);
GameRecordManager.Instance.AddRecord(record);
return true;
}
// 游戏结束时调用:写入 end 文件,并创建一条 Ended record。
//
// 结束规则:
// - begin/end 文件都会保留Ended record 通过 EndArchiveId 指向 end。
// - 教程不进历史战绩,所以仍然只写 end 文件,不创建 Ended record。
// - 当前局结束后,当前 begin 对应的快速存档已经没有继续意义,因此一起清掉。
// - 手动通用存档不在这里删除,必须由玩家主动删。
public bool SaveEndRecord(MapData map)
{
if (!EnsureCurrentBeginArchive(map)) return false;
var endArchiveId = NewArchiveId();
if (!SaveArchive(map, GameArchiveFileKind.End, endArchiveId)) return false;
if (map.MapConfig?.MatchSettlement != MatchSettlementType.Tutor)
{
var record = CreateRecord(
map,
GameRecordKind.Ended,
string.Empty,
_currentBeginArchiveId,
string.Empty,
endArchiveId);
GameRecordManager.Instance.AddRecord(record);
}
DeleteQuickContinueRecord(_currentBeginArchiveId);
return true;
}
// 给外部 UI/逻辑做“这条 record 现在还能不能继续”的轻量检查。
// 这里不会扫描所有存档,只验证传入这一条 record 指向的 continue 文件。
public bool HasUsableResumeArchive(GameRecord record)
{
return TryLoadContinueArchive(record, out _);
}
// 当前是否存在可用的快速继续记录。
// 单机菜单传 NetMode.Single联机房主继续传 NetMode.Multi。
public bool HasQuickResumeArchive(NetMode netMode)
{
return GetQuickResumeRecord(netMode) != null;
}
// 获取当前唯一 quick record并确认它属于指定单/联机模式且文件可读。
public GameRecord GetQuickResumeRecord(NetMode netMode)
{
var record = GameRecordManager.Instance.GetQuickRecord();
if (record == null || record.NetMode != netMode) return null;
return HasUsableResumeArchive(record) ? record : null;
}
// 通过一条 Quick/Manual record 读取可继续的 MapData。
//
// 返回 true 的含义:
// - record 类型允许继续。
// - record 有 begin/continue 索引。
// - continue 文件存在,并且反序列化后核心数据完整。
// - 存档里的 NetMode 与 record.NetMode 一致,单机/联机不会串。
public bool TryLoadContinueArchive(GameRecord record, out MapData mapData)
{
mapData = null;
if (!CanRecordResume(record)) return false;
var archiveKind = record.RecordKind == GameRecordKind.Quick
? GameArchiveFileKind.QuickContinue
: GameArchiveFileKind.Continue;
mapData = ReadArchive(archiveKind, record.ContinueArchiveId, record.NetMode);
return mapData != null;
}
// 读取 record 对应的 begin 快照供回放、OSS 上传等需要“开局状态”的系统使用。
public bool TryLoadBeginArchive(GameRecord record, out MapData mapData)
{
mapData = null;
if (record == null) return false;
if (record.NetMode != NetMode.Single && record.NetMode != NetMode.Multi) return false;
if (string.IsNullOrEmpty(record.BeginArchiveId)) return false;
mapData = ReadArchive(GameArchiveFileKind.Begin, record.BeginArchiveId, record.NetMode);
return mapData != null;
}
// 读取 record 对应的 end 快照。只有 Ended record 通常会有 EndArchiveId。
public bool TryLoadEndArchive(GameRecord record, out MapData mapData)
{
mapData = null;
if (record == null) return false;
if (record.NetMode != NetMode.Single && record.NetMode != NetMode.Multi) return false;
if (string.IsNullOrEmpty(record.EndArchiveId)) return false;
mapData = ReadArchive(GameArchiveFileKind.End, record.EndArchiveId, record.NetMode);
return mapData != null;
}
// 读取当前会话的 begin。游戏结束上传 OSS 时endMap 是当前局begin id 仍保存在这里。
public bool TryLoadCurrentBeginArchive(NetMode expectedMode, out MapData mapData)
{
mapData = null;
if (string.IsNullOrEmpty(_currentBeginArchiveId)) return false;
if (expectedMode != NetMode.Single && expectedMode != NetMode.Multi) return false;
mapData = ReadArchive(GameArchiveFileKind.Begin, _currentBeginArchiveId, expectedMode);
return mapData != null;
}
// 根据 archiveId 获取实际文件路径,优先主文件,主文件不存在时返回 .bak。
// 这个接口用于 BugReport/回放编辑器打包和展示文件名,不负责反序列化。
public bool TryGetArchivePath(GameArchiveFileKind archiveKind, string archiveId, out string path)
{
path = GetArchivePath(archiveKind, archiveId);
if (path == null) return false;
if (File.Exists(path)) return true;
var backupPath = path + ".bak";
if (!File.Exists(backupPath)) return false;
path = backupPath;
return true;
}
// record 继续成功前设置当前会话 begin。
// 后续回合 quick、玩家 manual、最终 end 都会继续挂到原 begin 下。
public void SetActiveRecord(GameRecord record)
{
if (record == null) return;
_currentBeginArchiveId = record.BeginArchiveId;
}
// 用于继续流程失败时恢复旧会话 id。
// 正常业务一般不要直接调用。
public void SetCurrentBeginArchiveId(string beginArchiveId)
{
_currentBeginArchiveId = beginArchiveId;
}
// 玩家主动删除通用存档的上层接口。
// 这里只允许删除 Manual recordQuick 和 Ended 不通过这个接口删除。
public bool DeleteManualGameRecord(GameRecord record)
{
return DeleteManualContinueRecord(record);
}
// 删除玩家手动通用存档。
//
// 删除顺序刻意是先删 record再删文件
// - 如果传进来的 record 不在 GameRecordData 里,不会误删磁盘文件。
// - 如果文件删除失败record 已经移除,之后 UI 不会继续显示一条坏记录。
public bool DeleteManualContinueRecord(GameRecord record)
{
if (record == null || record.RecordKind != GameRecordKind.Manual) return false;
if (!GameRecordManager.Instance.RemoveRecord(record)) return false;
if (!string.IsNullOrEmpty(record.ContinueArchiveId))
{
DeleteArchive(GameArchiveFileKind.Continue, record.ContinueArchiveId);
}
return true;
}
// 删除快速存档 record 和 quick.dat。
//
// beginArchiveId 不为空时,只允许删除同一局的 quick。
// 这样某局结束时不会误删另一局刚写下的快速存档。
public bool DeleteQuickContinueRecord(string beginArchiveId = null)
{
var quickRecord = GameRecordManager.Instance.GetQuickRecord();
if (!string.IsNullOrEmpty(beginArchiveId)
&& quickRecord != null
&& quickRecord.BeginArchiveId != beginArchiveId)
{
return false;
}
DeleteArchive(GameArchiveFileKind.QuickContinue, QuickArchiveId);
return GameRecordManager.Instance.RemoveQuickRecord(beginArchiveId);
}
// 确保当前局已经有 begin。
// 正常新开局或 record 继续都会先绑定 begin这里主要兜底异常调用顺序。
private bool EnsureCurrentBeginArchive(MapData map)
{
return !string.IsNullOrEmpty(_currentBeginArchiveId) || SaveBeginArchive(map);
}
// 从当前 MapData 导出一条 GameRecord并填充新版存档索引字段。
//
// 重点record 不是完整存档,它只是:
// - 展示信息:模式、回合、时间、玩家、分数等。
// - 索引信息BeginArchiveId / ContinueArchiveId / EndArchiveId。
private GameRecord CreateRecord(
MapData map,
GameRecordKind recordKind,
string recordName,
string beginArchiveId,
string continueArchiveId,
string endArchiveId)
{
var record = map.ExportGameRecord();
record.RecordKind = recordKind;
record.RecordId = recordKind == GameRecordKind.Quick ? QuickArchiveId : NewArchiveId();
record.RecordName = recordName ?? string.Empty;
record.BeginArchiveId = beginArchiveId ?? string.Empty;
record.ContinueArchiveId = continueArchiveId ?? string.Empty;
record.EndArchiveId = endArchiveId ?? string.Empty;
return record;
}
// 真正写 MapData 文件的底层方法。
// 这里复用 MapData.SerializeArchiveBytes保证新旧存档格式的压缩/兼容编码一致。
private bool SaveArchive(MapData map, GameArchiveFileKind archiveKind, string archiveId)
{
if (!IsMapSaveable(map)) return false;
var path = GetArchivePath(archiveKind, archiveId);
if (path == null) return false;
try
{
byte[] bytes = MapData.SerializeArchiveBytes(map);
return FileTools.SafeWriteFile(path, bytes);
}
catch (Exception ex)
{
LogSystem.LogError($"[GameArchive] 保存存档失败: {archiveKind}/{archiveId} | {ex.Message}");
return false;
}
}
// 从磁盘读取某个 archiveId 对应的 MapData并做基本可用性校验。
// SafeWriteFile 会保留 .bak所以主文件坏了时这里会尝试读备份。
private MapData ReadArchive(GameArchiveFileKind archiveKind, string archiveId, NetMode expectedMode)
{
var path = GetArchivePath(archiveKind, archiveId);
if (path == null) return null;
var mapData = ReadArchiveFile(path);
if (mapData == null && !path.EndsWith(".bak", StringComparison.OrdinalIgnoreCase))
{
var backupPath = path + ".bak";
if (File.Exists(backupPath))
{
LogSystem.LogWarning($"[GameArchive] 读取存档失败,尝试读取备份: {backupPath}");
mapData = ReadArchiveFile(backupPath);
}
}
if (!IsMapReadable(mapData, expectedMode)) return null;
// 投降后的 continue 不允许继续end 文件不走继续入口,所以不受这个限制。
if (archiveKind != GameArchiveFileKind.End && mapData.PlayerMap.SelfPlayerData?.IsSurrender == true)
return null;
return mapData;
}
// 只负责读文件和反序列化,不做业务校验。
// 业务校验统一在 ReadArchive / IsMapReadable 里做。
private MapData ReadArchiveFile(string path)
{
if (!File.Exists(path)) return null;
try
{
byte[] bytes = File.ReadAllBytes(path);
return MapData.DeserializeArchiveBytes(bytes);
}
catch (Exception ex)
{
LogSystem.LogError($"[GameArchive] 读取存档失败: {path} | {ex.Message}");
return null;
}
}
// 判断一条 record 是否“理论上可以继续”。
// 这里只检查 record 自身字段;文件是否存在、内容是否完整,由 TryLoadContinueArchive 继续验证。
private bool CanRecordResume(GameRecord record)
{
if (record == null) return false;
if (record.RecordKind != GameRecordKind.Quick && record.RecordKind != GameRecordKind.Manual)
return false;
if (record.NetMode != NetMode.Single && record.NetMode != NetMode.Multi) return false;
if (string.IsNullOrEmpty(record.BeginArchiveId)) return false;
if (string.IsNullOrEmpty(record.ContinueArchiveId)) return false;
return true;
}
// 判断 MapData 是否适合写入新版存档。
// 这里排除旁观者和反序列化缺核心数据的坏档,避免把不可用内容写进新系统。
private bool IsMapSaveable(MapData map)
{
return map != null
&& map.Net != null
&& map.Net.Mode != NetMode.Spectator
&& !map.DeserializedMissingCriticalData
&& map.MapConfig != null
&& map.GridMap != null
&& map.PlayerMap != null
&& map.CityMap != null
&& map.UnitMap != null;
}
// 读档后校验:除完整性外,还要确认单机/联机模式没有串档。
private bool IsMapReadable(MapData map, NetMode expectedMode)
{
if (!IsMapSaveable(map)) return false;
if (map.Net.Mode != expectedMode)
{
LogSystem.LogWarning($"[GameArchive] 存档模式不匹配: expect={expectedMode}, actual={map.Net.Mode}");
return false;
}
return true;
}
// 删除一个 archive 文件及 SafeWriteFile 可能留下的备份/临时文件。
private void DeleteArchive(GameArchiveFileKind archiveKind, string archiveId)
{
var path = GetArchivePath(archiveKind, archiveId);
if (path == null) return;
DeleteFileIfExists(path);
DeleteFileIfExists(path + ".bak");
DeleteFileIfExists(path + ".tmp");
}
private void DeleteFileIfExists(string path)
{
try
{
if (File.Exists(path)) File.Delete(path);
}
catch (Exception ex)
{
LogSystem.LogError($"[GameArchive] 删除存档失败: {path} | {ex.Message}");
}
}
// archiveId 来自 record所以拼路径前先校验避免 .. 或路径分隔符造成越界访问。
private string GetArchivePath(GameArchiveFileKind archiveKind, string archiveId)
{
if (!IsValidArchiveId(archiveId)) return null;
return Path.Combine(GetArchiveDirectory(archiveKind), archiveId + ".dat");
}
// 新系统全部放在 Config/GameArchives 下,和旧的散落存档文件路径隔离。
private string GetArchiveDirectory(GameArchiveFileKind archiveKind)
{
var root = Path.GetFullPath(Path.Combine(Application.persistentDataPath, "../Config", ArchiveRootFolderName));
var subFolder = archiveKind switch
{
GameArchiveFileKind.Begin => "begin",
GameArchiveFileKind.QuickContinue => "quick_continue",
GameArchiveFileKind.Continue => "continue",
GameArchiveFileKind.End => "end",
_ => "unknown"
};
return Path.Combine(root, subFolder);
}
// 只允许简单文件名作为 archiveId。
// 正常 id 是 Guid.NewGuid().ToString("N"),快速存档固定是 quick。
private bool IsValidArchiveId(string archiveId)
{
if (string.IsNullOrWhiteSpace(archiveId)) return false;
if (archiveId.Contains("..")) return false;
if (archiveId.Contains("/") || archiveId.Contains("\\")) return false;
return archiveId.IndexOfAny(Path.GetInvalidFileNameChars()) < 0;
}
private string NewArchiveId()
{
return Guid.NewGuid().ToString("N");
}
// 手动存档名只影响 record 展示,不参与文件路径。
private string NormalizeManualRecordName(string recordName)
{
return string.IsNullOrWhiteSpace(recordName) ? "手动存档" : recordName.Trim();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f8ab77ac40b64c6daa3c9bbe4de18869
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -13,6 +13,7 @@ using Logic.AI;
using Logic.CrashSight;
using MemoryPack;
using TH1_Logic.Config;
using TH1_Logic.GameArchive;
using TH1_Logic.MatchConfig;
using TH1_Logic.Tools;
using UnityEngine;
@ -46,7 +47,8 @@ namespace RuntimeData
bool isScore = false,
bool isTurn = false,
bool isTime = false,
bool order = true)
bool order = true,
GameRecordKind recordKind = GameRecordKind.Ended)
{
RefreshGameRecord();
@ -55,9 +57,13 @@ namespace RuntimeData
return new List<GameRecord>();
}
// 步骤1: 筛选
// 步骤1: 筛选。
// 默认只返回 Ended保持旧历史战绩 UI 不会混入快速存档/手动存档。
// 如果外部要展示“手动存档列表”或“快速存档”,传入对应 recordKind 即可。
var filteredRecords = _gameRecord.Records.FindAll(record =>
{
if (record.RecordKind != recordKind) return false;
// 必筛选: 游戏模式
if (record.Mode != mode) return false;
@ -106,11 +112,110 @@ namespace RuntimeData
return filteredRecords;
}
public void AddRecord(GameRecord record)
// 按新版三分类直接取 GameRecord。
// 适合未来 UI 分页展示:
// - Ended完整结束记录
// - Manual玩家手动通用存档
// - Quick唯一快速存档
public List<GameRecord> GetGameRecordListByKind(GameRecordKind recordKind)
{
RefreshGameRecord();
return _gameRecord?.Records?.FindAll(record => record.RecordKind == recordKind) ?? new List<GameRecord>();
}
// 追加一条普通 record。
// Ended 和 Manual 都走这里Quick 不走这里,因为 Quick 要保证全局只有一条。
public void AddRecord(GameRecord record)
{
if (record == null) return;
RefreshGameRecord();
EnsureRecordId(record);
_gameRecord.Records.Add(record);
SaveGameRecordData();
}
// 写入快速存档记录。
// “Upsert”表示先删旧 Quick再写新 Quick从数据层保证快速存档只有一条。
public void UpsertQuickRecord(GameRecord record)
{
if (record == null) return;
RefreshGameRecord();
record.RecordKind = GameRecordKind.Quick;
record.RecordId = GameArchiveManager.QuickArchiveId;
_gameRecord.Records.RemoveAll(existing => existing.RecordKind == GameRecordKind.Quick);
_gameRecord.Records.Add(record);
SaveGameRecordData();
}
// 取得当前唯一的快速存档 record。
// 没有快速存档或快速存档被游戏结束清理后返回 null。
public GameRecord GetQuickRecord()
{
RefreshGameRecord();
return _gameRecord?.Records?.Find(record => record.RecordKind == GameRecordKind.Quick);
}
// 删除快速存档 record。
// beginArchiveId 为空表示无条件删除;非空表示只删除同一局 begin 下的 quick。
public bool RemoveQuickRecord(string beginArchiveId = null)
{
RefreshGameRecord();
var removed = _gameRecord.Records.RemoveAll(record =>
record.RecordKind == GameRecordKind.Quick &&
(string.IsNullOrEmpty(beginArchiveId) || record.BeginArchiveId == beginArchiveId));
if (removed <= 0) return false;
SaveGameRecordData();
return true;
}
// 删除某条 record。主要用于删除玩家手动通用存档。
// UI 传回来的 record 可能不是同一个对象引用,所以 IsSameRecord 会用 RecordId 和索引字段兜底匹配。
public bool RemoveRecord(GameRecord record)
{
if (record == null) return false;
RefreshGameRecord();
var removed = _gameRecord.Records.RemoveAll(existing => IsSameRecord(existing, record));
if (removed <= 0) return false;
SaveGameRecordData();
return true;
}
// 检查这条 record 是否真的能继续。
// 具体校验交给 GameArchiveManager只验证这一条 record 指向的 continue 文件,不扫描全量存档。
public bool HasUsableResumeArchive(GameRecord record)
{
return GameArchiveManager.Instance.HasUsableResumeArchive(record);
}
// 老数据没有 RecordId新写入前补一个。
// Quick record 使用固定 quick id会在 UpsertQuickRecord 里覆盖。
private void EnsureRecordId(GameRecord record)
{
if (!string.IsNullOrEmpty(record.RecordId)) return;
record.RecordId = Guid.NewGuid().ToString("N");
}
// 判断两条 record 是否指向同一条记录。
// 优先用 RecordId如果老数据没有 RecordId再用 begin/continue/end/time 组合做兼容匹配。
private bool IsSameRecord(GameRecord left, GameRecord right)
{
if (ReferenceEquals(left, right)) return true;
if (left == null || right == null) return false;
if (!string.IsNullOrEmpty(left.RecordId) && left.RecordId == right.RecordId) return true;
return left.RecordKind == right.RecordKind
&& left.BeginArchiveId == right.BeginArchiveId
&& left.ContinueArchiveId == right.ContinueArchiveId
&& left.EndArchiveId == right.EndArchiveId
&& left.Time == right.Time;
}
// 统一保存 GameRecordData避免 Add/Remove/Upsert 到处重复序列化逻辑。
private void SaveGameRecordData()
{
byte[] bytes = MemoryPackSerializer.Serialize(_gameRecord);
FileTools.SafeWriteFile(Application.persistentDataPath + "/../Config/game_record.dat", bytes);
}
@ -151,6 +256,7 @@ namespace RuntimeData
}
_gameRecord ??= new GameRecordData();
_gameRecord.Records ??= new List<GameRecord>();
}
}
@ -167,6 +273,15 @@ namespace RuntimeData
}
}
public enum GameRecordKind
{
// 已结束的完整游戏记录。旧 GameRecord 反序列化后默认也是 0即 Ended。
Ended,
// 玩家主动创建的通用继续存档记录,可以有多条。
Manual,
// 自动快速继续存档记录,全局只维护一条。
Quick
}
[MemoryPackable]
public partial class GameRecord
@ -185,5 +300,24 @@ namespace RuntimeData
// 新增字段必须追加在末尾,否则会破坏老玩家存档。
// 用于区分教程/剧情等特殊关卡UI 历史记录会过滤 Tutor。
public MatchSettlementType MatchSettlement;
// 旧系统的 mapid 仍保留,兼容旧继续流程和旧数据;新版继续不再依赖它。
public uint MapID;
// 单机/联机模式。新版按 record.NetMode 选择对应的开始游戏接口。
public NetMode NetMode;
// 写入 record 时的游戏版本信息,用于未来做版本兼容提示。
public string GameVersion;
public uint GameVersionId;
// 新版 GameRecord 三分类Ended / Manual / Quick。
public GameRecordKind RecordKind;
// 记录自身 id。Quick 固定为 quick其它记录使用 guid。
public string RecordId;
// 玩家可见名称,目前主要给 Manual record 使用。
public string RecordName;
// 本 record 归属的开局快照。新版 record 一定要能索引到 begin。
public string BeginArchiveId;
// 可继续存档的文件 id。只有 Manual/Quick 需要它Ended 通常为空。
public string ContinueArchiveId;
// 结束快照文件 id。只有 Ended 需要它Manual/Quick 通常为空。
public string EndArchiveId;
}
}
}

View File

@ -7,6 +7,7 @@ using Steamworks;
using TH1_Logic.Collect;
using TH1_Logic.Config;
using TH1_Logic.Core;
using TH1_Logic.GameArchive;
using TH1_Logic.Net;
using UnityEngine;
@ -43,8 +44,7 @@ namespace TH1_Logic.Oss
public void UploadMapData(string steamId, MapData endMap)
{
if (endMap.Net.Mode == NetMode.Multi && !LobbyManager.Instance.Lobby.IsLobbyOwner()) return;
var beginMap = MapData.GetMapData(endMap.Net.Mode == NetMode.Multi, true, false, endMap.MapID);
if (beginMap == null)
if (!GameArchiveManager.Instance.TryLoadCurrentBeginArchive(endMap.Net.Mode, out var beginMap))
{
LogSystem.LogError($"UploadMapData Error beginMap is null : {endMap.Net.Mode} {endMap.MapID}");
return;

View File

@ -13,7 +13,9 @@ using System.Text;
using Logic.Config;
using Logic.CrashSight;
using Logic.Multilingual;
using RuntimeData;
using TH1_Logic.Config;
using TH1_Logic.GameArchive;
using UnityEngine;
@ -32,6 +34,7 @@ namespace TH1_Logic.Oss
public string mode;
public uint mapId;
public string kind;
public string archiveFolder;
public string sourceFileName;
public string zipEntry;
public long fileSize;
@ -370,102 +373,57 @@ namespace TH1_Logic.Oss
private static bool TryGetLatestArchiveSession(bool isMulti, out PlayerBugReportArchiveSession session)
{
session = null;
var files = GetArchiveFiles(isMulti);
if (files.Count == 0) return false;
var groups = new Dictionary<uint, ArchiveGroup>();
foreach (var file in files)
{
if (!groups.TryGetValue(file.MapId, out var group))
{
group = new ArchiveGroup { MapId = file.MapId, IsMulti = isMulti };
groups[file.MapId] = group;
}
group.Add(file);
}
session = groups.Values
.Select(group => group.TryBuildSession())
var expectedMode = isMulti ? NetMode.Multi : NetMode.Single;
var records = GameRecordManager.Instance.GameRecordData?.Records ?? new List<GameRecord>();
session = records
.Where(record => record != null && record.NetMode == expectedMode)
.Select(TryBuildArchiveSession)
.Where(value => value != null)
.OrderByDescending(value => value.LatestWriteTimeUtc)
.FirstOrDefault();
return session != null;
}
private static List<ArchiveFile> GetArchiveFiles(bool isMulti)
private static PlayerBugReportArchiveSession TryBuildArchiveSession(GameRecord record)
{
var result = new List<ArchiveFile>();
var directory = ConfigDirectory;
if (!Directory.Exists(directory)) return result;
foreach (var pattern in new[] { "map_archive_*.dat", "map_archive_*.dat.bak" })
if (record == null || string.IsNullOrEmpty(record.BeginArchiveId)) return null;
if (!GameArchiveManager.Instance.TryGetArchivePath(
GameArchiveFileKind.Begin,
record.BeginArchiveId,
out var beginPath))
{
foreach (var path in Directory.GetFiles(directory, pattern))
{
if (TryParseArchiveFile(path, out var file) && file.IsMulti == isMulti)
result.Add(file);
}
return null;
}
return result;
}
private static bool TryParseArchiveFile(string path, out ArchiveFile file)
{
file = null;
var fileName = Path.GetFileName(path);
if (string.IsNullOrEmpty(fileName)) return false;
if (fileName.EndsWith(".bak", StringComparison.OrdinalIgnoreCase))
fileName = fileName.Substring(0, fileName.Length - ".bak".Length);
if (!fileName.EndsWith(".dat", StringComparison.OrdinalIgnoreCase)) return false;
var stem = fileName.Substring(0, fileName.Length - ".dat".Length);
const string prefix = "map_archive_";
if (!stem.StartsWith(prefix, StringComparison.Ordinal)) return false;
var rest = stem.Substring(prefix.Length);
var kind = PlayerBugArchiveKind.Continue;
if (rest.StartsWith("begin_", StringComparison.Ordinal))
var companionKind = PlayerBugArchiveKind.End;
var companionArchiveKind = GameArchiveFileKind.End;
var companionArchiveId = record.EndArchiveId;
if (string.IsNullOrEmpty(companionArchiveId))
{
kind = PlayerBugArchiveKind.Begin;
rest = rest.Substring("begin_".Length);
}
else if (rest.StartsWith("continue_", StringComparison.Ordinal))
{
kind = PlayerBugArchiveKind.Continue;
rest = rest.Substring("continue_".Length);
}
else if (rest.StartsWith("end_", StringComparison.Ordinal))
{
kind = PlayerBugArchiveKind.End;
rest = rest.Substring("end_".Length);
}
else
{
return false;
companionKind = PlayerBugArchiveKind.Continue;
companionArchiveKind = record.RecordKind == GameRecordKind.Quick
? GameArchiveFileKind.QuickContinue
: GameArchiveFileKind.Continue;
companionArchiveId = record.ContinueArchiveId;
}
if (string.IsNullOrEmpty(companionArchiveId)) return null;
if (!GameArchiveManager.Instance.TryGetArchivePath(
companionArchiveKind,
companionArchiveId,
out var companionPath))
return null;
var isMulti = false;
if (rest.StartsWith("multi_", StringComparison.Ordinal))
return new PlayerBugReportArchiveSession
{
isMulti = true;
rest = rest.Substring("multi_".Length);
}
if (!uint.TryParse(rest, out var mapId)) return false;
file = new ArchiveFile
{
Path = path,
Kind = kind,
IsMulti = isMulti,
MapId = mapId,
LastWriteTimeUtc = File.GetLastWriteTimeUtc(path)
IsMulti = record.NetMode == NetMode.Multi,
MapId = record.MapID,
BeginPath = beginPath,
CompanionPath = companionPath,
CompanionKind = companionKind,
LatestWriteTimeUtc = File.GetLastWriteTimeUtc(beginPath) > File.GetLastWriteTimeUtc(companionPath)
? File.GetLastWriteTimeUtc(beginPath)
: File.GetLastWriteTimeUtc(companionPath)
};
return true;
}
private static void AddArchiveFile(ZipArchive zip, PlayerBugReportArchiveSession session,
@ -475,7 +433,10 @@ namespace TH1_Logic.Oss
var kindLabel = GetKindLabel(kind);
var sourceFileName = Path.GetFileName(sourcePath);
var entryPath = $"saves/{session.ModeLabel}/{sourceFileName}";
var archiveFolder = Path.GetFileName(Path.GetDirectoryName(sourcePath)) ?? "";
var entryPath = string.IsNullOrEmpty(archiveFolder)
? $"saves/{session.ModeLabel}/{sourceFileName}"
: $"saves/{session.ModeLabel}/{archiveFolder}/{sourceFileName}";
var entry = zip.CreateEntry(entryPath, System.IO.Compression.CompressionLevel.Optimal);
using (var entryStream = entry.Open())
using (var fileStream = File.OpenRead(sourcePath))
@ -489,6 +450,7 @@ namespace TH1_Logic.Oss
mode = session.ModeLabel,
mapId = session.MapId,
kind = kindLabel,
archiveFolder = archiveFolder,
sourceFileName = sourceFileName,
zipEntry = entryPath,
fileSize = fileInfo.Length,
@ -514,66 +476,6 @@ namespace TH1_Logic.Oss
};
}
private class ArchiveFile
{
public string Path;
public PlayerBugArchiveKind Kind;
public bool IsMulti;
public uint MapId;
public DateTime LastWriteTimeUtc;
}
private class ArchiveGroup
{
public uint MapId;
public bool IsMulti;
private ArchiveFile _begin;
private ArchiveFile _continue;
private ArchiveFile _end;
public void Add(ArchiveFile file)
{
switch (file.Kind)
{
case PlayerBugArchiveKind.Begin:
if (_begin == null || file.LastWriteTimeUtc > _begin.LastWriteTimeUtc) _begin = file;
break;
case PlayerBugArchiveKind.End:
if (_end == null || file.LastWriteTimeUtc > _end.LastWriteTimeUtc) _end = file;
break;
default:
if (_continue == null || file.LastWriteTimeUtc > _continue.LastWriteTimeUtc) _continue = file;
break;
}
}
public PlayerBugReportArchiveSession TryBuildSession()
{
if (_begin == null) return null;
var companion = PickCompanion();
if (companion == null) return null;
return new PlayerBugReportArchiveSession
{
IsMulti = IsMulti,
MapId = MapId,
BeginPath = _begin.Path,
CompanionPath = companion.Path,
CompanionKind = companion.Kind,
LatestWriteTimeUtc = _begin.LastWriteTimeUtc > companion.LastWriteTimeUtc
? _begin.LastWriteTimeUtc
: companion.LastWriteTimeUtc
};
}
private ArchiveFile PickCompanion()
{
if (_end == null) return _continue;
if (_continue == null) return _end;
return _end.LastWriteTimeUtc >= _continue.LastWriteTimeUtc ? _end : _continue;
}
}
private static string GetLocalTimezone()
{
try

View File

@ -11,6 +11,7 @@ using TH1_Core.Events;
using TH1_Core.Managers;
using TH1_Logic.Core;
using TH1_Logic.Config;
using TH1_Logic.GameArchive;
using TH1_Logic.Net;
using TH1_Logic.Steam;
using TH1_UI.Components;
@ -241,6 +242,8 @@ namespace TH1_UI.View.Bottom
if (Main.MapData == null) return;
if (!Main.MapData.CurPlayer.IsSelfPlayer()) return;
if (Main.MapData.Net.Mode != NetMode.Single) return;
var resumeRecord = GameArchiveManager.Instance.GetQuickResumeRecord(NetMode.Single);
if (resumeRecord == null) return;
// 切到 Menu 状态前先抓 EmpireMenuState.Enter 会调 Main.Instance.Clear() 清空 MapData
var loadingEvt = new ShowUIOutsideLoading();
@ -253,7 +256,7 @@ namespace TH1_UI.View.Bottom
//播放loading
EventManager.Publish(loadingEvt);
//重置游戏
Timer.Instance.TimerRegister(this, () => { Main.Instance.ResumeMatch(); }, 0.3f,"MainUI_ShowLoadingAndRusume");
Timer.Instance.TimerRegister(this, () => { Main.Instance.ResumeMatch(resumeRecord); }, 0.3f,"MainUI_ShowLoadingAndRusume");
//关闭loading
Timer.Instance.TimerRegister(this,()=> { EventManager.Publish(new HideUIOutsideLoading()); },1f,"MainUI_ShowLoadingAndRusume2");
}

View File

@ -14,6 +14,7 @@ using TH1_Core.Managers;
using TH1_Logic.Action;
using TH1_Logic.Config;
using TH1_Logic.Core;
using TH1_Logic.GameArchive;
using TH1_Logic.Net;
using TH1_Logic.Steam;
using TH1_UI.View.Announce;
@ -123,7 +124,7 @@ namespace TH1_UI.View.Outside
MultiplayButton.onClick.AddListener(OnMultiplayClicked);
ResumeButton.onClick.RemoveAllListeners();
ResumeButton.gameObject.SetActive(false);
if (Main.Instance.HasArchive())
if (GameArchiveManager.Instance.HasQuickResumeArchive(NetMode.Single))
{
ResumeButton.gameObject.SetActive(true);
ResumeButton.onClick.AddListener(OnResumeClicked);
@ -170,10 +171,11 @@ namespace TH1_UI.View.Outside
public void OnResumeClicked()
{
if (!Main.Instance.HasArchive()) return;
var record = GameArchiveManager.Instance.GetQuickResumeRecord(NetMode.Single);
if (record == null) return;
// 预读存档拿 Empire 用于切换 Loading 图ResumeMatch 会复用该实例,不会重复反序列化
var preread = MapData.GetMapData();
// 预读新 quick 存档拿 Empire 用于切换 Loading 图ResumeMatch 会复用该实例,不会重复反序列化
if (!GameArchiveManager.Instance.TryLoadContinueArchive(record, out var preread)) return;
if (preread == null) return;
// 单机存档 SelfPlayer 与 ResumeMatch 内一致PlayerDataList[0]
var dataList = preread.PlayerMap?.PlayerDataList;
@ -184,7 +186,7 @@ namespace TH1_UI.View.Outside
EventManager.Publish(loadingEvt);
var fadeinTime = ResourceCache.Instance.AnimCache.UICommonPanelFadeIn.length;
var prepareTime = 1f;
Timer.Instance.TimerRegister(this,()=>{Main.Instance.ResumeMatch(preread);EventManager.Publish(new HideUIOutsideMenu());},fadeinTime,"MenuResumeClicked1");
Timer.Instance.TimerRegister(this,()=>{Main.Instance.ResumeMatch(record, preread);EventManager.Publish(new HideUIOutsideMenu());},fadeinTime,"MenuResumeClicked1");
Timer.Instance.TimerRegister(this,()=>{EventManager.Publish(new HideUIOutsideAll());},fadeinTime+prepareTime,"MenuResumeClicked2");
}

View File

@ -14,6 +14,7 @@ using TH1_Core.Managers;
using TH1_Logic.Action;
using TH1_Logic.Chat;
using TH1_Logic.Core;
using TH1_Logic.GameArchive;
using TH1_Logic.MatchConfig;
using TH1_Logic.Net;
using TH1_Logic.Steam;
@ -678,7 +679,7 @@ namespace TH1_UI.View.Outside
if (ResumeToggle == null) return;
var mapConfig = Main.Instance.MapConfig;
var isOwner = _lobby.IsLobbyOwner();
var canOwnerResume = isOwner && Main.Instance.HasMultiArchive();
var canOwnerResume = isOwner && GameArchiveManager.Instance.HasQuickResumeArchive(NetMode.Multi);
var selected = mapConfig != null && mapConfig.IsResumeArchiveSelected;
if (isOwner && selected && !canOwnerResume)
selected = false;
@ -698,7 +699,7 @@ namespace TH1_UI.View.Outside
return;
}
if (!Main.Instance.HasMultiArchive()) selected = false;
if (!GameArchiveManager.Instance.HasQuickResumeArchive(NetMode.Multi)) selected = false;
if (Main.Instance.MapConfig.SetResumeArchiveSelected(selected))
Main.Instance.MapConfig.CheckMapConfigChanged();
RefreshResumeBoard(selected);
@ -1538,7 +1539,7 @@ namespace TH1_UI.View.Outside
SetMapConfig();
ReconcileRoomMembers();
if(Main.Instance.HasMultiArchive() && Main.Instance.MapConfig.IsResumeArchiveSelected){
if(GameArchiveManager.Instance.HasQuickResumeArchive(NetMode.Multi) && Main.Instance.MapConfig.IsResumeArchiveSelected){
if (!AreCurrentLobbyMembersReady())
{
Debug.Log("Cannot resume multiplayer game: not all current lobby members are ready");
@ -1672,7 +1673,10 @@ namespace TH1_UI.View.Outside
private bool TryStartHostGame(bool resume)
{
return resume ? Main.Instance.MainMemberResumeMatch() : Main.Instance.MainMemberStartMatch();
if (!resume) return Main.Instance.MainMemberStartMatch();
var record = GameArchiveManager.Instance.GetQuickResumeRecord(NetMode.Multi);
return record != null && Main.Instance.ResumeMatch(record);
}