Compare commits
10 Commits
7d3aa833dd
...
6342e1496d
| Author | SHA1 | Date | |
|---|---|---|---|
| 6342e1496d | |||
| 5abe3d3b93 | |||
| 0ada73a4cd | |||
| 61af6dffd6 | |||
| c60424a3ba | |||
| a3e26c3af3 | |||
| 2952effbe2 | |||
| ccfec95224 | |||
| af2be3447c | |||
| 9bc559cfc0 |
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: th1-action-logic
|
||||
description: TH1 project-specific behavior/action logic guide for Unity C# action execution, CommonActionParams/CommonActionId, ActionLogicFactory, CheckCan/CheckShow/CompleteExecute, player input actions, AI action generation/scoring/execution, turn actions, ActionNetData multiplayer synchronization, deterministic random, and skill lifecycle side effects. Use whenever Codex works on TH1 Action/行为逻辑, UnitMove/UnitAttack/Build/Train/GridMisc/PlayerAction/LearnTech/TurnStart/TurnEnd, AIActionGenerator/AIActionScoreCalculator/BTNodeCanvas AI nodes, action replay/spectator, or bugs involving action desync, illegal actions, AI choosing/executing actions, or action-triggered skills.
|
||||
description: TH1 project-specific behavior/action logic guide for Unity C# action execution, CommonActionParams/CommonActionId, ActionLogicFactory, CheckCan/CheckShow/CompleteExecute, player input actions, PlayerAction diplomacy/team teammate rules, AI action generation/scoring/execution, turn actions, ActionNetData multiplayer synchronization, deterministic random, and skill lifecycle side effects. Use whenever Codex works on TH1 Action/行为逻辑, UnitMove/UnitAttack/Build/Train/GridMisc/PlayerAction/LearnTech/TurnStart/TurnEnd, diplomacy actions, teammate/team logic, AIActionGenerator/AIActionScoreCalculator/BTNodeCanvas AI nodes, action replay/spectator, or bugs involving action desync, illegal actions, AI choosing/executing actions, or action-triggered skills.
|
||||
---
|
||||
|
||||
# TH1 Action Logic
|
||||
@ -77,6 +77,15 @@ TH1 的 action 是玩家、AI、网络同步、回放、技能触发共同使用
|
||||
7. 如果训练/模型会编码该行为,检查 `TrainingState`、action bit codec、AI 模型预测映射。
|
||||
8. 用单机、AI、多人 host/client、回放/观战思维各走一遍。
|
||||
|
||||
## Diplomacy And Team Rules
|
||||
|
||||
`CountryDiplomacyInfo.IsTeammate` is stronger than a normal alliance. It is created from `MapConfig.MultiCivs[*].TeamId` during map/player initialization and should behave like an unbreakable `DiplomacyState.League`.
|
||||
|
||||
- Treat teammates as allies in `SameUnion` and `SameUnionOrJustBreakUnion` style checks.
|
||||
- Any `PlayerAction` or helper that can set `War`, `Neutral`, or `LeagueRupture` must preserve teammate links as `League`.
|
||||
- `BreakAlly`, war conversion, surrender cleanup, and turn-start diplomacy refresh should skip or restore teammate relations.
|
||||
- Team victory is evaluated from settlement results: a player wins if they or a same-team player has a winning settlement. When changing end-game or achievement/collect triggers, inspect `MapData.CheckIfGameEnd` and team helpers.
|
||||
|
||||
## AI Rules
|
||||
|
||||
AI 的最终执行仍然走 action 层:
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "TH1 Action Logic"
|
||||
short_description: "TH1 action AI sync behavior rules"
|
||||
default_prompt: "Use $th1-action-logic to trace and safely modify TH1 action, AI, or multiplayer behavior."
|
||||
short_description: "TH1 action, AI, sync, and teammate behavior rules"
|
||||
default_prompt: "Use $th1-action-logic to trace and safely modify TH1 action, PlayerAction diplomacy/team rules, AI, or multiplayer behavior."
|
||||
|
||||
107
.codex/skills/th1-crashsight-daily/SKILL.md
Normal file
107
.codex/skills/th1-crashsight-daily/SKILL.md
Normal file
@ -0,0 +1,107 @@
|
||||
---
|
||||
name: th1-crashsight-daily
|
||||
description: TH1 project-specific daily CrashSight triage workflow for using the logged-in Chrome session to scan recent versions, inspect every CrashSight error, decode obfuscated Unity C# stacks, classify only direct exceptions or try/catch captured exceptions as blocking, and write Markdown blocking/debug reports under MD/. Use when the user asks for CrashSight daily reports, 最近一天异常扫描, version-scoped crash/error triage, blocking/debug report generation, or recurring production error review.
|
||||
---
|
||||
|
||||
# TH1 CrashSight Daily
|
||||
|
||||
## Core Rule
|
||||
|
||||
Do not over-classify business `LogSystem.LogError` telemetry as blocking.
|
||||
|
||||
Classify an issue as `blocking` only when one of these is true:
|
||||
|
||||
- CrashSight issue type is a real exception, such as `NullReferenceException`, `KeyNotFoundException`, `InvalidOperationException`, `ArgumentNullException`, `MemoryPackSerializationException`, `DllNotFoundException`, etc.
|
||||
- The visible message or detail page contains a try/catch captured exception object or stack, such as `System.*Exception`, `异常类型`, `异常信息`, `调用堆栈`, `error: System...`, `failed: System...`, `ex: Object reference`, or `at Namespace.Type.Method(...)`.
|
||||
- A `UnityLogError` is clearly wrapping an exception caught by code, for example `OnMessageReceived 处理失败, error: System.NullReferenceException...`, `Timer任务执行异常: 异常类型: ...`, or `EventManager Publish<...> listener failed: System...`.
|
||||
|
||||
Classify as `debug` when the issue is only a plain project log or diagnostic state, even if it sounds serious:
|
||||
|
||||
- Player/map/action mismatch logs without an exception object, such as `CompleteExecute Player 不一致`, `Map不一致`, `OnReceivedActionExcute Player 不一致`.
|
||||
- AI/action diagnostics such as `存在相似action`, `不应该出现在...`, `CheckCan No`, `ActionConfirm send failed`, unless a concrete exception stack is present.
|
||||
- Networking/environment/send telemetry such as STS/OSS failures, P2P send/connect failures, lobby failures, ForceUpdate/request logs, player-net mapping failure logs, Steam not logged in.
|
||||
- UI/prefab guard logs such as `CityInfoMono.SetCulture: ... is null` or `FragmentDie: UnitRenderer 为空` when they are plain guard logs, not thrown/caught exceptions.
|
||||
- Save/file/Workshop/local environment logs when they do not include an exception stack.
|
||||
|
||||
When uncertain after quick preview, open the detail page. If the detail still does not contain a concrete exception object/stack, keep it in `debug` and record the code location only.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Use the Chrome skill, not the in-app browser, because CrashSight requires the user's logged-in Chrome session.
|
||||
2. Open the CrashSight errors URL from the user or the previous daily URL.
|
||||
3. Filter scope:
|
||||
- status: open/processing, usually `status=0,2`.
|
||||
- exception category: `ERROR`.
|
||||
- date: last 1 day.
|
||||
- versions: use the two user-specified recent versions; if unspecified, inspect the version dropdown and choose the newest two target release versions only. Avoid broad wildcard ranges unless the user explicitly asks.
|
||||
4. Capture all list pages, increasing `rows` when possible, and dedupe by Issue ID. Store raw captured rows under `Temp/CrashSight/Daily_<yyyy-MM-dd>/`.
|
||||
5. Inspect issues one by one:
|
||||
- Use quick preview when it shows full message and stack.
|
||||
- Open issue detail when preview is truncated, message is `-`, the stack lacks symbols, or classification depends on whether a real exception is present.
|
||||
6. Decode obfuscated online stacks before code search:
|
||||
- Use `Tools/DecodeOnlineError.ps1` or `Tools/ObfuscatedExceptionDecoder.ps1`.
|
||||
- Decode all blocking candidates and any debug rows that need code location from an obfuscated stack.
|
||||
7. Locate code with `rg` and the decoded symbols. Prefer exact method/class names first, then stable message strings.
|
||||
8. Generate Markdown under `MD/CrashSight_<yyyy-MM-dd>_<versions>_1day/`.
|
||||
|
||||
## Output Layout
|
||||
|
||||
Create this structure:
|
||||
|
||||
```text
|
||||
MD/CrashSight_<yyyy-MM-dd>_<versionA>_<versionB>_1day/
|
||||
├── index.md
|
||||
├── debug_summary.md
|
||||
├── report_manifest.json
|
||||
└── blocking/
|
||||
├── 001_issue_<id>.md
|
||||
└── ...
|
||||
```
|
||||
|
||||
Use a filesystem-safe version suffix, for example `0.7.1k_0.7.1j`.
|
||||
|
||||
`index.md` must include:
|
||||
|
||||
- filter scope and capture time.
|
||||
- CrashSight total seen and deduped rows.
|
||||
- blocking issue count/occurrence count.
|
||||
- debug issue count/occurrence count.
|
||||
- blocking family table sorted by occurrence count.
|
||||
- top blocking issues with links to per-issue reports.
|
||||
|
||||
`debug_summary.md` must include:
|
||||
|
||||
- debug category summary with counts, occurrences, code locations, and example Issue IDs.
|
||||
- debug detail table for every debug Issue.
|
||||
- no trigger-cause analysis and no business fix explanation.
|
||||
|
||||
Each `blocking/*.md` must include:
|
||||
|
||||
- Issue ID, CrashSight URL, type, versions, first/last seen, count.
|
||||
- raw message and key stack.
|
||||
- decoded stack or decoded log text.
|
||||
- code location with file paths and line numbers when possible.
|
||||
- trigger reason and why it is blocking.
|
||||
- focused recommendation.
|
||||
|
||||
`report_manifest.json` must mirror the final classification and counts so a later run can audit changes.
|
||||
|
||||
## Classification Audit
|
||||
|
||||
Before finalizing, run a text audit over the generated results:
|
||||
|
||||
- Verify every `blocking` issue either has a non-`UnityLogError` exception type or contains a concrete caught exception/stack in the message/detail.
|
||||
- Search debug rows for `System.*Exception`, `异常类型`, `调用堆栈`, `Object reference`, `KeyNotFoundException`, `ArgumentNullException`; promote only those with real exception context.
|
||||
- Search blocking rows for plain telemetry strings like `Player 不一致`, `Map不一致`, `存在相似action`, `ForceUpdate 玩家网络映射失败`, `安全写入失败`, `P2P message send failed`; demote them unless they also include a real exception object/stack.
|
||||
- Confirm `blocking/*.md` count equals `report_manifest.json.blockingReports.length`.
|
||||
|
||||
## Reporting Back
|
||||
|
||||
In the final response, provide:
|
||||
|
||||
- link to `index.md`.
|
||||
- final blocking/debug counts.
|
||||
- a short note that plain `LogSystem.LogError` diagnostics were kept in debug unless they wrapped an actual exception.
|
||||
- any limitations, such as rows that required detail pages but still had no full stack.
|
||||
|
||||
At the end of Chrome automation, close/finalize browser tabs according to the Chrome skill instructions.
|
||||
4
.codex/skills/th1-crashsight-daily/agents/openai.yaml
Normal file
4
.codex/skills/th1-crashsight-daily/agents/openai.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
interface:
|
||||
display_name: "TH1 CrashSight Daily"
|
||||
short_description: "Daily CrashSight triage for TH1 reports"
|
||||
default_prompt: "Use $th1-crashsight-daily to scan recent CrashSight errors and write blocking/debug reports."
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: th1-network-sync
|
||||
description: TH1 project-specific network synchronization guide for Unity C# multiplayer, Steam P2P, GameNetSender/GameNetReceiver, SteamLobbyManager, SimpleP2P, MapData/NetData recovery, action sync, host start/resume, ForceUpdate, heartbeat, ordered delivery, large message chunking, send-failure handling, and lobby UI rollback. Use whenever Codex works on TH1 networking, multiplayer saves, deterministic sync, P2P queueing, MapData broadcasts, ActionConfirm/ActionExecute, reconnect, Timer-driven network callbacks, or any bug that may affect multiplayer reliability or ordering.
|
||||
description: TH1 project-specific network synchronization guide for Unity C# multiplayer, Steam P2P, GameNetSender/GameNetReceiver, SteamLobbyManager, SimpleP2P, lobby MapConfig/MemberCiv player slot/team/AI/ready-state sync before game start, MapData/NetData recovery, action sync, host start/resume, ForceUpdate, heartbeat, ordered delivery, large message chunking, send-failure handling, and lobby UI rollback. Use whenever Codex works on TH1 networking, multiplayer rooms, member civ/ready/team/AI slot config, multiplayer saves, deterministic sync, P2P queueing, MapData broadcasts, ActionConfirm/ActionExecute, reconnect, Timer-driven network callbacks, or any bug that may affect multiplayer reliability or ordering.
|
||||
---
|
||||
|
||||
# TH1 Network Sync
|
||||
@ -33,7 +33,7 @@ For the one-click Steam P2P stress tool, report fields, and current healthy base
|
||||
|
||||
1. Classify the message.
|
||||
- Critical: `GameStart`, `ForceUpdate`, `ActionConfirm`, `ActionExecute`, full `MapData`, reconnect/restore messages.
|
||||
- Health/status: heartbeat, map confirm, lobby state, chat.
|
||||
- Health/status: heartbeat, map confirm, lobby state/config, member ready state, chat.
|
||||
- Critical messages must return `bool` or otherwise expose failure to the caller before local state advances.
|
||||
|
||||
2. Preserve ordering.
|
||||
@ -59,17 +59,30 @@ For the one-click Steam P2P stress tool, report fields, and current healthy base
|
||||
- Ensure every current lobby member maps to a valid `PlayerId`.
|
||||
- Do not repair missing critical data silently during deserialization.
|
||||
|
||||
6. Roll back failed start/resume.
|
||||
6. Keep lobby `MapConfig` host-authoritative.
|
||||
- Pre-game room settings, `MemberCiv`, player slot/team/AI flags, and ready state live in `Main.Instance.MapConfig`.
|
||||
- `MapConfig.MultiCivs` is now the full player-slot list and should be sized to `PlayerCount`; do not treat it as only current lobby members.
|
||||
- Each `MemberCiv` slot uses `Index` as the stable player position. `MemberId != 0` means a real member is bound, `MemberId == 0 && IsAI` means an AI slot, and `TeamId == 0` means no team.
|
||||
- Call `MapConfig.EnsurePlayerSlots(NetMode.Multi)` before reading or mutating lobby slots, especially after changing `PlayerCount` or receiving host config.
|
||||
- Clients may optimistically update their own `MemberCiv` only after `ChangeCiv` send succeeds, then still accept host `UpdateLobbyData` as authority.
|
||||
- Clients entering a room should request host lobby data until current lobby members match `MapConfig.MultiCivs`.
|
||||
- Host must refresh lobby members before sending lobby config; new guests default not ready, and the owner is always ready.
|
||||
- Changing civ, team, AI slot ownership, slot assignment, or host room settings should clear guest ready state.
|
||||
- Host start/resume must require `AreAllLobbyMembersReady()`.
|
||||
- `Net.RefreshPlayerNet(mapData)` maps real lobby `MemberId` values to the slot-created `PlayerId`; AI slots must not require a lobby member mapping.
|
||||
- `TeamId` drives in-game teammate diplomacy, so host and clients must agree on the full slot list before `GameStart`.
|
||||
|
||||
7. Roll back failed start/resume.
|
||||
- Snapshot `MapData`, `InputLogic`, `MapInteractionLogic`, and `MapGeneratorLogic` before host start/resume mutation.
|
||||
- On failure or exception, restore the snapshot, dispose/reinitialize render state as appropriate, cancel pending start timers, and keep lobby UI open.
|
||||
- UI code must only invoke room-close/start callbacks after the start method returns `true`.
|
||||
|
||||
7. Keep receiver failure atomic.
|
||||
8. Keep receiver failure atomic.
|
||||
- Deserialize and dispatch inside try/catch.
|
||||
- If incoming `GameStart` or `ForceUpdate` validation fails, do not hide room UI and do not leave the game in `ForceUpdating`.
|
||||
- Restore previous game state if `NetResumeMatch` fails.
|
||||
|
||||
8. Preserve the stress-test path.
|
||||
9. Preserve the stress-test path.
|
||||
- `NetworkStressMessage` is a diagnostics message and must not mutate gameplay state.
|
||||
- `GameNetReceiver` should ignore `P2PMsgType.NetworkStress`; the editor tool listens through `SimpleP2P.OnMessageReceivedEvent`.
|
||||
- Stress probes must still use `Lobby.BroadcastMessage` / `SendMessageToPeer` so they cover the real ordered queue and large-message chunking path.
|
||||
@ -94,6 +107,11 @@ For network-heavy changes, inspect these risks explicitly:
|
||||
|
||||
- Could a critical broadcast partially enqueue?
|
||||
- Could a caller ignore a failed send and still mutate game state?
|
||||
- Could a client treat optimistic `MemberCiv` or ready state as authoritative before host `UpdateLobbyData`?
|
||||
- Could the host start/resume while any guest is not ready or current lobby members do not match `MapConfig.MultiCivs`?
|
||||
- Could an empty non-AI slot (`MemberId == 0 && !IsAI`) start the game accidentally?
|
||||
- Could code reintroduce the old assumption that `MultiCivs.Count == current lobby member count`?
|
||||
- Could `MemberCiv.Index`, `PlayerId`, or `TeamId` diverge between host and clients before `GameStart`?
|
||||
- Could `MapData` deserialize with missing core fields and still be used?
|
||||
- Could a timer callback fire after the target UI/object state is gone?
|
||||
- Could a retry loop or ordered gap wait forever?
|
||||
@ -105,4 +123,8 @@ For network-heavy changes, inspect these risks explicitly:
|
||||
- Do not silently swallow `SendMessageToPeer` or `BroadcastMessage` failure.
|
||||
- Do not call `GameNetReceiver` from a partial large-message chunk.
|
||||
- Do not close the multiplayer room UI before host start returns success.
|
||||
- Do not add separate pre-game ready/config state outside `MapConfig` unless you also define host-authoritative reconciliation.
|
||||
- Do not shrink `MapConfig.MultiCivs` to only real lobby members; it represents every player slot in the match.
|
||||
- Do not derive player position from lobby member order after slots exist; use `MemberCiv.Index`.
|
||||
- Do not start the host game from client-local optimistic ready state.
|
||||
- Do not call `GC.Collect()` in match entry paths as a networking fix.
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "TH1 Network Sync"
|
||||
short_description: "TH1 multiplayer sync and Steam P2P reliability rules"
|
||||
default_prompt: "Use the TH1 Network Sync skill for TH1 multiplayer, P2P, GameNet, save resume, reconnect, or deterministic sync work."
|
||||
short_description: "TH1 multiplayer sync, P2P, and lobby slot rules"
|
||||
default_prompt: "Use the TH1 Network Sync skill for TH1 multiplayer, P2P, GameNet, lobby player slot/team config, save resume, reconnect, or deterministic sync work."
|
||||
|
||||
@ -26,6 +26,8 @@ This reference summarizes the multiplayer contract after the May 2026 pre-releas
|
||||
|
||||
- Sender methods that gate local state must return `bool`.
|
||||
- `GameStart` must validate `MapData` and return broadcast success.
|
||||
- `ChangeCiv` carries full `MemberCiv` room state such as civ, force, and ready state. Client optimistic local application is allowed only after send success and must still be reconciled by host `UpdateLobbyData`.
|
||||
- `RequestLobbyData` should be retried by clients until host config matches current lobby members. Avoid treating a request as synced before the host P2P connection is active and accepted.
|
||||
- `ActionConfirm` must return send success.
|
||||
- `ActionExecute` must return broadcast success.
|
||||
- `ForceUpdate` and full `MapData` sends must validate multiplayer map data before sending.
|
||||
@ -36,6 +38,8 @@ This reference summarizes the multiplayer contract after the May 2026 pre-releas
|
||||
- Wrap deserialization and dispatch in try/catch.
|
||||
- Ignore `P2PMsgType.NetworkStress`; the editor stress tool consumes diagnostics packets through `SimpleP2P.OnMessageReceivedEvent` before gameplay dispatch.
|
||||
- Validate incoming `GameStart` and `ForceUpdate` maps before applying.
|
||||
- Host handles `ChangeCiv` as a full member room-config mutation, including civ, force, and ready state, then broadcasts changed lobby config.
|
||||
- Client `UpdateLobbyData` is authoritative for room config. Mark lobby data synced only when the received `MapConfig.MultiCivs` matches the current lobby member set.
|
||||
- `NetStartGame` and `NetResumeMatch` return `bool`; UI should only close/hide after success.
|
||||
- `ForceUpdate` should restore previous game state if resume fails.
|
||||
- `MapConfirm` must guard null maps, missing actions, and null action payloads.
|
||||
@ -50,6 +54,16 @@ This reference summarizes the multiplayer contract after the May 2026 pre-releas
|
||||
- Host export should contain one report per lobby member when clients are reachable. If a report is late, host may update the same export file after receipt.
|
||||
- Current default test is a one-minute flow: 50 seconds of traffic and up to 10 seconds of report collection.
|
||||
|
||||
## Lobby MapConfig / Ready State
|
||||
|
||||
- Pre-game room settings and member state live in `Main.Instance.MapConfig`.
|
||||
- `MemberCiv` contains `MemberId`, `PlayerId`, `CivId`, `ForceId`, and `IsReady`.
|
||||
- Host is the authority. Clients can optimistically apply their own `MemberCiv` only after `ChangeCiv` send success, but must keep requesting host data until `HasSameLobbyMembers` is true.
|
||||
- Host `UpdateLobbyMember` removes stale members, adds new members, and keeps the owner ready. New guests default to not ready.
|
||||
- UI should call `SetSelfReady` or `ToggleSelfReady`; read readiness through `IsMemberReady` or `MemberCiv.IsReady`.
|
||||
- Changing civ resets that member's `IsReady`; host room setting changes reset guest readiness through `ResetGuestReadyStates`.
|
||||
- `StartGame` and resume must require `AreAllLobbyMembersReady`; owner is treated ready and guests must be ready.
|
||||
|
||||
## MapData And NetData
|
||||
|
||||
- `MapData.DeserializedMissingCriticalData` means the save/network map must not be used.
|
||||
@ -64,6 +78,8 @@ This reference summarizes the multiplayer contract after the May 2026 pre-releas
|
||||
- Host `GameStart` failure must roll back and must not save, refresh turn, or report success.
|
||||
- Custom map load must check `mapRecord == null` before `RegenerateMap`.
|
||||
- `UIOutsideMultiplayView.ShowLoadingAndStartGame` must only invoke `OnStartGame` after the host start/resume method returns `true`.
|
||||
- `UIOutsideMultiplayView.StartGame` must gate host start/resume on lobby readiness.
|
||||
- Lobby UI should mutate member config through `MapConfig` APIs rather than directly editing shared `MemberCiv` instances.
|
||||
- Timer callbacks for start announcements should be cancelled during abort paths.
|
||||
|
||||
## ActionLogic
|
||||
|
||||
100
.codex/skills/th1-server-backend/SKILL.md
Normal file
100
.codex/skills/th1-server-backend/SKILL.md
Normal file
@ -0,0 +1,100 @@
|
||||
---
|
||||
name: th1-server-backend
|
||||
description: TH1 project-specific server/backend guide for Aliyun Function Compute, OSS, Tablestore, Steam AuthTicket pre-verification/cache, STS token issuing, GameUploadFunction, Unity OSS upload clients, player bug reports, collect data downloads, and Tools/OSS pulled data. Use whenever Codex works on TH1 服务端, 阿里云函数计算, OSS/STS 上传失败, Steam 预校验, 表格存储缓存, game-upload-function, collectdata/ossdata/bugreport paths, player bug viewer, cloud save or telemetry upload bugs, server deploy/debug work, or analysis of Tools/OSS/Data files.
|
||||
---
|
||||
|
||||
# TH1 Server Backend
|
||||
|
||||
Use this skill for TH1 server-side upload/auth/data work in `F:\th1new`. Treat `Tools/OSS/game-upload-function/index.js` as the backend source of truth and `MD/GameMDFramework/15-服务端-GameUploadFunction.md` as the current architecture map.
|
||||
|
||||
## First Files To Read
|
||||
|
||||
- `Tools/OSS/game-upload-function/index.js`
|
||||
- `Tools/OSS/game-upload-function/package.json`
|
||||
- `MD/GameMDFramework/15-服务端-GameUploadFunction.md`
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Oss/OssManager.cs`
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Oss/StsTokenService.cs`
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Oss/OssUploadService.cs`
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Oss/PlayerBugReportService.cs` when working on player-submitted bug packages or save archive pairing
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Editor/OssEditorWindow.cs` when working on collect downloads, upload tests, stats, or JSON export
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Editor/PlayerBugReportEditorWindow.cs` when working on the temporary Unity editor bug-report UI
|
||||
- `Tools/PlayerBugViewer/player_bug_viewer.py` when working on developer-side bug report browsing/restoring
|
||||
|
||||
For the detailed service contract, data layout, and triage notes, read `references/server-map.md`.
|
||||
|
||||
## Core Contract
|
||||
|
||||
The backend does not receive game files. It verifies/caches Steam identity, signs a tightly scoped STS/PostObject upload credential, optionally caches that credential in Tablestore, and returns it to Unity. Unity then uploads `.dat` or bug-report `.zip` payloads directly to OSS.
|
||||
|
||||
Keep the flow intact:
|
||||
|
||||
`Unity -> Function Compute HTTP POST -> Steam auth cache or Steam Web API -> Aliyun STS -> Post Policy -> optional Tablestore STS cache -> Unity OSS PostObject`.
|
||||
|
||||
Keep the current single Function Compute service/file unless the user explicitly chooses a larger backend split. The service is logically divided into three paths in one deployment:
|
||||
|
||||
- Steam identity pre-verification: `action=steamauth`, cache key `{steamId}#steamauth`, 10-minute identity cache.
|
||||
- Standard uploads: `type=ossdata` and `type=collectdata`, 3 MB Post Policy limit, 5-minute STS credential cache.
|
||||
- Player bug reports: `type=bugreport`, 10 MB Post Policy limit, unique `.zip` object key, no STS credential cache to avoid overwrites.
|
||||
|
||||
## Safety Rules
|
||||
|
||||
- Never hardcode or commit `ACCESS_KEY_ID`, `ACCESS_KEY_SECRET`, `STEAM_API_KEY`, STS tokens, or RAM credentials.
|
||||
- Mask credentials in logs and reports; show only prefixes/suffixes when needed.
|
||||
- Preserve least privilege: each STS policy must only allow `oss:PutObject` for one exact `objectKey`.
|
||||
- Preserve Post Policy restrictions: exact `$key` match and content length range.
|
||||
- Do not broaden CORS, upload paths, file-size limits, Steam identity cache duration, or token duration unless the user explicitly asks and the security impact is called out.
|
||||
- Prefer changing Unity error classification/retry behavior over weakening backend verification when production logs show intermittent network failures.
|
||||
|
||||
## Investigation Workflow
|
||||
|
||||
1. Classify the symptom.
|
||||
- `403 Steam verification failed`: inspect `STEAM_APP_ID`, ticket source, Steam identity cache behavior, client version, and Steam response text.
|
||||
- `400`: inspect request body fields, JSON size, and whether identity cache missed while `authTicket` was omitted.
|
||||
- `413`: request exceeds `MAX_BODY_SIZE` before the file upload stage.
|
||||
- `500`: inspect missing env vars, STS AssumeRole errors, Tablestore endpoint/instance/table, or uncaught backend exceptions.
|
||||
- OSS PostObject failure after STS success: inspect policy/signature field names, objectKey mismatch, size limit, endpoint/bucket, and token expiry.
|
||||
|
||||
2. Trace both sides of the contract.
|
||||
- Backend request/response shape lives in `index.js`.
|
||||
- Unity request serialization lives in `StsTokenService.cs`.
|
||||
- Unity credential caching, Steam auth warmup, and `ossdata`/`collectdata`/`bugreport` selection live in `OssManager.cs`.
|
||||
- Multipart PostObject field order and field names live in `OssUploadService.cs`.
|
||||
- Player bug zip creation and save archive selection live in `PlayerBugReportService.cs`.
|
||||
|
||||
3. Check path semantics before changing data code.
|
||||
- `ossdata`: `{version}/{steamId}/{timestamp}.dat` or `common/{steamId}/{timestamp}.dat`.
|
||||
- `collectdata`: `collect/{version}/{steamId}/{timestamp}.dat` or `collect/common/{steamId}/{timestamp}.dat`.
|
||||
- `bugreport`: `bugreport/{version}/{steamId}/{timestamp}-{random}.zip` or `bugreport/common/{steamId}/{timestamp}-{random}.zip`.
|
||||
- Local pulled collect files remove the `collect/` prefix and land under `Tools/OSS/Data/{version}/{steamId}/{timestamp}.dat`.
|
||||
- Local pulled player bug reports are managed by `Tools/PlayerBugViewer` under its ignored `Data/` folder.
|
||||
|
||||
4. Treat Tablestore cache as a functional part of behavior.
|
||||
- STS credential cache key is `{steamId}#{type}` in table `Players`, primary key `PlayerId`.
|
||||
- Steam identity cache key is `{steamId}#steamauth` and only proves the player recently passed Steam Web API verification.
|
||||
- STS cache only hits when version matches, issued time is within 5 minutes, and STS has more than 2 minutes remaining.
|
||||
- If changing `type`, `version`, `objectKey`, or expiry logic, update both cache read and cache write paths.
|
||||
- Do not cache `bugreport` STS credentials; each bug report needs a unique object key.
|
||||
|
||||
5. Use production reports carefully.
|
||||
- CrashSight `UnityLogError` upload failures often indicate debug/environment noise rather than blocking crashes.
|
||||
- Correlate frequency, version, exact response body, and whether failure happened during STS request or OSS upload.
|
||||
- For obfuscated Unity stack traces, also use `th1-online-debug`.
|
||||
|
||||
## Common Tasks
|
||||
|
||||
- Backend code changes: edit `Tools/OSS/game-upload-function/index.js`, then run at least `npm install` if dependencies changed and a local smoke server check when env vars are available.
|
||||
- Unity upload/client changes: edit only the relevant `TH1_Logic/Oss` files, then run a Unity compile or targeted editor test when practical.
|
||||
- Player bug report changes: keep Unity-side package shape aligned with `Tools/PlayerBugViewer`; verify `manifest.json`, `description.txt`, and `saves/{single|multi}/...dat` entries.
|
||||
- Developer bug viewer changes: edit `Tools/PlayerBugViewer`; preserve local credential/cache ignores for `config.local.json` and `Data/`.
|
||||
- Collect data download/stat changes: use `OssEditorWindow.cs` and `OssDownloadService.cs`; verify the mapping from `collect/` OSS keys to `Tools/OSS/Data`.
|
||||
- OSS data analysis: use `Tools/OSS/Data` for `.dat` files and `Tools/OSS/Data/JsonExport` for exported JSON; avoid hand-decoding MemoryPack outside Unity unless there is already a project utility for it.
|
||||
|
||||
## Checks Before Finishing
|
||||
|
||||
- Confirm request/response fields still match Unity `StsCredentials`, `SteamAuthWarmupResponse`, and `StsRequest`.
|
||||
- Confirm `ossdata`, `collectdata`, and `bugreport` still work, including cache keys, path prefixes, upload limits, and bugreport cache bypass.
|
||||
- Confirm security limits remain intentional: 1024-byte STS request body, 3 MB standard Post Policy/Unity upload guard, 10 MB bugreport limit.
|
||||
- Run `node -c Tools/OSS/game-upload-function/index.js` after backend edits.
|
||||
- Run `python -m py_compile Tools/PlayerBugViewer/player_bug_viewer.py` after player bug viewer edits.
|
||||
- Confirm no secrets, raw tickets, or full STS credentials were added to files, logs, docs, or reports.
|
||||
- Report which side was changed: Function Compute code, Unity client upload code, editor OSS tooling, local OSS data, or documentation.
|
||||
4
.codex/skills/th1-server-backend/agents/openai.yaml
Normal file
4
.codex/skills/th1-server-backend/agents/openai.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
interface:
|
||||
display_name: "TH1 Server Backend"
|
||||
short_description: "TH1 Aliyun Function Compute, OSS, and Tablestore guide"
|
||||
default_prompt: "Use $th1-server-backend for TH1 server, Aliyun Function Compute, OSS upload, Tablestore cache, or cloud save data work."
|
||||
347
.codex/skills/th1-server-backend/references/server-map.md
Normal file
347
.codex/skills/th1-server-backend/references/server-map.md
Normal file
@ -0,0 +1,347 @@
|
||||
# TH1 Server Backend Map
|
||||
|
||||
## Scope
|
||||
|
||||
This reference covers the TH1 backend upload service and its local data/tooling:
|
||||
|
||||
- Backend: `Tools/OSS/game-upload-function/`
|
||||
- Architecture doc: `MD/GameMDFramework/15-服务端-GameUploadFunction.md`
|
||||
- Unity runtime client: `Unity/Assets/Scripts/TH1_Logic/Oss/`
|
||||
- Unity editor OSS tools: `Unity/Assets/Scripts/TH1_Logic/Editor/OssEditorWindow.cs` and `OssDownloadService.cs`
|
||||
- Pulled OSS collect data: `Tools/OSS/Data/`
|
||||
- Player bug report viewer/restorer: `Tools/PlayerBugViewer/`
|
||||
|
||||
## Function Compute Service
|
||||
|
||||
`Tools/OSS/game-upload-function/index.js` is a Node.js CommonJS HTTP server intended for Aliyun Function Compute.
|
||||
|
||||
Key constants:
|
||||
|
||||
- `PORT = 9000`
|
||||
- `MAX_BODY_SIZE = 1024`
|
||||
- `TOKEN_CACHE_DURATION_MS = 5 * 60 * 1000`
|
||||
- `STEAM_AUTH_CACHE_DURATION_MS = 10 * 60 * 1000`
|
||||
- `MAX_STANDARD_UPLOAD_SIZE = 3 * 1024 * 1024`
|
||||
- `MAX_BUG_REPORT_UPLOAD_SIZE = 10 * 1024 * 1024`
|
||||
- `STS_DURATION_SECONDS = 900`
|
||||
|
||||
Upload types are centralized in `UPLOAD_TYPE_CONFIG`:
|
||||
|
||||
- `ossdata`: cached STS credential, `.dat`, version root prefix, 3 MB limit.
|
||||
- `collectdata`: cached STS credential, `.dat`, `collect/{version}` prefix, 3 MB limit.
|
||||
- `bugreport`: uncached STS credential, `.zip`, `bugreport/{version}` prefix, 10 MB limit.
|
||||
|
||||
Public Unity function URL currently appears in Unity as:
|
||||
|
||||
`https://get-sts-token-qltjykaafr.cn-shanghai.fcapp.run`
|
||||
|
||||
Dependencies:
|
||||
|
||||
- `@alicloud/pop-core`
|
||||
- `tablestore`
|
||||
- Node engine: `>=18.0.0`
|
||||
|
||||
Required environment variables:
|
||||
|
||||
- `ACCESS_KEY_ID`
|
||||
- `ACCESS_KEY_SECRET`
|
||||
- `ROLE_ARN`
|
||||
- `BUCKET_NAME`
|
||||
- `STEAM_API_KEY`
|
||||
- `STEAM_APP_ID`
|
||||
- `OTS_ENDPOINT`
|
||||
- `OTS_INSTANCE`
|
||||
|
||||
Never place those values in repository files.
|
||||
|
||||
## HTTP Contract
|
||||
|
||||
Request:
|
||||
|
||||
```json
|
||||
{
|
||||
"action": "",
|
||||
"steamId": "76561198...",
|
||||
"authTicket": "hex steam ticket",
|
||||
"version": "0.7.0",
|
||||
"type": "ossdata"
|
||||
}
|
||||
```
|
||||
|
||||
Rules:
|
||||
|
||||
- Method must be `POST`; `OPTIONS` is accepted for CORS.
|
||||
- Body must be JSON and no larger than 1024 bytes.
|
||||
- `steamId` is required.
|
||||
- `authTicket` is required when `action=steamauth` is not already covered by a valid Steam identity cache, or when an upload misses the Steam identity cache.
|
||||
- `version` is optional; empty or missing is treated as `null` then path segment `common`.
|
||||
- `action` is optional; exact `steamauth` runs Steam pre-verification only. Other values default to upload flow.
|
||||
- `type` is optional; valid values are `ossdata`, `collectdata`, and `bugreport`. Unknown values default to `ossdata`.
|
||||
|
||||
Successful response maps directly to Unity `StsCredentials`:
|
||||
|
||||
```json
|
||||
{
|
||||
"accessKeyId": "STS...",
|
||||
"accessKeySecret": "...",
|
||||
"securityToken": "...",
|
||||
"endpoint": "oss-cn-shanghai.aliyuncs.com",
|
||||
"bucket": "th1-oss",
|
||||
"objectKey": "0.7.0/76561198.../1776000000000.dat",
|
||||
"policy": "base64",
|
||||
"signature": "base64-hmac-sha1",
|
||||
"expiresIn": 900
|
||||
}
|
||||
```
|
||||
|
||||
Steam pre-verification response:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"cached": false,
|
||||
"steamId": "76561198...",
|
||||
"version": "0.7.0",
|
||||
"expiresIn": 600
|
||||
}
|
||||
```
|
||||
|
||||
Expected status codes:
|
||||
|
||||
- `400`: missing `steamId`, or missing `authTicket` after Steam identity cache miss, malformed/invalid request handling.
|
||||
- `403`: Steam ticket verification failed.
|
||||
- `405`: non-POST request.
|
||||
- `413`: request body exceeds 1024 bytes.
|
||||
- `500`: missing env vars, STS failure, Tablestore/client exception, or uncaught server exception.
|
||||
|
||||
## Runtime Flow
|
||||
|
||||
1. CORS and method checks.
|
||||
2. Required environment variable checks.
|
||||
3. Parse JSON and normalize `version`/`action`.
|
||||
4. If `action=steamauth`, verify via Steam Web API unless Steam identity cache already exists, then write/return Steam identity cache status.
|
||||
5. Upload flow normalizes `type` and checks STS credential cache for cacheable types.
|
||||
6. If STS cache misses, check Steam identity cache first.
|
||||
7. If Steam identity cache misses, call Steam Web API `AuthenticateUserTicket/v1`.
|
||||
8. If Steam identity is valid, call Aliyun STS `AssumeRole`.
|
||||
9. Build exact `objectKey`.
|
||||
10. Generate Post Policy and HMAC-SHA1 signature.
|
||||
11. Save STS credential to Tablestore only for cacheable upload types.
|
||||
12. Return credential response to Unity.
|
||||
|
||||
Steam verification retries 3 times and uses a 15-second HTTPS timeout.
|
||||
|
||||
## OSS Paths
|
||||
|
||||
Backend-generated object keys:
|
||||
|
||||
- `ossdata` with version: `{version}/{steamId}/{timestamp}.dat`
|
||||
- `ossdata` without version: `common/{steamId}/{timestamp}.dat`
|
||||
- `collectdata` with version: `collect/{version}/{steamId}/{timestamp}.dat`
|
||||
- `collectdata` without version: `collect/common/{steamId}/{timestamp}.dat`
|
||||
- `bugreport` with version: `bugreport/{version}/{steamId}/{timestamp}-{random}.zip`
|
||||
- `bugreport` without version: `bugreport/common/{steamId}/{timestamp}-{random}.zip`
|
||||
|
||||
Bug report package shape:
|
||||
|
||||
- `manifest.json`
|
||||
- `description.txt`
|
||||
- `saves/{single|multi}/map_archive_begin[_multi]_{mapId}.dat`
|
||||
- `saves/{single|multi}/map_archive_continue[_multi]_{mapId}.dat` or `map_archive_end[_multi]_{mapId}.dat`
|
||||
|
||||
Local collect download mapping:
|
||||
|
||||
- OSS `collect/0.7.0/{steamId}/{ts}.dat`
|
||||
- Local `Tools/OSS/Data/0.7.0/{steamId}/{ts}.dat`
|
||||
|
||||
JSON export mapping:
|
||||
|
||||
- Source `.dat`: `Tools/OSS/Data/{version}/{steamId}/{ts}.dat`
|
||||
- Export JSON: `Tools/OSS/Data/JsonExport/{version}/{steamId}/{ts}.json`
|
||||
|
||||
Current local data layout has version folders such as `0.6.10` and `0.7.0`, plus `JsonExport`.
|
||||
|
||||
## Tablestore Cache
|
||||
|
||||
Table: `Players`
|
||||
|
||||
STS credential primary key:
|
||||
|
||||
- `PlayerId = {steamId}#{type}`
|
||||
|
||||
Attributes:
|
||||
|
||||
- `accessKeyId`
|
||||
- `accessKeySecret`
|
||||
- `securityToken`
|
||||
- `endpoint`
|
||||
- `bucket`
|
||||
- `objectKey`
|
||||
- `policy`
|
||||
- `signature`
|
||||
- `issuedAt`
|
||||
- `stsExpireAt`
|
||||
- `version`
|
||||
|
||||
Cache hit requires all of:
|
||||
|
||||
- `version` matches after empty values normalize to no-version.
|
||||
- `Date.now() - issuedAt <= 5 minutes`.
|
||||
- `stsExpireAt - Date.now() >= 2 minutes`.
|
||||
|
||||
The cache key includes upload type, so map upload and collect upload tokens do not collide.
|
||||
|
||||
`bugreport` deliberately bypasses the STS credential cache because each report must get a unique object key.
|
||||
|
||||
Steam identity primary key:
|
||||
|
||||
- `PlayerId = {steamId}#steamauth`
|
||||
|
||||
Steam identity attributes:
|
||||
|
||||
- `verifiedAt`
|
||||
- `authExpireAt`
|
||||
- `version`
|
||||
|
||||
Steam identity cache hit requires:
|
||||
|
||||
- `authExpireAt > Date.now()`
|
||||
|
||||
This cache does not authorize a broad write by itself. It only allows subsequent upload credential requests to skip the slow Steam Web API call while still receiving a fresh, exact-key STS/Post Policy.
|
||||
|
||||
## Security Invariants
|
||||
|
||||
Keep these properties unless the user explicitly accepts the risk:
|
||||
|
||||
- Steam ticket must be checked on cache miss.
|
||||
- Steam response `params.steamid` must equal requested `steamId`.
|
||||
- STS role session name should remain short enough for Aliyun constraints.
|
||||
- STS inline policy should allow only `oss:PutObject`.
|
||||
- STS resource should be exactly `acs:oss:*:*:{bucket}/{objectKey}`.
|
||||
- Post Policy should include exact bucket, exact key, and `content-length-range`.
|
||||
- Unity should not upload files larger than its own guard limit unless both client and backend policy are changed together.
|
||||
- Steam identity cache duration should remain short; current value is 10 minutes.
|
||||
- `bugreport` should remain capped at 10 MB and should not reuse cached object keys.
|
||||
|
||||
## Unity Client Contract
|
||||
|
||||
Runtime files:
|
||||
|
||||
- `OssManager.cs`: builds `OssData`/`CollectData`, obtains Steam ticket, caches separate STS credentials for `ossdata` and `collectdata`, and starts async uploads.
|
||||
- `StsTokenService.cs`: sends JSON to Function Compute and parses `StsCredentials` or `SteamAuthWarmupResponse`.
|
||||
- `OssUploadService.cs`: builds multipart PostObject requests to `https://{bucket}.{endpoint}`.
|
||||
- `PlayerBugReportService.cs`: builds player bug report zip packages and selects recent `start + continue/end` save pairs.
|
||||
- `OssData.cs`: MemoryPack payload containing `StartMap`, `Actions`, and `CollectData`.
|
||||
|
||||
Important Unity details:
|
||||
|
||||
- `StsTokenService` always sends the current client version from `ConfigManager.Instance.VersionCfg.CurVersionInfo.Version`.
|
||||
- Request timeout is 30 seconds for STS and 60 seconds for OSS upload.
|
||||
- `Main.Update` calls `OssManager.Instance.UpdateSteamAuthWarmup()` so Steam identity is pre-verified while the player is online.
|
||||
- Runtime standard upload guard rejects payloads larger than 3 MB; bugreport upload guard rejects packages larger than 10 MB.
|
||||
- Multipart fields include `key`, `OSSAccessKeyId`, `policy`, `Signature`, `x-oss-security-token`, then `file` last.
|
||||
- `OssManager.UploadMapData` and `UploadCollectData` skip multiplayer uploads on non-lobby-owner clients.
|
||||
- `OssManager.UploadPlayerBugReportAsync` requests `type=bugreport` and uploads `application/zip`.
|
||||
|
||||
## Player Bug Report Tooling
|
||||
|
||||
Unity temporary submit UI:
|
||||
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Editor/PlayerBugReportEditorWindow.cs`
|
||||
- Menu: `Tools/玩家 Bug 汇报`
|
||||
- Inputs: version, player description, include recent archive, single-player archive, multiplayer archive.
|
||||
- Default archive selection picks the most recent valid session.
|
||||
|
||||
Save session pairing:
|
||||
|
||||
- Start file: `map_archive_begin[_multi]_{mapId}.dat`
|
||||
- Companion file: latest `map_archive_continue[_multi]_{mapId}.dat` or `map_archive_end[_multi]_{mapId}.dat`
|
||||
- Both `.dat` and `.dat.bak` candidates may be scanned, but zip entries preserve the source filename.
|
||||
|
||||
Standalone developer viewer:
|
||||
|
||||
- Folder: `Tools/PlayerBugViewer/`
|
||||
- Entry point: `启动玩家Bug查看器.bat`
|
||||
- Main script: `player_bug_viewer.py`
|
||||
- Local credentials: `config.local.json`, ignored by git.
|
||||
- Download cache: `Data/`, ignored by git.
|
||||
|
||||
Viewer capabilities:
|
||||
|
||||
- Pull `bugreport/` zip objects from OSS using OSS REST V1 HMAC-SHA1 signing.
|
||||
- Filter by version and SteamID.
|
||||
- Preview manifest fields, attached save files, and player description.
|
||||
- Replace local saves by deleting `map_archive_*.dat` / `map_archive_*.dat.bak` in the configured local Config directory, then copying archive files from the selected report.
|
||||
|
||||
## Unity Editor OSS Tooling
|
||||
|
||||
Editor files:
|
||||
|
||||
- `OssEditorWindow.cs`
|
||||
- `OssDownloadService.cs`
|
||||
- `OssStatisticEditorWindow.cs` is deprecated and retained only for Unity `.meta` stability.
|
||||
|
||||
Menu items:
|
||||
|
||||
- `Tools/Oss 编辑器`
|
||||
- `Tools/OSS 导出 JSON (Dashboard)`
|
||||
|
||||
Editor capabilities:
|
||||
|
||||
- Download all OSS objects under `collect/`.
|
||||
- Save credentials to local `EditorPrefs`, not version control.
|
||||
- Skip local files that already exist.
|
||||
- Deserialize collect `.dat` files with MemoryPack for statistics.
|
||||
- Export collect data JSON for the dashboard under `Tools/OSS/Data/JsonExport`.
|
||||
- Test STS request, upload success, wrong object key rejection, and oversized upload rejection.
|
||||
|
||||
`OssDownloadService` uses OSS REST V1 HMAC-SHA1 signing. Its `ListObjectsAsync` handles continuation tokens and `DownloadObjectAsync` encodes each object-key path segment while preserving slashes.
|
||||
|
||||
## Production Triage Notes
|
||||
|
||||
Common CrashSight/UnityLogError examples around this service:
|
||||
|
||||
- `CollectData upload failed: STS request failed: HTTP/1.1 403 Forbidden`
|
||||
- `Steam verification failed: Ticket for other app`
|
||||
- `STS request failed: Request timeout`
|
||||
- `Cannot resolve destination host`
|
||||
- `Unable to complete SSL connection`
|
||||
- `OSS PostObject 上传失败`
|
||||
|
||||
Interpretation:
|
||||
|
||||
- `Ticket for other app`: check `STEAM_APP_ID`, client build, and whether the ticket was generated for the expected app.
|
||||
- `Invalid parameter`: check malformed/empty ticket, request JSON, and body-size truncation.
|
||||
- DNS/SSL/connect/timeout errors: often client network or regional connectivity; do not classify as a server crash without corroborating Function Compute logs.
|
||||
- OSS upload failure after STS success: inspect PostObject field names, exact key match, policy expiry, token expiry, endpoint, bucket, and payload size.
|
||||
- Cache issues: stale version/type/objectKey almost always mean cache normalization changed on only one side of read/write.
|
||||
- Slow upload credential requests after Steam is ready: verify the client is calling `action=steamauth`, Tablestore has `{steamId}#steamauth`, and `authExpireAt` is still in the future.
|
||||
- Player bug report upload overwrites: `bugreport` should bypass STS cache and object keys should include a random suffix.
|
||||
- Player bug viewer restore problems: inspect `manifest.json` archive `zipEntry`/`sourceFileName` fields and the configured local Config path.
|
||||
|
||||
## Deployment And Validation
|
||||
|
||||
Local code checks:
|
||||
|
||||
- In `Tools/OSS/game-upload-function`, run `npm install` only when dependencies are missing or changed.
|
||||
- There is no meaningful `npm test` currently; `package.json` has the default failing test stub.
|
||||
- A local server boot requires all required env vars; without them, HTTP requests should return a controlled `500` listing missing variables.
|
||||
- Backend syntax check: `node -c Tools/OSS/game-upload-function/index.js`.
|
||||
- Player bug viewer syntax check: `python -m py_compile Tools/PlayerBugViewer/player_bug_viewer.py`.
|
||||
|
||||
Smoke checks when credentials are available:
|
||||
|
||||
- POST a valid current Steam ticket and confirm `200` with all `StsCredentials` fields.
|
||||
- Repeat within 5 minutes and confirm a cache hit path in logs.
|
||||
- Test both `type: "ossdata"` and `type: "collectdata"`.
|
||||
- Test `action: "steamauth"` and confirm later uploads can skip realtime Steam API while cache is valid.
|
||||
- Test `type: "bugreport"` and confirm a unique `.zip` key under `bugreport/`.
|
||||
- Attempt wrong objectKey upload with existing credential and confirm OSS rejects it.
|
||||
- Attempt oversized upload and confirm client/backend policy rejects it: 3 MB standard, 10 MB bugreport.
|
||||
|
||||
When cloud deployment is involved:
|
||||
|
||||
- Confirm Function Compute env vars match the intended bucket, role ARN, Steam app ID, Tablestore endpoint, and instance.
|
||||
- Confirm the RAM role trust policy allows Function Compute/STS assume-role usage.
|
||||
- Confirm the role policy permits the generated bucket path and no broader write path than intended.
|
||||
- Confirm Tablestore table `Players` exists with primary key `PlayerId`.
|
||||
@ -0,0 +1,63 @@
|
||||
# CrashSight 阻断报告 - 178c3281892d8c3d352287aa90d95571
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/178c3281892d8c3d352287aa90d95571?pid=10
|
||||
- 异常类型: NullReferenceException
|
||||
- 阻断族: 单位渲染贴图空引用
|
||||
- 发生次数: 553,995
|
||||
- 首次/最近: 2026-05-16 02:05:28 ~ 2026-05-18 16:58:53
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Object reference not set to an instance of an object.
|
||||
|
||||
关键堆栈: gaa.hcf () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 1. 178c3281892d8c3d352287aa90d95571
|
||||
Type: NullReferenceException
|
||||
Count: 553,995
|
||||
FirstSeen: 2026-05-16 02:05:28
|
||||
LastSeen: 2026-05-18 16:58:53
|
||||
Message: Object reference not set to an instance of an object.
|
||||
KeyStack: gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0)
|
||||
RawText: 178c3281892d8c3d352287aa90d95571 NullReferenceException 异常消息Object reference not set to an instance of an object. 关键堆栈gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0) 2026-05-16 02:05:28 ~ 2026-05-18 16:58:53 添加标签 2026-05-18 16:58:53 553,995 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/178c3281892d8c3d352287aa90d95571?pid=10
|
||||
|
||||
{
|
||||
"id [类型: Logic.Action.BuildWonderAction]": "178c3281892d8c3d352287aa90d95571",
|
||||
"url": "https://crashsight.qq.com [字段: Timer/TimerTask.target]/crash-reporting/errors/01076c49ce/178c3281892d8c3d352287aa90d95571?pid=10",
|
||||
"occurrence": "553,995",
|
||||
"devices": "12",
|
||||
"appVersion": "\t",
|
||||
"frames": [
|
||||
"gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0)",
|
||||
"gaa [类型: TH1_Renderer.UnitRenderer].def [方法: TH1_Anim.Fragments.FragmentAttackAndCounter.<.ctor>b__3_4()] (System.Boolean a) (at <00000000000000000000000000000000>.0)",
|
||||
"gcs.des [方法: TH1_Anim.Fragments.FragmentNotMoveKill.<.ctor>b__2_1()] () (at <00000000000000000000000000000000>.0)",
|
||||
"gch.den [方法: TH1_Anim.Fragments.FragmentBase.UpdateSteps(System.Single)] (System.Single a) (at <00000000000000000000000000000000>.0)",
|
||||
"gao.hcs [方法: TH1_Anim.FragmentManager.UpdateFragment(TH1_Anim.Fragments.FragmentBase)] (gch [类型: TH1_Anim.Fragments.FragmentBase] a) (at <00000000000000000000000000000000>.0)",
|
||||
|
||||
...(已截断,原文见 Temp/CrashSight/Daily_2026-05-19)
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:90 - 构造器未校验 Unit/Grid/Player 查找结果
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:594 - 直接刷新单位 sprite
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:435 - 新单位渲染器创建入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 单位动画/击杀/创建后的表现层刷新被打断,列表中这是最高频空引用族。
|
||||
|
||||
原因: 单位视觉刷新进入 `RenderUpdateUnitSprite`,该函数直接访问 `Table.Instance.UnitTypeDataAssets`、`_unitData`、`_unitMono.SpriteRenderer`。构造器里 `GetUnitDataByUnitId/GetGridDataByUnitId` 没有检查返回值,动画或延迟刷新期间数据层与表现层不同步时会空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
在 `UnitRenderer` 构造与 `RenderUpdateUnitSprite` 做缺失数据/组件保护;同时追查为何 `ROUnitMap` 里会创建到数据不完整的单位渲染器。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,41 @@
|
||||
# CrashSight 阻断报告 - 823aba5c5e1bb7ab0b85e440d044b0cd
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/823aba5c5e1bb7ab0b85e440d044b0cd?pid=10
|
||||
- 异常类型: NullReferenceException
|
||||
- 阻断族: Main.Update 单帧空引用(详情无符号)
|
||||
- 发生次数: 373,060
|
||||
- 首次/最近: 2025-08-29 20:55:43 ~ 2026-05-19 09:55:57
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Object reference not set to an instance of an object.
|
||||
|
||||
关键堆栈: TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 823aba5c5e1bb7ab0b85e440d044b0cd
|
||||
NullReferenceException
|
||||
Stack Trace:
|
||||
TH1_Logic.Core.Main.Update()
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Core/Main.cs - 详情页只保留到 Main.Update,未给出下层符号
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 这是实际 NullReferenceException,最近一天在筛选版本内仍有 373,060 次,属于高频阻断;但 CrashSight 详情页没有下层调用帧,无法继续从符号定位到具体业务代码。
|
||||
|
||||
原因: 已按要求进入问题详情查看,详情页仍只显示 TH1_Logic.Core.Main.Update。它可能是 IL2CPP/符号裁剪后折叠到主循环的异常,不能把其他 Issue 的解码摘要误套到这一条上。
|
||||
|
||||
## 建议
|
||||
|
||||
优先在 CrashSight 查看这条 Issue 的“跟踪日志/用户行为/附件下载”;如果平台没有更多帧,需要在 0.7.1k 后续包里增加 Main.Update 外围分段保护日志,把 GameLogic、InputLogic、Renderer、Timer、Steam 更新阶段分别包上上下文标记。
|
||||
|
||||
## 备注
|
||||
|
||||
本条已排除反混淆摘要里的跨 Issue 命中,只采信该 Issue 自己详情页的 Stack Trace。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - c61eb6ca9f2864d186b60fd5017781a3
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c61eb6ca9f2864d186b60fd5017781a3?pid=10
|
||||
- 异常类型: NullReferenceException
|
||||
- 阻断族: 单位渲染贴图空引用
|
||||
- 发生次数: 216,425
|
||||
- 首次/最近: 2026-05-16 11:24:26 ~ 2026-05-18 21:26:09
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Object reference not set to an instance of an object.
|
||||
|
||||
关键堆栈: gaa.hcf () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 3. c61eb6ca9f2864d186b60fd5017781a3
|
||||
Type: NullReferenceException
|
||||
Count: 216,425
|
||||
FirstSeen: 2026-05-16 11:24:26
|
||||
LastSeen: 2026-05-18 21:26:09
|
||||
Message: Object reference not set to an instance of an object.
|
||||
KeyStack: gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0)
|
||||
RawText: c61eb6ca9f2864d186b60fd5017781a3 NullReferenceException 异常消息Object reference not set to an instance of an object. 关键堆栈gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0) 2026-05-16 11:24:26 ~ 2026-05-18 21:26:09 添加标签 2026-05-18 21:26:09 216,425 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/c61eb6ca9f2864d186b60fd5017781a3?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:90 - 构造器未校验 Unit/Grid/Player 查找结果
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:594 - 直接刷新单位 sprite
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:435 - 新单位渲染器创建入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 单位动画/击杀/创建后的表现层刷新被打断,列表中这是最高频空引用族。
|
||||
|
||||
原因: 单位视觉刷新进入 `RenderUpdateUnitSprite`,该函数直接访问 `Table.Instance.UnitTypeDataAssets`、`_unitData`、`_unitMono.SpriteRenderer`。构造器里 `GetUnitDataByUnitId/GetGridDataByUnitId` 没有检查返回值,动画或延迟刷新期间数据层与表现层不同步时会空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
在 `UnitRenderer` 构造与 `RenderUpdateUnitSprite` 做缺失数据/组件保护;同时追查为何 `ROUnitMap` 里会创建到数据不完整的单位渲染器。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 1b2e3b8095c5f768abdda33e2c75e1c6
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1b2e3b8095c5f768abdda33e2c75e1c6?pid=10
|
||||
- 异常类型: KeyNotFoundException
|
||||
- 阻断族: 单位位置读取缺失 Renderer
|
||||
- 发生次数: 207,381
|
||||
- 首次/最近: 2026-05-14 20:15:57 ~ 2026-05-19 11:42:09
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: The given key '370' was not present in the dictionary.
|
||||
|
||||
关键堆栈: ctu.ekk (cfo a) (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 4. 1b2e3b8095c5f768abdda33e2c75e1c6
|
||||
Type: KeyNotFoundException
|
||||
Count: 207,381
|
||||
FirstSeen: 2026-05-14 20:15:57
|
||||
LastSeen: 2026-05-19 11:42:09
|
||||
Message: The given key [方法: TH1_UI.View.Outside.WikiSub.UIOutsideWikiSkillCircleMono.SetContent(SkillType,SkillViewType,RuntimeData.UnitFullType,System.UInt32)] '370' was not present in the dictionary.
|
||||
KeyStack: ctu.ekk [方法: RuntimeData.UnitData.GetPosition(RuntimeData.MapData)] (cfo [类型: RuntimeData.MapData] a) (at <00000000000000000000000000000000>.0)
|
||||
RawText: 1b2e3b8095c5f768abdda33e2c75e1c6 KeyNotFoundException 异常消息The given key [方法: TH1_UI.View.Outside.WikiSub.UIOutsideWikiSkillCircleMono.SetContent(SkillType,SkillViewType,RuntimeData.UnitFullType,System.UInt32)] '370' was not present in the dictionary. 关键堆栈ctu.ekk [方法: RuntimeData.UnitData.GetPosition(RuntimeData.MapData)] (cfo [类型: RuntimeData.MapData] a) (at <00000000000000000000000000000000>.0) 2026-05-14 20:15:57 ~ 2026-05-19 11:42:09 添加标签 2026-05-19 11:42:09 207,381 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/1b2e3b8095c5f768abdda33e2c75e1c6?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:359 - 直接索引 ROUnitMap
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:464 - 已有表现层一致性修复入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 任何需要读取单位屏幕位置的动画、UI、技能预览都可能被 KeyNotFound 打断。
|
||||
|
||||
原因: `UnitData.GetPosition` 在主地图上直接用 `MapRenderer.Instance.ROUnitMap[Id]` 索引。CrashSight 的 key 370/1624 等是单位 id,而不是业务字典 key;说明数据层有单位,但表现层字典没有对应 Renderer。
|
||||
|
||||
## 建议
|
||||
|
||||
把 `ROUnitMap[Id]` 改为 `TryGetValue` 并触发一次 `RepairAllRenderers/RenderUpdateUnitMap`;继续追查漏建或提前删除 Renderer 的动作。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - bd1d7554d2dbdb01cf35a108503bb819
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bd1d7554d2dbdb01cf35a108503bb819?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: Action 执行玩家不一致 (UnitAttack)
|
||||
- 发生次数: 207,040
|
||||
- 首次/最近: 2026-04-11 16:13:37 ~ 2026-05-19 12:20:58
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 5. bd1d7554d2dbdb01cf35a108503bb819
|
||||
Type: UnityLogError
|
||||
Count: 207,040
|
||||
FirstSeen: 2026-04-11 16:13:37
|
||||
LastSeen: 2026-05-19 12:20:58
|
||||
Message: 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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: bd1d7554d2dbdb01cf35a108503bb819 UnityLogError 异常消息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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-11 16:13:37 ~ 2026-05-19 12:20:58 添加标签 2026-05-19 12:20:58 207,040 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/bd1d7554d2dbdb01cf35a108503bb819?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1105 - CompleteExecute 玩家一致性检查
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:240 - AI 最终执行 action
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:142 - 网络 action 执行入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 对应 action 被拦截不执行;如果发生在 AI 或同步链路,会造成卡回合或双方状态分叉。
|
||||
|
||||
原因: `ActionLogicBase.CompleteExecute` 要求 `actionParams.PlayerId` 等于 `MapData.CurPlayer.Id`。这里 action 的归属玩家与当前回合玩家不同,函数直接返回 false。常见来源是 AI/网络/回放参数刷新到错误 MapData,或 UI 缓存了上一回合 action。
|
||||
|
||||
## 建议
|
||||
|
||||
回查该 action 的构参处,确保 `CommonActionParams.MapData`、`PlayerData`、`PlayerId` 在执行前调用 `RefreshParams/OnParamChanged` 并跟随当前回合。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - d2ff2d072f9355c652ca337e98d84814
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d2ff2d072f9355c652ca337e98d84814?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 延迟创建单位后的表现层空引用
|
||||
- 发生次数: 199,100
|
||||
- 首次/最近: 2026-05-16 21:12:55 ~ 2026-05-19 11:42:25
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Timer任务执行异常: 错误信息: REISEN ILLUSION ADDUNITDATA 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at fj.bgi () [0x00000] in <00000000000000000000000000000000>:0 at cfo+lhl.llp () [0x00000] in <00000000000000000000000000000000>:0 at i.oj () [0x00000] in <00000000000000000000000000000000>:0 at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0 目标对象: cfo
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 6. d2ff2d072f9355c652ca337e98d84814
|
||||
Type: UnityLogError
|
||||
Count: 199,100
|
||||
FirstSeen: 2026-05-16 21:12:55
|
||||
LastSeen: 2026-05-19 11:42:25
|
||||
Message: Timer任务执行异常: 错误信息: REISEN ILLUSION ADDUNITDATA 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at fj.bgi [方法: TH1Renderer.MapRenderer.RenderUpdateUnitMap()] () [0x00000] in <00000000000000000000000000000000>:0 at cfo [类型: RuntimeData.MapData]+lhl.llp [方法: RuntimeData.MapData/<>c__DisplayClass81_0.<AddUnitData>b__0()] () [0x00000] in <00000000000000000000000000000000>:0 at i.oj [方法: Timer.Update()] () [0x00000] in <00000000000000000000000000000000>:0 at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0 目标对象: cfo [类型: RuntimeData.MapData]
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: d2ff2d072f9355c652ca337e98d84814 UnityLogError 异常消息Timer任务执行异常: 错误信息: REISEN ILLUSION ADDUNITDATA 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at fj.bgi [方法: TH1Renderer.MapRenderer.RenderUpdateUnitMap()] () [0x00000] in <00000000000000000000000000000000>:0 at cfo [类型: RuntimeData.MapData]+lhl.llp [方法: RuntimeData.MapData/<>c__DisplayClass81_0.<AddUnitData>b__0()] () [0x00000] in <00000000000000000000000000000000>:0 at i.oj [方法: Timer.Update()] () [0x00000] in <00000000000000000000000000000000>:0 at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0 目标对象: cfo [类型: RuntimeData.MapData] 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 21:12:55 ~ 2026-05-19 11:42:25 添加标签 2026-05-19 11:42:25 199,100 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/d2ff2d072f9355c652ca337e98d84814?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - AddUnitData 创建单位
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1132 - 注册延迟表现层回调
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:435 - 补建 UnitRenderer
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 技能/行动创建单位后画面刷新失败,可能连续刷屏并阻断当前帧。
|
||||
|
||||
原因: `MapData.AddUnitData` 注册了名为 `REISEN ILLUSION ADDUNITDATA` 的延迟 Timer,回调里调用 `MapRenderer.Instance.RenderUpdateUnitMap()` 和 `tmpUnit.Renderer(...).InstantUpdateUnit(true)`。如果 Timer 执行时地图或渲染器已切换/销毁,或新增单位缺少对应 Renderer,就会空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
Timer 回调执行前校验 `Main.MapData == this`、`MapRenderer.Instance`、`tmpUnit`、`Renderer`;必要时让表现层延迟任务在退出战局时统一取消。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 901a9e917c5def92455081460f047117
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/901a9e917c5def92455081460f047117?pid=10
|
||||
- 异常类型: MemoryPackSerializationException
|
||||
- 阻断族: MemoryPack Union/协议反序列化失败
|
||||
- 发生次数: 141,700
|
||||
- 首次/最近: 2026-05-15 14:42:03 ~ 2026-05-19 11:04:55
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Data read tag: 84 but not found in dwt MemoryPackUnion annotations.
|
||||
|
||||
关键堆栈: MemoryPack.MemoryPackSerializationException.ThrowInvalidTag (System.UInt16 tag, System.Type baseType) (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 7. 901a9e917c5def92455081460f047117
|
||||
Type: MemoryPackSerializationException
|
||||
Count: 141,700
|
||||
FirstSeen: 2026-05-15 14:42:03
|
||||
LastSeen: 2026-05-19 11:04:55
|
||||
Message: Data read tag: 84 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in dwt [类型: TH1_Logic.Steam.BaseMessage] MemoryPackUnion annotations.
|
||||
KeyStack: MemoryPack.MemoryPackSerializationException.ThrowInvalidTag (System.UInt16 tag, System.Type baseType) (at <00000000000000000000000000000000>.0)
|
||||
RawText: 901a9e917c5def92455081460f047117 MemoryPackSerializationException 异常消息Data read tag: 84 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in dwt [类型: TH1_Logic.Steam.BaseMessage] MemoryPackUnion annotations. 关键堆栈MemoryPack.MemoryPackSerializationException.ThrowInvalidTag (System.UInt16 tag, System.Type baseType) (at <00000000000000000000000000000000>.0) 2026-05-15 14:42:03 ~ 2026-05-19 11:04:55 添加标签 2026-05-19 11:04:55 141,700 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/901a9e917c5def92455081460f047117?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/SteamObjectSerializer.cs:75 - BaseMessage MemoryPackUnion 列表
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:19 - 反序列化 BaseMessage
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1914 - 地图数据反序列化异常捕获
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人消息、ForceUpdate、存档/地图读取无法反序列化,属于硬阻断。
|
||||
|
||||
原因: MemoryPack 读到的 union tag 不在当前类型的 `[MemoryPackUnion]` 注解内。BaseMessage tag 84 明显超出当前 `BaseMessage` 1-17 范围,地图/配置里的 `MomentItemBase`、技能 union 也有类似版本不兼容风险。
|
||||
|
||||
## 建议
|
||||
|
||||
确认线上 0.7.1i/j/k 的 MemoryPackUnion 生成文件一致;新增 union 只能追加不重排;网络消息反序列化失败要丢弃并触发恢复,不应继续应用半包。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - b1d556b794eea8b1010f1054d59219df
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b1d556b794eea8b1010f1054d59219df?pid=10
|
||||
- 异常类型: KeyNotFoundException
|
||||
- 阻断族: 单位位置读取缺失 Renderer
|
||||
- 发生次数: 122,725
|
||||
- 首次/最近: 2026-04-25 14:47:22 ~ 2026-05-19 11:35:07
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: The given key '1624' was not present in the dictionary.
|
||||
|
||||
关键堆栈: ctu.ekk (cfo a) (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 8. b1d556b794eea8b1010f1054d59219df
|
||||
Type: KeyNotFoundException
|
||||
Count: 122,725
|
||||
FirstSeen: 2026-04-25 14:47:22
|
||||
LastSeen: 2026-05-19 11:35:07
|
||||
Message: The given key [方法: TH1_UI.View.Outside.WikiSub.UIOutsideWikiSkillCircleMono.SetContent(SkillType,SkillViewType,RuntimeData.UnitFullType,System.UInt32)] '1624' was not present in the dictionary.
|
||||
KeyStack: ctu.ekk [方法: RuntimeData.UnitData.GetPosition(RuntimeData.MapData)] (cfo [类型: RuntimeData.MapData] a) (at <00000000000000000000000000000000>.0)
|
||||
RawText: b1d556b794eea8b1010f1054d59219df KeyNotFoundException 异常消息The given key [方法: TH1_UI.View.Outside.WikiSub.UIOutsideWikiSkillCircleMono.SetContent(SkillType,SkillViewType,RuntimeData.UnitFullType,System.UInt32)] '1624' was not present in the dictionary. 关键堆栈ctu.ekk [方法: RuntimeData.UnitData.GetPosition(RuntimeData.MapData)] (cfo [类型: RuntimeData.MapData] a) (at <00000000000000000000000000000000>.0) 2026-04-25 14:47:22 ~ 2026-05-19 11:35:07 添加标签 2026-05-19 11:35:07 122,725 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/b1d556b794eea8b1010f1054d59219df?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:359 - 直接索引 ROUnitMap
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:464 - 已有表现层一致性修复入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 任何需要读取单位屏幕位置的动画、UI、技能预览都可能被 KeyNotFound 打断。
|
||||
|
||||
原因: `UnitData.GetPosition` 在主地图上直接用 `MapRenderer.Instance.ROUnitMap[Id]` 索引。CrashSight 的 key 370/1624 等是单位 id,而不是业务字典 key;说明数据层有单位,但表现层字典没有对应 Renderer。
|
||||
|
||||
## 建议
|
||||
|
||||
把 `ROUnitMap[Id]` 改为 `TryGetValue` 并触发一次 `RepairAllRenderers/RenderUpdateUnitMap`;继续追查漏建或提前删除 Renderer 的动作。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,63 @@
|
||||
# CrashSight 阻断报告 - c2f5f11d2a9d50d690f3862019b25715
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c2f5f11d2a9d50d690f3862019b25715?pid=10
|
||||
- 异常类型: NullReferenceException
|
||||
- 阻断族: 单位渲染贴图空引用
|
||||
- 发生次数: 114,856
|
||||
- 首次/最近: 2026-04-22 02:06:45 ~ 2026-05-19 05:45:34
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Object reference not set to an instance of an object.
|
||||
|
||||
关键堆栈: gaa.hcf () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 9. c2f5f11d2a9d50d690f3862019b25715
|
||||
Type: NullReferenceException
|
||||
Count: 114,856
|
||||
FirstSeen: 2026-04-22 02:06:45
|
||||
LastSeen: 2026-05-19 05:45:34
|
||||
Message: Object reference not set to an instance of an object.
|
||||
KeyStack: gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0)
|
||||
RawText: c2f5f11d2a9d50d690f3862019b25715 NullReferenceException 异常消息Object reference not set to an instance of an object. 关键堆栈gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0) 2026-04-22 02:06:45 ~ 2026-05-19 05:45:34 添加标签 2026-05-19 05:45:34 114,856 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/c2f5f11d2a9d50d690f3862019b25715?pid=10
|
||||
|
||||
{
|
||||
"id [类型: Logic.Action.BuildWonderAction]": "c2f5f11d2a9d50d690f3862019b25715",
|
||||
"url": "https://crashsight.qq.com [字段: Timer/TimerTask.target]/crash-reporting/errors/01076c49ce/c2f5f11d2a9d50d690f3862019b25715?pid=10",
|
||||
"occurrence": "127,563",
|
||||
"devices": "16",
|
||||
"appVersion": "\t",
|
||||
"frames": [
|
||||
"gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0)",
|
||||
"gaa.hbu [方法: TH1_Renderer.UnitRenderer.InstantUpdateUnit(System.Boolean)] (System.Boolean a) (at <00000000000000000000000000000000>.0)",
|
||||
"gcs.des [方法: TH1_Anim.Fragments.FragmentNotMoveKill.<.ctor>b__2_1()] () (at <00000000000000000000000000000000>.0)",
|
||||
"gch.den [方法: TH1_Anim.Fragments.FragmentBase.UpdateSteps(System.Single)] (System.Single a) (at <00000000000000000000000000000000>.0)",
|
||||
"gao.hcs [方法: TH1_Anim.FragmentManager.UpdateFragment(TH1_Anim.Fragments.FragmentBase)] (gch [类型: TH1_Anim.Fragments.FragmentBase] a) (at <00000000000000000000000000000000>.0)",
|
||||
"TH1_Logic.Core.Main.Update ()
|
||||
...(已截断,原文见 Temp/CrashSight/Daily_2026-05-19)
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:90 - 构造器未校验 Unit/Grid/Player 查找结果
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:594 - 直接刷新单位 sprite
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:435 - 新单位渲染器创建入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 单位动画/击杀/创建后的表现层刷新被打断,列表中这是最高频空引用族。
|
||||
|
||||
原因: 单位视觉刷新进入 `RenderUpdateUnitSprite`,该函数直接访问 `Table.Instance.UnitTypeDataAssets`、`_unitData`、`_unitMono.SpriteRenderer`。构造器里 `GetUnitDataByUnitId/GetGridDataByUnitId` 没有检查返回值,动画或延迟刷新期间数据层与表现层不同步时会空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
在 `UnitRenderer` 构造与 `RenderUpdateUnitSprite` 做缺失数据/组件保护;同时追查为何 `ROUnitMap` 里会创建到数据不完整的单位渲染器。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 1ba92fdc29a70c669183e2ca448f5556
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1ba92fdc29a70c669183e2ca448f5556?pid=10
|
||||
- 异常类型: NullReferenceException
|
||||
- 阻断族: 单位渲染贴图空引用
|
||||
- 发生次数: 112,762
|
||||
- 首次/最近: 2026-05-16 12:32:34 ~ 2026-05-18 19:07:22
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Object reference not set to an instance of an object.
|
||||
|
||||
关键堆栈: gaa.hcf () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 10. 1ba92fdc29a70c669183e2ca448f5556
|
||||
Type: NullReferenceException
|
||||
Count: 112,762
|
||||
FirstSeen: 2026-05-16 12:32:34
|
||||
LastSeen: 2026-05-18 19:07:22
|
||||
Message: Object reference not set to an instance of an object.
|
||||
KeyStack: gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0)
|
||||
RawText: 1ba92fdc29a70c669183e2ca448f5556 NullReferenceException 异常消息Object reference not set to an instance of an object. 关键堆栈gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0) 2026-05-16 12:32:34 ~ 2026-05-18 19:07:22 添加标签 2026-05-18 19:07:22 112,762 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/1ba92fdc29a70c669183e2ca448f5556?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:90 - 构造器未校验 Unit/Grid/Player 查找结果
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:594 - 直接刷新单位 sprite
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:435 - 新单位渲染器创建入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 单位动画/击杀/创建后的表现层刷新被打断,列表中这是最高频空引用族。
|
||||
|
||||
原因: 单位视觉刷新进入 `RenderUpdateUnitSprite`,该函数直接访问 `Table.Instance.UnitTypeDataAssets`、`_unitData`、`_unitMono.SpriteRenderer`。构造器里 `GetUnitDataByUnitId/GetGridDataByUnitId` 没有检查返回值,动画或延迟刷新期间数据层与表现层不同步时会空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
在 `UnitRenderer` 构造与 `RenderUpdateUnitSprite` 做缺失数据/组件保护;同时追查为何 `ROUnitMap` 里会创建到数据不完整的单位渲染器。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,49 @@
|
||||
# CrashSight 阻断报告 - ce08b596a8c67475bbcb22e6b0e0d955
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ce08b596a8c67475bbcb22e6b0e0d955?pid=10
|
||||
- 异常类型: NullReferenceException
|
||||
- 阻断族: 单位渲染贴图空引用
|
||||
- 发生次数: 90,189
|
||||
- 首次/最近: 2026-04-25 16:30:18 ~ 2026-05-18 15:20:47
|
||||
- 列表版本: 0.7.1b ~ 0.7.1j
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Object reference not set to an instance of an object.
|
||||
|
||||
关键堆栈: gaa.hcf () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 11. ce08b596a8c67475bbcb22e6b0e0d955
|
||||
Type: NullReferenceException
|
||||
Count: 90,189
|
||||
FirstSeen: 2026-04-25 16:30:18
|
||||
LastSeen: 2026-05-18 15:20:47
|
||||
Message: Object reference not set to an instance of an object.
|
||||
KeyStack: gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0)
|
||||
RawText: ce08b596a8c67475bbcb22e6b0e0d955 NullReferenceException 异常消息Object reference not set to an instance of an object. 关键堆栈gaa.hcf [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitSprite()] () (at <00000000000000000000000000000000>.0) 0.7.1b ~ 0.7.1j 2026-04-25 16:30:18 ~ 2026-05-18 15:20:47 添加标签 2026-05-18 15:20:47 90,189 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/ce08b596a8c67475bbcb22e6b0e0d955?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:90 - 构造器未校验 Unit/Grid/Player 查找结果
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:594 - 直接刷新单位 sprite
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:435 - 新单位渲染器创建入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 单位动画/击杀/创建后的表现层刷新被打断,列表中这是最高频空引用族。
|
||||
|
||||
原因: 单位视觉刷新进入 `RenderUpdateUnitSprite`,该函数直接访问 `Table.Instance.UnitTypeDataAssets`、`_unitData`、`_unitMono.SpriteRenderer`。构造器里 `GetUnitDataByUnitId/GetGridDataByUnitId` 没有检查返回值,动画或延迟刷新期间数据层与表现层不同步时会空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
在 `UnitRenderer` 构造与 `RenderUpdateUnitSprite` 做缺失数据/组件保护;同时追查为何 `ROUnitMap` 里会创建到数据不完整的单位渲染器。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,49 @@
|
||||
# CrashSight 阻断报告 - 26ff9aa4b24e5067eee86d2ed3239506
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/26ff9aa4b24e5067eee86d2ed3239506?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 延迟创建单位后的表现层空引用
|
||||
- 发生次数: 52,309
|
||||
- 首次/最近: 2026-04-25 14:47:47 ~ 2026-05-19 03:42:57
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Timer任务执行异常: 错误信息: REISEN ILLUSION ADDUNITDATA 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at fj.bgi () [0x00000] in <00000000000000000000000000000000>:0 at cfo+zr.dbd () [0x00000] in <00000000000000000000000000000000>:0 at i.oj () [0x00000] in <00000000000000000000000000000000>:0 at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0 目标对象: cfo
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 12. 26ff9aa4b24e5067eee86d2ed3239506
|
||||
Type: UnityLogError
|
||||
Count: 52,309
|
||||
FirstSeen: 2026-04-25 14:47:47
|
||||
LastSeen: 2026-05-19 03:42:57
|
||||
Message: Timer任务执行异常: 错误信息: REISEN ILLUSION ADDUNITDATA 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at fj.bgi [方法: TH1Renderer.MapRenderer.RenderUpdateUnitMap()] () [0x00000] in <00000000000000000000000000000000>:0 at cfo [类型: RuntimeData.MapData]+zr [类型: RuntimeData.MapData/<>c__DisplayClass116_0].dbd [方法: RuntimeData.MapData.GetMapArchiveKind(System.Boolean,System.Boolean)] () [0x00000] in <00000000000000000000000000000000>:0 at i.oj [方法: Timer.Update()] () [0x00000] in <00000000000000000000000000000000>:0 at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0 目标对象: cfo [类型: RuntimeData.MapData]
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 26ff9aa4b24e5067eee86d2ed3239506 UnityLogError 异常消息Timer任务执行异常: 错误信息: REISEN ILLUSION ADDUNITDATA 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at fj.bgi [方法: TH1Renderer.MapRenderer.RenderUpdateUnitMap()] () [0x00000] in <00000000000000000000000000000000>:0 at cfo [类型: RuntimeData.MapData]+zr [类型: RuntimeData.MapData/<>c__DisplayClass116_0].dbd [方法: RuntimeData.MapData.GetMapArchiveKind(System.Boolean,System.Boolean)] () [0x00000] in <00000000000000000000000000000000>:0 at i.oj [方法: Timer.Update()] () [0x00000] in <00000000000000000000000000000000>:0 at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0 目标对象: cfo [类型: RuntimeData.MapData] 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-25 14:47:47 ~ 2026-05-19 03:42:57 添加标签 2026-05-19 03:42:57 52,309 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/26ff9aa4b24e5067eee8
|
||||
...(已截断,原文见 Temp/CrashSight/Daily_2026-05-19)
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - AddUnitData 创建单位
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1132 - 注册延迟表现层回调
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/MapRenderer.cs:435 - 补建 UnitRenderer
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 技能/行动创建单位后画面刷新失败,可能连续刷屏并阻断当前帧。
|
||||
|
||||
原因: `MapData.AddUnitData` 注册了名为 `REISEN ILLUSION ADDUNITDATA` 的延迟 Timer,回调里调用 `MapRenderer.Instance.RenderUpdateUnitMap()` 和 `tmpUnit.Renderer(...).InstantUpdateUnit(true)`。如果 Timer 执行时地图或渲染器已切换/销毁,或新增单位缺少对应 Renderer,就会空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
Timer 回调执行前校验 `Main.MapData == this`、`MapRenderer.Instance`、`tmpUnit`、`Renderer`;必要时让表现层延迟任务在退出战局时统一取消。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 796f09335d7497bcfae707506d8a862c
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/796f09335d7497bcfae707506d8a862c?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 21,998
|
||||
- 首次/最近: 2025-10-26 19:35:16 ~ 2026-05-19 12:19:47
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 死循环了
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 13. 796f09335d7497bcfae707506d8a862c
|
||||
Type: UnityLogError
|
||||
Count: 21,998
|
||||
FirstSeen: 2025-10-26 19:35:16
|
||||
LastSeen: 2026-05-19 12:19:47
|
||||
Message: 死循环了
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 796f09335d7497bcfae707506d8a862c UnityLogError 异常消息死循环了 关键堆栈UnityEngine.Debug.LogError(Object) 2025-10-26 19:35:16 ~ 2026-05-19 12:19:47 添加标签 2026-05-19 12:19:47 21,998 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/796f09335d7497bcfae707506d8a862c?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,46 @@
|
||||
# CrashSight 阻断报告 - 65db1d60ea0aaf171cc5d70c01c39643
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/65db1d60ea0aaf171cc5d70c01c39643?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 地图信息快捷键在无地图状态触发
|
||||
- 发生次数: 9,980
|
||||
- 首次/最近: 2026-01-17 01:23:30 ~ 2026-05-19 12:15:57
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: OnGridInfoAction Error: Main.MapData is null
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 14. 65db1d60ea0aaf171cc5d70c01c39643
|
||||
Type: UnityLogError
|
||||
Count: 9,980
|
||||
FirstSeen: 2026-01-17 01:23:30
|
||||
LastSeen: 2026-05-19 12:15:57
|
||||
Message: OnGridInfoAction Error: Main.MapData is null
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 65db1d60ea0aaf171cc5d70c01c39643 UnityLogError 异常消息OnGridInfoAction Error: Main.MapData is null 关键堆栈UnityEngine.Debug.LogError(Object) 2026-01-17 01:23:30 ~ 2026-05-19 12:15:57 添加标签 2026-05-19 12:15:57 9,980 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/65db1d60ea0aaf171cc5d70c01c39643?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Input/InputLogic.cs:376 - GridInfo 快捷键入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 快捷键无效,一般不崩溃,但在状态切换窗口反复触发会刷错误。
|
||||
|
||||
原因: `InputLogic.OnGridInfoAction` 运行时 `Main.MapData` 或 UI 管理器为空,说明输入逻辑仍在菜单/切图/退出战局阶段响应快捷键。
|
||||
|
||||
## 建议
|
||||
|
||||
在输入系统上层按 GameState 屏蔽战局快捷键;日志级别可降为 warning 或加节流。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,53 @@
|
||||
# CrashSight 阻断报告 - 2a53ae4aba8e11782514659306895672
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2a53ae4aba8e11782514659306895672?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 5,904
|
||||
- 首次/最近: 2026-01-16 18:48:08 ~ 2026-05-19 02:22:03
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: -
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 2a53ae4aba8e11782514659306895672
|
||||
异常名: UnityLogError
|
||||
首次上报异常消息: -
|
||||
累计发生次数: 48,921
|
||||
筛选版本内可见: 0.7.1i 5,904
|
||||
Stack Trace:
|
||||
UnityEngine.Debug.LogError(Object)
|
||||
cfo.iqk [方法: RuntimeData.MapData.FindDifferences(RuntimeData.MapData)](cfo [类型: RuntimeData.MapData])
|
||||
cxb.ggu [方法: TH1_Logic.Steam.GameNetReceiver.OnReceivedForceUpdate(TH1_Logic.Steam.ForceUpdateMessage)](eor [类型: TH1_Logic.Steam.ForceUpdateMessage])
|
||||
cxb.ggn [方法: TH1_Logic.Steam.GameNetReceiver.OnMessageReceived(System.Byte[])](Byte[])
|
||||
bae.frx [方法: TH1_Logic.Steam.SimpleP2P.PollMessagesForConnection(Steamworks.CSteamID,Steamworks.HSteamNetConnection)](CSteamID, HSteamNetConnection)
|
||||
bae.frw [方法: TH1_Logic.Steam.SimpleP2P.PollMessages()]()
|
||||
bag.fud [方法: TH1_Logic.Steam.SteamLobbyManager.Update()]()
|
||||
TH1_Logic.Core.Main.Update()
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - a44713ba0089d278a3f635e22310a7d5
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a44713ba0089d278a3f635e22310a7d5?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 5,074
|
||||
- 首次/最近: 2026-05-16 20:46:50 ~ 2026-05-19 11:31:24
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 15. a44713ba0089d278a3f635e22310a7d5
|
||||
Type: UnityLogError
|
||||
Count: 5,074
|
||||
FirstSeen: 2026-05-16 20:46:50
|
||||
LastSeen: 2026-05-19 11:31:24
|
||||
Message: 房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: a44713ba0089d278a3f635e22310a7d5 UnityLogError 异常消息房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData) 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:46:50 ~ 2026-05-19 11:31:24 添加标签 2026-05-19 11:31:24 5,074 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/a44713ba0089d278a3f635e22310a7d5?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 56b4d17c02d358a02bb15f3df10f0465
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/56b4d17c02d358a02bb15f3df10f0465?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 4,662
|
||||
- 首次/最近: 2025-10-26 19:46:58 ~ 2026-05-19 12:18:45
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 死循环了,最终记录点为:194
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 16. 56b4d17c02d358a02bb15f3df10f0465
|
||||
Type: UnityLogError
|
||||
Count: 4,662
|
||||
FirstSeen: 2025-10-26 19:46:58
|
||||
LastSeen: 2026-05-19 12:18:45
|
||||
Message: 死循环了,最终记录点为:194
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 56b4d17c02d358a02bb15f3df10f0465 UnityLogError 异常消息死循环了,最终记录点为:194 关键堆栈UnityEngine.Debug.LogError(Object) 2025-10-26 19:46:58 ~ 2026-05-19 12:18:45 添加标签 2026-05-19 12:18:45 4,662 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/56b4d17c02d358a02bb15f3df10f0465?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,73 @@
|
||||
# CrashSight 阻断报告 - 1afa8d1474aa94fd1fd6344f8fab3984
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1afa8d1474aa94fd1fd6344f8fab3984?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 4,111
|
||||
- 首次/最近: 2026-05-16 20:54:35 ~ 2026-05-18 22:42:56
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: -
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 1afa8d1474aa94fd1fd6344f8fab3984
|
||||
异常名: UnityLogError
|
||||
首次上报异常消息: -
|
||||
累计发生次数: 4,111
|
||||
版本: 0.7.1j 4,111
|
||||
Stack Trace:
|
||||
UnityEngine.Debug.LogError(Object)
|
||||
cfo.iqk [方法: RuntimeData.MapData.FindDifferences(RuntimeData.MapData)](cfo [类型: RuntimeData.MapData])
|
||||
cxb.ggu [方法: TH1_Logic.Steam.GameNetReceiver.OnReceivedForceUpdate(TH1_Logic.Steam.ForceUpdateMessage)](eor [类型: TH1_Logic.Steam.ForceUpdateMessage])
|
||||
cxb.ggn [方法: TH1_Logic.Steam.GameNetReceiver.OnMessageReceived(System.Byte[])](Byte[])
|
||||
bae.lim [方法: TH1_Logic.Steam.SimpleP2P.TryHandleOrderedMessage(Steamworks.CSteamID,System.Byte[])](CSteamID, Byte[])
|
||||
bae [类型: TH1_Logic.Steam.SimpleP2P].kci [字段: TH1_Logic.Steam.SteamLobbyManager.SteamSessionCheckInterval](CSteamID, Byte[])
|
||||
bae.frx [方法: TH1_Logic.Steam.SimpleP2P.PollMessagesForConnection(Steamworks.CSteamID,Steamworks.HSteamNetConnection)](CSteamID, HSteamNetConnection)
|
||||
bae.frw [方法: TH1_Logic.Steam.SimpleP2P.PollMessages()]()
|
||||
bag.fud [方法: TH1_Logic.Steam.SteamLobbyManager.Update()]()
|
||||
TH1_Logic.Core.Main.Update()
|
||||
|
||||
|
||||
---- OPS 反混淆摘要 ----
|
||||
映射: F:\th1new\Tools\OPSFile.txt
|
||||
版本: 4.0
|
||||
命中: 29, 唯一名称: 12
|
||||
|
||||
bae x1 -> 类型: TH1_Logic.Steam.SimpleP2P
|
||||
bae.frw x3 -> 方法: TH1_Logic.Steam.SimpleP2P.PollMessages()
|
||||
bae.frx x3 -> 方法: TH1_Logic.Steam.SimpleP2P.PollMessagesForConnection(Steamworks.CSteamID,Steamworks.HSteamNetConnection)
|
||||
bae.lik x1 -> 方法: TH1_Logic.Steam.SimpleP2P.HandleReceivedConnectionPayload(Steamworks.CSteamID,System.Byte[])
|
||||
bae.lim x2 -> 方法: TH1_Logic.Steam.SimpleP2P.TryHandleOrderedMessage(Steamworks.CSteamID,System.Byte[])
|
||||
bag.fud x3 -> 方法: TH1_Logic.Steam.SteamLobbyManager.Update()
|
||||
cfo x3 -> 类型: RuntimeData.MapData
|
||||
cfo.iqk x3 -> 方法: RuntimeData.MapData.FindDifferences(RuntimeData.MapData)
|
||||
cxb.ggn x3 -> 方法: TH1_Logic.Steam.GameNetReceiver.OnMessageReceived(System.Byte[])
|
||||
cxb.ggu x3 -
|
||||
...(已截断,原文见 Temp/CrashSight/Daily_2026-05-19)
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,62 @@
|
||||
# CrashSight 阻断报告 - f265b22ed588ade410a2ac21b26cc9d3
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f265b22ed588ade410a2ac21b26cc9d3?pid=10
|
||||
- 异常类型: NullReferenceException
|
||||
- 阻断族: 单位防御 UI 空引用
|
||||
- 发生次数: 3,752
|
||||
- 首次/最近: 2026-05-16 02:06:13 ~ 2026-05-18 16:58:55
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Object reference not set to an instance of an object.
|
||||
|
||||
关键堆栈: sy.dsx (System.Single a) (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 17. f265b22ed588ade410a2ac21b26cc9d3
|
||||
Type: NullReferenceException
|
||||
Count: 3,752
|
||||
FirstSeen: 2026-05-16 02:06:13
|
||||
LastSeen: 2026-05-18 16:58:55
|
||||
Message: Object reference not set to an instance of an object.
|
||||
KeyStack: sy.dsx [方法: UnitMono.UpdateUnitDefense(System.Single)] (System.Single a) (at <00000000000000000000000000000000>.0)
|
||||
RawText: f265b22ed588ade410a2ac21b26cc9d3 NullReferenceException 异常消息Object reference not set to an instance of an object. 关键堆栈sy.dsx [方法: UnitMono.UpdateUnitDefense(System.Single)] (System.Single a) (at <00000000000000000000000000000000>.0) 2026-05-16 02:06:13 ~ 2026-05-18 16:58:55 添加标签 2026-05-18 16:58:55 3,752 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/f265b22ed588ade410a2ac21b26cc9d3?pid=10
|
||||
|
||||
{
|
||||
"id [类型: Logic.Action.BuildWonderAction]": "f265b22ed588ade410a2ac21b26cc9d3",
|
||||
"url": "https://crashsight.qq.com [字段: Timer/TimerTask.target]/crash-reporting/errors/01076c49ce/f265b22ed588ade410a2ac21b26cc9d3?pid=10",
|
||||
"occurrence": "3,752",
|
||||
"devices": "6",
|
||||
"appVersion": "\t",
|
||||
"frames": [
|
||||
"sy.dsx [方法: UnitMono.UpdateUnitDefense(System.Single)] (System.Single a) (at <00000000000000000000000000000000>.0)",
|
||||
"gaa.hci [方法: TH1_Renderer.UnitRenderer.RenderUpdateUnitDefense()] () (at <00000000000000000000000000000000>.0)",
|
||||
"gaa [类型: TH1_Renderer.UnitRenderer].def [方法: TH1_Anim.Fragments.FragmentAttackAndCounter.<.ctor>b__3_4()] (System.Boolean a) (at <00000000000000000000000000000000>.0)",
|
||||
"gcs.des [方法: TH1_Anim.Fragments.FragmentNotMoveKill.<.ctor>b__2_1()] () (at <00000000000000000000000000000000>.0)",
|
||||
"gch.den [方法: TH1_Anim.Fragments.FragmentBase.UpdateSteps(System.Single)] (System.Single a) (at <00000000000000000000000000000000>.0)",
|
||||
"gao.hcs [方法: TH1_Anim.FragmentManager.UpdateFragment
|
||||
...(已截断,原文见 Temp/CrashSight/Daily_2026-05-19)
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/Prefab/UnitMono.cs:63 - 防御图标显示切换
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Renderer/UnitRenderer.cs:241 - 调用防御 UI 刷新
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 单位信息条/防御图标刷新失败,通常跟单位动画刷新同一批发生。
|
||||
|
||||
原因: `RenderUpdateUnitDefense` 已校验 `_unitData`,但进入 `UnitMono.UpdateUnitDefense` 后直接访问 `Defense/SuperDefense/InfoGroup`。Prefab 子节点或绑定缺失时会在表现层空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
检查 Unit prefab 上 `Defense`、`SuperDefense`、`InfoGroup` 绑定;`UpdateUnitDefense` 内增加组件空值保护并输出 prefab 名。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 7e59d31c5414f422be1971de4fc715d6
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7e59d31c5414f422be1971de4fc715d6?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 3,217
|
||||
- 首次/最近: 2026-05-16 20:47:26 ~ 2026-05-19 10:36:05
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: OK
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 18. 7e59d31c5414f422be1971de4fc715d6
|
||||
Type: UnityLogError
|
||||
Count: 3,217
|
||||
FirstSeen: 2026-05-16 20:47:26
|
||||
LastSeen: 2026-05-19 10:36:05
|
||||
Message: 触发断线重连, 触发原因: OK
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 7e59d31c5414f422be1971de4fc715d6 UnityLogError 异常消息触发断线重连, 触发原因: OK 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:47:26 ~ 2026-05-19 10:36:05 添加标签 2026-05-19 10:36:05 3,217 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/7e59d31c5414f422be1971de4fc715d6?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - a53c6aa4008c4dbb39621d715d9c01bf
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a53c6aa4008c4dbb39621d715d9c01bf?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 2,791
|
||||
- 首次/最近: 2025-11-05 20:28:19 ~ 2026-05-19 03:08:39
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: OK
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 19. a53c6aa4008c4dbb39621d715d9c01bf
|
||||
Type: UnityLogError
|
||||
Count: 2,791
|
||||
FirstSeen: 2025-11-05 20:28:19
|
||||
LastSeen: 2026-05-19 03:08:39
|
||||
Message: 触发断线重连, 触发原因: OK
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: a53c6aa4008c4dbb39621d715d9c01bf UnityLogError 异常消息触发断线重连, 触发原因: OK 关键堆栈UnityEngine.Debug.LogError(Object) 2025-11-05 20:28:19 ~ 2026-05-19 03:08:39 添加标签 2026-05-19 03:08:39 2,791 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/a53c6aa4008c4dbb39621d715d9c01bf?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - bf4d54516467bead4770c2b54ae9c533
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bf4d54516467bead4770c2b54ae9c533?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 2,680
|
||||
- 首次/最近: 2025-11-07 23:07:12 ~ 2026-05-19 03:31:46
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: Error
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 20. bf4d54516467bead4770c2b54ae9c533
|
||||
Type: UnityLogError
|
||||
Count: 2,680
|
||||
FirstSeen: 2025-11-07 23:07:12
|
||||
LastSeen: 2026-05-19 03:31:46
|
||||
Message: 触发断线重连, 触发原因: Error
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: bf4d54516467bead4770c2b54ae9c533 UnityLogError 异常消息触发断线重连, 触发原因: Error 关键堆栈UnityEngine.Debug.LogError(Object) 2025-11-07 23:07:12 ~ 2026-05-19 03:31:46 添加标签 2026-05-19 03:31:46 2,680 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/bf4d54516467bead4770c2b54ae9c533?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 5dc8189b572a6ab227b66fb2e8c007af
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5dc8189b572a6ab227b66fb2e8c007af?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 城市连接经验 Fragment 表现缺失
|
||||
- 发生次数: 2,671
|
||||
- 首次/最近: 2025-11-05 01:30:57 ~ 2026-05-19 12:19:22
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Wrong With FragmentCityConnectExpUp lv=2,exp=1
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 21. 5dc8189b572a6ab227b66fb2e8c007af
|
||||
Type: UnityLogError
|
||||
Count: 2,671
|
||||
FirstSeen: 2025-11-05 01:30:57
|
||||
LastSeen: 2026-05-19 12:19:22
|
||||
Message: Wrong With FragmentCityConnectExpUp lv=2,exp [方法: TH1_UI.View.Outside.UIOutsideWikiView.RebuildLayout(UnityEngine.RectTransform)]=1
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 5dc8189b572a6ab227b66fb2e8c007af UnityLogError 异常消息Wrong With FragmentCityConnectExpUp lv=2,exp [方法: TH1_UI.View.Outside.UIOutsideWikiView.RebuildLayout(UnityEngine.RectTransform)]=1 关键堆栈UnityEngine.Debug.LogError(Object) 2025-11-05 01:30:57 ~ 2026-05-19 12:19:22 添加标签 2026-05-19 12:19:22 2,671 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/5dc8189b572a6ab227b66fb2e8c007af?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Anim/Fragments/FragmentCityConnenctExpUp.cs:69
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Anim/Fragments/FragmentData.cs:226
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 阻断相关。该问题会影响当前表现队列、玩家操作、回合推进或多人同步,即使部分日志来自 try/catch,也不能只按 debug 统计处理。
|
||||
|
||||
原因: FragmentCityConnectExpUp.OnUpdate 收到的 GridRenderer 或 CityInfoRenderer 为 null,代码只记录错误并提前结束表现片段。CrashSight 中固定 lv=2, exp=1,说明城市连接经验变动已经进入动画队列,但表现层对象在播放时不存在或已经被重建。因为表现片段会丢掉本次城市连接经验反馈,且可能与后续地图表现顺序错开,按阻断风险处理。
|
||||
|
||||
## 建议
|
||||
|
||||
生成 FragmentCityConnectExpUpData 前校验 gridRenderer/cityInfoRenderer,若城市信息 UI 可能重建,改为在 OnUpdate 时按 grid/city id 重新取 renderer;同时补一条包含 gridId/cityId/actionId 的日志,确认是对象生命周期问题还是数据来源传空。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 2226253bd624e6321b7938a4bcffa3f3
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2226253bd624e6321b7938a4bcffa3f3?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 2,538
|
||||
- 首次/最近: 2026-05-14 18:03:34 ~ 2026-05-19 12:17: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 : KanakoChivalry PlayerAction : None AIParam : AllClear Tech : KanakoChivalry CultureCardType : None 重复次数 :7
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 22. 2226253bd624e6321b7938a4bcffa3f3
|
||||
Type: UnityLogError
|
||||
Count: 2,538
|
||||
FirstSeen: 2026-05-14 18:03:34
|
||||
LastSeen: 2026-05-19 12:17:19
|
||||
Message: 存在相似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 : KanakoChivalry PlayerAction : None AIParam : AllClear Tech : KanakoChivalry CultureCardType : None 重复次数 :7
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 2226253bd624e6321b7938a4bcffa3f3 UnityLogError 异常消息存在相似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 : KanakoChivalry PlayerAction : None AIParam : AllClear Tech : KanakoChivalry CultureCardType : None 重复次数 :7 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-14 18:03:34 ~ 2026-05-19 12:17:19 添加标签 2026-05-19 12:17:19 2,538 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/2226253bd624e6321b7938a4bcffa3f3?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 1403fc161994baeb41148d55f62dfa95
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1403fc161994baeb41148d55f62dfa95?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 2,308
|
||||
- 首次/最近: 2026-05-17 06:57:10 ~ 2026-05-19 11:14:55
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Map不一致前后Action : 前: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 后: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 23. 1403fc161994baeb41148d55f62dfa95
|
||||
Type: UnityLogError
|
||||
Count: 2,308
|
||||
FirstSeen: 2026-05-17 06:57:10
|
||||
LastSeen: 2026-05-19 11:14:55
|
||||
Message: Map不一致前后Action : 前: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 后: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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 1403fc161994baeb41148d55f62dfa95 UnityLogError 异常消息Map不一致前后Action : 前: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 后: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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-17 06:57:10 ~ 2026-05-19 11:14:55 添加标签 2026-05-19 11:14:55 2,308 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/1403fc161994baeb41148d55f62dfa95?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - b866469ab3463180e9955c2314cb33b3
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b866469ab3463180e9955c2314cb33b3?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 2,238
|
||||
- 首次/最近: 2026-05-14 17:40:46 ~ 2026-05-19 12:01:28
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 24. b866469ab3463180e9955c2314cb33b3
|
||||
Type: UnityLogError
|
||||
Count: 2,238
|
||||
FirstSeen: 2026-05-14 17:40:46
|
||||
LastSeen: 2026-05-19 12:01:28
|
||||
Message: 房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: b866469ab3463180e9955c2314cb33b3 UnityLogError 异常消息房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData) 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-14 17:40:46 ~ 2026-05-19 12:01:28 添加标签 2026-05-19 12:01:28 2,238 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/b866469ab3463180e9955c2314cb33b3?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - c2df25d13582087196e86ff1d25e7b08
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c2df25d13582087196e86ff1d25e7b08?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 2,147
|
||||
- 首次/最近: 2026-05-14 19:33:36 ~ 2026-05-19 12:14: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 : KomeijiIndianRiding PlayerAction : None AIParam : AllClear Tech : KomeijiIndianRiding CultureCardType : None 重复次数 :7
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 25. c2df25d13582087196e86ff1d25e7b08
|
||||
Type: UnityLogError
|
||||
Count: 2,147
|
||||
FirstSeen: 2026-05-14 19:33:36
|
||||
LastSeen: 2026-05-19 12:14:24
|
||||
Message: 存在相似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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: c2df25d13582087196e86ff1d25e7b08 UnityLogError 异常消息存在相似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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-14 19:33:36 ~ 2026-05-19 12:14:24 添加标签 2026-05-19 12:14:24 2,147 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/c2df25d13582087196e86ff1d25e7b08?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - b3cf21bf8d503dd4ea6e3b6ae2730db6
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b3cf21bf8d503dd4ea6e3b6ae2730db6?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 2,081
|
||||
- 首次/最近: 2026-05-12 10:08:15 ~ 2026-05-19 12:11:54
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 重复次数 :6
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 26. b3cf21bf8d503dd4ea6e3b6ae2730db6
|
||||
Type: UnityLogError
|
||||
Count: 2,081
|
||||
FirstSeen: 2026-05-12 10:08:15
|
||||
LastSeen: 2026-05-19 12:11:54
|
||||
Message: 存在相似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 重复次数 :6
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: b3cf21bf8d503dd4ea6e3b6ae2730db6 UnityLogError 异常消息存在相似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 重复次数 :6 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-12 10:08:15 ~ 2026-05-19 12:11:54 添加标签 2026-05-19 12:11:54 2,081 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/b3cf21bf8d503dd4ea6e3b6ae2730db6?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 756186c6c4f65db55d23c6806b53f016
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/756186c6c4f65db55d23c6806b53f016?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: MemoryPack Union/协议反序列化失败
|
||||
- 发生次数: 1,880
|
||||
- 首次/最近: 2026-05-16 20:38:46 ~ 2026-05-19 11:24:28
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations.
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 27. 756186c6c4f65db55d23c6806b53f016
|
||||
Type: UnityLogError
|
||||
Count: 1,880
|
||||
FirstSeen: 2026-05-16 20:38:46
|
||||
LastSeen: 2026-05-19 11:24:28
|
||||
Message: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in bid [类型: TH1_Logic.MatchConfig.MomentItemBase] MemoryPackUnion annotations.
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 756186c6c4f65db55d23c6806b53f016 UnityLogError 异常消息地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in bid [类型: TH1_Logic.MatchConfig.MomentItemBase] MemoryPackUnion annotations. 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:38:46 ~ 2026-05-19 11:24:28 添加标签 2026-05-19 11:24:28 1,880 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/756186c6c4f65db55d23c6806b53f016?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/SteamObjectSerializer.cs:75 - BaseMessage MemoryPackUnion 列表
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:19 - 反序列化 BaseMessage
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1914 - 地图数据反序列化异常捕获
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人消息、ForceUpdate、存档/地图读取无法反序列化,属于硬阻断。
|
||||
|
||||
原因: MemoryPack 读到的 union tag 不在当前类型的 `[MemoryPackUnion]` 注解内。BaseMessage tag 84 明显超出当前 `BaseMessage` 1-17 范围,地图/配置里的 `MomentItemBase`、技能 union 也有类似版本不兼容风险。
|
||||
|
||||
## 建议
|
||||
|
||||
确认线上 0.7.1i/j/k 的 MemoryPackUnion 生成文件一致;新增 union 只能追加不重排;网络消息反序列化失败要丢弃并触发恢复,不应继续应用半包。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 55b6169de3eeca6c2f01327c483d9ab0
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/55b6169de3eeca6c2f01327c483d9ab0?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 1,859
|
||||
- 首次/最近: 2026-05-16 22:03:12 ~ 2026-05-19 12:13:51
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: Error
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 28. 55b6169de3eeca6c2f01327c483d9ab0
|
||||
Type: UnityLogError
|
||||
Count: 1,859
|
||||
FirstSeen: 2026-05-16 22:03:12
|
||||
LastSeen: 2026-05-19 12:13:51
|
||||
Message: 触发断线重连, 触发原因: Error
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 55b6169de3eeca6c2f01327c483d9ab0 UnityLogError 异常消息触发断线重连, 触发原因: Error 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 22:03:12 ~ 2026-05-19 12:13:51 添加标签 2026-05-19 12:13:51 1,859 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/55b6169de3eeca6c2f01327c483d9ab0?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 22daa8e859b38818eb1ff2e620fbca73
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/22daa8e859b38818eb1ff2e620fbca73?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 城市经验 Fragment 表现缺失
|
||||
- 发生次数: 1,721
|
||||
- 首次/最近: 2025-11-13 07:24:14 ~ 2026-05-19 12:19:22
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Wrong With FragmentCityExpUp lv=2,exp=1
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 29. 22daa8e859b38818eb1ff2e620fbca73
|
||||
Type: UnityLogError
|
||||
Count: 1,721
|
||||
FirstSeen: 2025-11-13 07:24:14
|
||||
LastSeen: 2026-05-19 12:19:22
|
||||
Message: Wrong With FragmentCityExpUp lv=2,exp [方法: TH1_UI.View.Outside.UIOutsideWikiView.RebuildLayout(UnityEngine.RectTransform)]=1
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 22daa8e859b38818eb1ff2e620fbca73 UnityLogError 异常消息Wrong With FragmentCityExpUp lv=2,exp [方法: TH1_UI.View.Outside.UIOutsideWikiView.RebuildLayout(UnityEngine.RectTransform)]=1 关键堆栈UnityEngine.Debug.LogError(Object) 2025-11-13 07:24:14 ~ 2026-05-19 12:19:22 添加标签 2026-05-19 12:19:22 1,721 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/22daa8e859b38818eb1ff2e620fbca73?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Anim/Fragments/FragmentCityExpUp.cs:69
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Anim/Fragments/FragmentData.cs:226
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 阻断相关。该问题会影响当前表现队列、玩家操作、回合推进或多人同步,即使部分日志来自 try/catch,也不能只按 debug 统计处理。
|
||||
|
||||
原因: FragmentCityExpUp.OnUpdate 收到的 GridRenderer 或 CityInfoRenderer 为 null,日志点在城市经验/等级 UI 更新前。CrashSight 中同样固定 lv=2, exp=1,说明城市经验变动数据存在,但表现层绑定失效,当前实现会跳过弹动、经验条和金币/科技显示刷新。
|
||||
|
||||
## 建议
|
||||
|
||||
让 Fragment 保存稳定 id 而不是只保存 renderer 引用,播放前重新解析 CityInfoRenderer;若 renderer 不存在,应同步触发一次非动画的 city info 刷新,避免玩家看到的城市等级/经验滞后。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 545429cd05beed2cee3dcac190003169
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/545429cd05beed2cee3dcac190003169?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 1,640
|
||||
- 首次/最近: 2026-05-16 12:23:20 ~ 2026-05-19 12:14:24
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: OK
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 30. 545429cd05beed2cee3dcac190003169
|
||||
Type: UnityLogError
|
||||
Count: 1,640
|
||||
FirstSeen: 2026-05-16 12:23:20
|
||||
LastSeen: 2026-05-19 12:14:24
|
||||
Message: 触发断线重连, 触发原因: OK
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 545429cd05beed2cee3dcac190003169 UnityLogError 异常消息触发断线重连, 触发原因: OK 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 12:23:20 ~ 2026-05-19 12:14:24 添加标签 2026-05-19 12:14:24 1,640 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/545429cd05beed2cee3dcac190003169?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - fd93d00a817d5446b322efdf5f343834
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fd93d00a817d5446b322efdf5f343834?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: Action 执行玩家不一致 (BuyCultureCard)
|
||||
- 发生次数: 1,611
|
||||
- 首次/最近: 2026-04-11 16:20:02 ~ 2026-05-19 12:08: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 : SecondHero
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 31. fd93d00a817d5446b322efdf5f343834
|
||||
Type: UnityLogError
|
||||
Count: 1,611
|
||||
FirstSeen: 2026-04-11 16:20:02
|
||||
LastSeen: 2026-05-19 12:08:17
|
||||
Message: 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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: fd93d00a817d5446b322efdf5f343834 UnityLogError 异常消息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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-11 16:20:02 ~ 2026-05-19 12:08:17 添加标签 2026-05-19 12:08:17 1,611 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/fd93d00a817d5446b322efdf5f343834?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1105 - CompleteExecute 玩家一致性检查
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:240 - AI 最终执行 action
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:142 - 网络 action 执行入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 对应 action 被拦截不执行;如果发生在 AI 或同步链路,会造成卡回合或双方状态分叉。
|
||||
|
||||
原因: `ActionLogicBase.CompleteExecute` 要求 `actionParams.PlayerId` 等于 `MapData.CurPlayer.Id`。这里 action 的归属玩家与当前回合玩家不同,函数直接返回 false。常见来源是 AI/网络/回放参数刷新到错误 MapData,或 UI 缓存了上一回合 action。
|
||||
|
||||
## 建议
|
||||
|
||||
回查该 action 的构参处,确保 `CommonActionParams.MapData`、`PlayerData`、`PlayerId` 在执行前调用 `RefreshParams/OnParamChanged` 并跟随当前回合。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - ac184f0517914cffc2b8ff14d55aaab0
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ac184f0517914cffc2b8ff14d55aaab0?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 1,582
|
||||
- 首次/最近: 2026-04-12 15:46:36 ~ 2026-05-19 10:59:25
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 重复次数 :6
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 32. ac184f0517914cffc2b8ff14d55aaab0
|
||||
Type: UnityLogError
|
||||
Count: 1,582
|
||||
FirstSeen: 2026-04-12 15:46:36
|
||||
LastSeen: 2026-05-19 10:59:25
|
||||
Message: 存在相似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 重复次数 :6
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: ac184f0517914cffc2b8ff14d55aaab0 UnityLogError 异常消息存在相似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 重复次数 :6 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-12 15:46:36 ~ 2026-05-19 10:59:25 添加标签 2026-05-19 10:59:25 1,582 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/ac184f0517914cffc2b8ff14d55aaab0?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - ddc907f05d52c984266610b77735c8f8
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ddc907f05d52c984266610b77735c8f8?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 1,547
|
||||
- 首次/最近: 2026-05-16 12:24:05 ~ 2026-05-19 12:13:46
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 33. ddc907f05d52c984266610b77735c8f8
|
||||
Type: UnityLogError
|
||||
Count: 1,547
|
||||
FirstSeen: 2026-05-16 12:24:05
|
||||
LastSeen: 2026-05-19 12:13:46
|
||||
Message: 房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: ddc907f05d52c984266610b77735c8f8 UnityLogError 异常消息房主端:!Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData) 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 12:24:05 ~ 2026-05-19 12:13:46 添加标签 2026-05-19 12:13:46 1,547 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/ddc907f05d52c984266610b77735c8f8?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - f06f163a49706ad7273967d942fe0c5e
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f06f163a49706ad7273967d942fe0c5e?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: MemoryPack Union/协议反序列化失败
|
||||
- 发生次数: 1,483
|
||||
- 首次/最近: 2026-05-16 20:35:12 ~ 2026-05-19 07:22:42
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in bid MemoryPackUnion annotations.
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 34. f06f163a49706ad7273967d942fe0c5e
|
||||
Type: UnityLogError
|
||||
Count: 1,483
|
||||
FirstSeen: 2026-05-16 20:35:12
|
||||
LastSeen: 2026-05-19 07:22:42
|
||||
Message: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in bid [类型: TH1_Logic.MatchConfig.MomentItemBase] MemoryPackUnion annotations.
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: f06f163a49706ad7273967d942fe0c5e UnityLogError 异常消息地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in bid [类型: TH1_Logic.MatchConfig.MomentItemBase] MemoryPackUnion annotations. 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:35:12 ~ 2026-05-19 07:22:42 添加标签 2026-05-19 07:22:42 1,483 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/f06f163a49706ad7273967d942fe0c5e?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/SteamObjectSerializer.cs:75 - BaseMessage MemoryPackUnion 列表
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:19 - 反序列化 BaseMessage
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1914 - 地图数据反序列化异常捕获
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人消息、ForceUpdate、存档/地图读取无法反序列化,属于硬阻断。
|
||||
|
||||
原因: MemoryPack 读到的 union tag 不在当前类型的 `[MemoryPackUnion]` 注解内。BaseMessage tag 84 明显超出当前 `BaseMessage` 1-17 范围,地图/配置里的 `MomentItemBase`、技能 union 也有类似版本不兼容风险。
|
||||
|
||||
## 建议
|
||||
|
||||
确认线上 0.7.1i/j/k 的 MemoryPackUnion 生成文件一致;新增 union 只能追加不重排;网络消息反序列化失败要丢弃并触发恢复,不应继续应用半包。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,55 @@
|
||||
# CrashSight 阻断报告 - db05900c7f2c2d0e04dd82b3748abede
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/db05900c7f2c2d0e04dd82b3748abede?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 1,379
|
||||
- 首次/最近: 2026-05-16 11:18:25 ~ 2026-05-19 11:56:24
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: -
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## db05900c7f2c2d0e04dd82b3748abede
|
||||
异常名: UnityLogError
|
||||
首次上报异常消息: -
|
||||
累计发生次数: 1,590
|
||||
版本: 0.7.1k 1,415; 0.7.1j 175
|
||||
Stack Trace:
|
||||
UnityEngine.Debug.LogError(Object)
|
||||
cfo.iqk [方法: RuntimeData.MapData.FindDifferences(RuntimeData.MapData)](cfo [类型: RuntimeData.MapData])
|
||||
cxb.ggu [方法: TH1_Logic.Steam.GameNetReceiver.OnReceivedForceUpdate(TH1_Logic.Steam.ForceUpdateMessage)](eor [类型: TH1_Logic.Steam.ForceUpdateMessage])
|
||||
cxb.ggn [方法: TH1_Logic.Steam.GameNetReceiver.OnMessageReceived(System.Byte[])](Byte[])
|
||||
bae.lim [方法: TH1_Logic.Steam.SimpleP2P.TryHandleOrderedMessage(Steamworks.CSteamID,System.Byte[])](CSteamID, Byte[])
|
||||
bae.lik [方法: TH1_Logic.Steam.SimpleP2P.HandleReceivedConnectionPayload(Steamworks.CSteamID,System.Byte[])](CSteamID, Byte[])
|
||||
bae.frx [方法: TH1_Logic.Steam.SimpleP2P.PollMessagesForConnection(Steamworks.CSteamID,Steamworks.HSteamNetConnection)](CSteamID, HSteamNetConnection)
|
||||
bae.frw [方法: TH1_Logic.Steam.SimpleP2P.PollMessages()]()
|
||||
bag.fud [方法: TH1_Logic.Steam.SteamLobbyManager.Update()]()
|
||||
TH1_Logic.Core.Main.Update()
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 81d0b17fba1fd16c81585a9e1a01caaf
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/81d0b17fba1fd16c81585a9e1a01caaf?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 1,216
|
||||
- 首次/最近: 2026-05-12 08:07:19 ~ 2026-05-19 11:56:58
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 : KanakoRiding PlayerAction : None AIParam : AllClear Tech : KanakoRiding CultureCardType : None 重复次数 :6
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 35. 81d0b17fba1fd16c81585a9e1a01caaf
|
||||
Type: UnityLogError
|
||||
Count: 1,216
|
||||
FirstSeen: 2026-05-12 08:07:19
|
||||
LastSeen: 2026-05-19 11:56:58
|
||||
Message: 存在相似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 : KanakoRiding PlayerAction : None AIParam : AllClear Tech : KanakoRiding CultureCardType : None 重复次数 :6
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 81d0b17fba1fd16c81585a9e1a01caaf UnityLogError 异常消息存在相似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 : KanakoRiding PlayerAction : None AIParam : AllClear Tech : KanakoRiding CultureCardType : None 重复次数 :6 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-12 08:07:19 ~ 2026-05-19 11:56:58 添加标签 2026-05-19 11:56:58 1,216 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/81d0b17fba1fd16c81585a9e1a01caaf?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,46 @@
|
||||
# CrashSight 阻断报告 - 99e28352088a6f322dc8b8d29d61aa0d
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/99e28352088a6f322dc8b8d29d61aa0d?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 不可执行城市升级 Action 暴露到 ActionCircle
|
||||
- 发生次数: 1,215
|
||||
- 首次/最近: 2026-02-07 19:04:42 ~ 2026-05-19 12:15:54
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 36. 99e28352088a6f322dc8b8d29d61aa0d
|
||||
Type: UnityLogError
|
||||
Count: 1,215
|
||||
FirstSeen: 2026-02-07 19:04:42
|
||||
LastSeen: 2026-05-19 12:15:54
|
||||
Message: CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 99e28352088a6f322dc8b8d29d61aa0d UnityLogError 异常消息CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None 关键堆栈UnityEngine.Debug.LogError(Object) 2026-02-07 19:04:42 ~ 2026-05-19 12:15:54 添加标签 2026-05-19 12:15:54 1,215 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/99e28352088a6f322dc8b8d29d61aa0d?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_UI/View/Info/UIInfoCommonBaseActionCircleMono.cs:141
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 阻断相关。该问题会影响当前表现队列、玩家操作、回合推进或多人同步,即使部分日志来自 try/catch,也不能只按 debug 统计处理。
|
||||
|
||||
原因: UIInfoCommonBaseActionCircleMono.SetContent 在 action.CheckCan(param) 为 false 时仍收到了 CityLevelUpAction,并打出“CityLevelUpAction 不应该出现在无法执行的action circle里”。这说明上游 ActionCircle 构建列表和 CityLevelUpAction.CheckCan/CheckShow 的口径不一致,玩家能看到本不该出现的升级按钮。
|
||||
|
||||
## 建议
|
||||
|
||||
回查 UIInfoGridInfoView 生成 action circle 的 CityLevelUpAction 分支,把 CheckShow、CheckCan 和 ShowType 统一;该日志目前仍允许点击回调,建议在不可执行时禁用点击或直接不生成,避免后续执行侧再触发玩家/地图状态异常。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 6db5f95f3c9db0f71bd11a18298c2673
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/6db5f95f3c9db0f71bd11a18298c2673?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 1,158
|
||||
- 首次/最近: 2026-05-16 20:47:22 ~ 2026-05-19 12:14:44
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 37. 6db5f95f3c9db0f71bd11a18298c2673
|
||||
Type: UnityLogError
|
||||
Count: 1,158
|
||||
FirstSeen: 2026-05-16 20:47:22
|
||||
LastSeen: 2026-05-19 12:14:44
|
||||
Message: 成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 6db5f95f3c9db0f71bd11a18298c2673 UnityLogError 异常消息成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData) 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:47:22 ~ 2026-05-19 12:14:44 添加标签 2026-05-19 12:14:44 1,158 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/6db5f95f3c9db0f71bd11a18298c2673?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 378bba013e6d8419918795c8518babf8
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/378bba013e6d8419918795c8518babf8?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 地图/存档版本反序列化失败
|
||||
- 发生次数: 1,017
|
||||
- 首次/最近: 2026-05-16 20:44:43 ~ 2026-05-19 07:41:57
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning.
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 38. 378bba013e6d8419918795c8518babf8
|
||||
Type: UnityLogError
|
||||
Count: 1,017
|
||||
FirstSeen: 2026-05-16 20:44:43
|
||||
LastSeen: 2026-05-19 07:41:57
|
||||
Message: 地图数据反序列化失败,可能是版本不兼容: ctu [类型: RuntimeData.UnitData] property count is 20 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] binary's header maked as 21, can [方法: Logic.Achievement.AchievementConditionBase.GetConditionDescription()]'t deserialize about versioning.
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 378bba013e6d8419918795c8518babf8 UnityLogError 异常消息地图数据反序列化失败,可能是版本不兼容: ctu [类型: RuntimeData.UnitData] property count is 20 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] binary's header maked as 21, can [方法: Logic.Achievement.AchievementConditionBase.GetConditionDescription()]'t deserialize about versioning. 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:44:43 ~ 2026-05-19 07:41:57 添加标签 2026-05-19 07:41:57 1,017 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/378bba013e6d8419918795c8518babf8?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1550 - MapConfig 反序列化异常
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1914 - MapData 反序列化异常
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 读档、重连恢复、地图加载失败。
|
||||
|
||||
原因: MapData/MapConfig 读取时捕获到 MemoryPack 版本不兼容,包括字段数量不一致和 union tag 不存在。通常来自旧版本存档、不同线上包的生成代码不一致,或 Mod/配置结构变化。
|
||||
|
||||
## 建议
|
||||
|
||||
给存档/地图数据加版本迁移层;对 0.7.1i/j/k 的 MemoryPack 生成文件做差异检查,确保只追加字段/union。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 3642fcc0851826fb4938ababb170a7dc
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3642fcc0851826fb4938ababb170a7dc?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 970
|
||||
- 首次/最近: 2026-05-06 17:10:19 ~ 2026-05-19 12:18:10
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 : KomeijiIndianSailing PlayerAction : None AIParam : AllClear Tech : KomeijiIndianSailing CultureCardType : None 重复次数 :7
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 39. 3642fcc0851826fb4938ababb170a7dc
|
||||
Type: UnityLogError
|
||||
Count: 970
|
||||
FirstSeen: 2026-05-06 17:10:19
|
||||
LastSeen: 2026-05-19 12:18:10
|
||||
Message: 存在相似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 : KomeijiIndianSailing PlayerAction : None AIParam : AllClear Tech : KomeijiIndianSailing CultureCardType : None 重复次数 :7
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 3642fcc0851826fb4938ababb170a7dc UnityLogError 异常消息存在相似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 : KomeijiIndianSailing PlayerAction : None AIParam : AllClear Tech : KomeijiIndianSailing CultureCardType : None 重复次数 :7 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-06 17:10:19 ~ 2026-05-19 12:18:10 添加标签 2026-05-19 12:18:10 970 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/3642fcc0851826fb4938ababb170a7dc?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - b4bce904856172882807176e1db69e42
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b4bce904856172882807176e1db69e42?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 926
|
||||
- 首次/最近: 2026-05-14 17:49:53 ~ 2026-05-19 12:16:42
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 : KomeijiIndianNavigation PlayerAction : None AIParam : AllClear Tech : KomeijiIndianNavigation CultureCardType : None 重复次数 :6
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 40. b4bce904856172882807176e1db69e42
|
||||
Type: UnityLogError
|
||||
Count: 926
|
||||
FirstSeen: 2026-05-14 17:49:53
|
||||
LastSeen: 2026-05-19 12:16:42
|
||||
Message: 存在相似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 : KomeijiIndianNavigation PlayerAction : None AIParam : AllClear Tech : KomeijiIndianNavigation CultureCardType : None 重复次数 :6
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: b4bce904856172882807176e1db69e42 UnityLogError 异常消息存在相似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 : KomeijiIndianNavigation PlayerAction : None AIParam : AllClear Tech : KomeijiIndianNavigation CultureCardType : None 重复次数 :6 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-14 17:49:53 ~ 2026-05-19 12:16:42 添加标签 2026-05-19 12:16:42 926 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/b4bce904856172882807176e1db69e42?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 5c210a60357b9a414fe70a86a70f0e16
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5c210a60357b9a414fe70a86a70f0e16?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 889
|
||||
- 首次/最近: 2026-05-17 12:30:34 ~ 2026-05-18 23:05:12
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Map不一致前后Action : 前: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 后: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 41. 5c210a60357b9a414fe70a86a70f0e16
|
||||
Type: UnityLogError
|
||||
Count: 889
|
||||
FirstSeen: 2026-05-17 12:30:34
|
||||
LastSeen: 2026-05-18 23:05:12
|
||||
Message: Map不一致前后Action : 前: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 后: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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 5c210a60357b9a414fe70a86a70f0e16 UnityLogError 异常消息Map不一致前后Action : 前: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 后: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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-17 12:30:34 ~ 2026-05-18 23:05:12 添加标签 2026-05-18 23:05:12 889 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/5c210a60357b9a414fe70a86a70f0e16?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 3944af0b938b8638c599c03c4fecbe5e
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3944af0b938b8638c599c03c4fecbe5e?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 867
|
||||
- 首次/最近: 2026-04-14 04:37:05 ~ 2026-05-18 22:59:40
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Map不一致前后Action : 前: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 后: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 42. 3944af0b938b8638c599c03c4fecbe5e
|
||||
Type: UnityLogError
|
||||
Count: 867
|
||||
FirstSeen: 2026-04-14 04:37:05
|
||||
LastSeen: 2026-05-18 22:59:40
|
||||
Message: Map不一致前后Action : 前: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 后: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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 3944af0b938b8638c599c03c4fecbe5e UnityLogError 异常消息Map不一致前后Action : 前: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 后: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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-14 04:37:05 ~ 2026-05-18 22:59:40 添加标签 2026-05-18 22:59:40 867 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/3944af0b938b8638c599c03c4fecbe5e?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 7514679f32cab9575834eed508ae4ed9
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7514679f32cab9575834eed508ae4ed9?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 841
|
||||
- 首次/最近: 2026-05-17 01:02:27 ~ 2026-05-19 09:04:19
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 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 : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : ForceDisband CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 43. 7514679f32cab9575834eed508ae4ed9
|
||||
Type: UnityLogError
|
||||
Count: 841
|
||||
FirstSeen: 2026-05-17 01:02:27
|
||||
LastSeen: 2026-05-19 09:04:19
|
||||
Message: 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 : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : ForceDisband CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 7514679f32cab9575834eed508ae4ed9 UnityLogError 异常消息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 : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : ForceDisband CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-17 01:02:27 ~ 2026-05-19 09:04:19 添加标签 2026-05-19 09:04:19 841 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/7514679f32cab9575834eed508ae4ed9?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 3073cbeca8060ffaf53357cac6d71a86
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3073cbeca8060ffaf53357cac6d71a86?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: Action 执行玩家不一致 (BuyCultureCard)
|
||||
- 发生次数: 772
|
||||
- 首次/最近: 2026-04-11 16:36:12 ~ 2026-05-19 12:00:55
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 44. 3073cbeca8060ffaf53357cac6d71a86
|
||||
Type: UnityLogError
|
||||
Count: 772
|
||||
FirstSeen: 2026-04-11 16:36:12
|
||||
LastSeen: 2026-05-19 12:00:55
|
||||
Message: 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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 3073cbeca8060ffaf53357cac6d71a86 UnityLogError 异常消息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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-11 16:36:12 ~ 2026-05-19 12:00:55 添加标签 2026-05-19 12:00:55 772 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/3073cbeca8060ffaf53357cac6d71a86?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1105 - CompleteExecute 玩家一致性检查
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:240 - AI 最终执行 action
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:142 - 网络 action 执行入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 对应 action 被拦截不执行;如果发生在 AI 或同步链路,会造成卡回合或双方状态分叉。
|
||||
|
||||
原因: `ActionLogicBase.CompleteExecute` 要求 `actionParams.PlayerId` 等于 `MapData.CurPlayer.Id`。这里 action 的归属玩家与当前回合玩家不同,函数直接返回 false。常见来源是 AI/网络/回放参数刷新到错误 MapData,或 UI 缓存了上一回合 action。
|
||||
|
||||
## 建议
|
||||
|
||||
回查该 action 的构参处,确保 `CommonActionParams.MapData`、`PlayerData`、`PlayerId` 在执行前调用 `RefreshParams/OnParamChanged` 并跟随当前回合。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 25be1c276172ec1b3fde3d7d5888fc4d
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/25be1c276172ec1b3fde3d7d5888fc4d?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 761
|
||||
- 首次/最近: 2026-05-16 11:21:33 ~ 2026-05-19 12:14:24
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 45. 25be1c276172ec1b3fde3d7d5888fc4d
|
||||
Type: UnityLogError
|
||||
Count: 761
|
||||
FirstSeen: 2026-05-16 11:21:33
|
||||
LastSeen: 2026-05-19 12:14:24
|
||||
Message: 成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 25be1c276172ec1b3fde3d7d5888fc4d UnityLogError 异常消息成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData) 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 11:21:33 ~ 2026-05-19 12:14:24 添加标签 2026-05-19 12:14:24 761 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/25be1c276172ec1b3fde3d7d5888fc4d?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 10d4df507992c1a66a90693df20b21c3
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/10d4df507992c1a66a90693df20b21c3?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: Action 执行玩家不一致 (UnitAttack)
|
||||
- 发生次数: 758
|
||||
- 首次/最近: 2026-05-13 02:01:28 ~ 2026-05-19 00:36:52
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 46. 10d4df507992c1a66a90693df20b21c3
|
||||
Type: UnityLogError
|
||||
Count: 758
|
||||
FirstSeen: 2026-05-13 02:01:28
|
||||
LastSeen: 2026-05-19 00:36:52
|
||||
Message: 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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 10d4df507992c1a66a90693df20b21c3 UnityLogError 异常消息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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-13 02:01:28 ~ 2026-05-19 00:36:52 添加标签 2026-05-19 00:36:52 758 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/10d4df507992c1a66a90693df20b21c3?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1105 - CompleteExecute 玩家一致性检查
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:240 - AI 最终执行 action
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:142 - 网络 action 执行入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 对应 action 被拦截不执行;如果发生在 AI 或同步链路,会造成卡回合或双方状态分叉。
|
||||
|
||||
原因: `ActionLogicBase.CompleteExecute` 要求 `actionParams.PlayerId` 等于 `MapData.CurPlayer.Id`。这里 action 的归属玩家与当前回合玩家不同,函数直接返回 false。常见来源是 AI/网络/回放参数刷新到错误 MapData,或 UI 缓存了上一回合 action。
|
||||
|
||||
## 建议
|
||||
|
||||
回查该 action 的构参处,确保 `CommonActionParams.MapData`、`PlayerData`、`PlayerId` 在执行前调用 `RefreshParams/OnParamChanged` 并跟随当前回合。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - c0990767a9861d80d92aeab7fd75a5aa
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c0990767a9861d80d92aeab7fd75a5aa?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 地图/存档版本反序列化失败
|
||||
- 发生次数: 742
|
||||
- 首次/最近: 2026-05-16 20:33:25 ~ 2026-05-19 07:41:57
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 地图数据反序列化失败,可能是版本不兼容: ctu property count is 20 but binary's header maked as 21, can't deserialize about versioning.
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 47. c0990767a9861d80d92aeab7fd75a5aa
|
||||
Type: UnityLogError
|
||||
Count: 742
|
||||
FirstSeen: 2026-05-16 20:33:25
|
||||
LastSeen: 2026-05-19 07:41:57
|
||||
Message: 地图数据反序列化失败,可能是版本不兼容: ctu [类型: RuntimeData.UnitData] property count is 20 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] binary's header maked as 21, can [方法: Logic.Achievement.AchievementConditionBase.GetConditionDescription()]'t deserialize about versioning.
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: c0990767a9861d80d92aeab7fd75a5aa UnityLogError 异常消息地图数据反序列化失败,可能是版本不兼容: ctu [类型: RuntimeData.UnitData] property count is 20 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] binary's header maked as 21, can [方法: Logic.Achievement.AchievementConditionBase.GetConditionDescription()]'t deserialize about versioning. 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:33:25 ~ 2026-05-19 07:41:57 添加标签 2026-05-19 07:41:57 742 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/c0990767a9861d80d92aeab7fd75a5aa?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1550 - MapConfig 反序列化异常
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1914 - MapData 反序列化异常
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 读档、重连恢复、地图加载失败。
|
||||
|
||||
原因: MapData/MapConfig 读取时捕获到 MemoryPack 版本不兼容,包括字段数量不一致和 union tag 不存在。通常来自旧版本存档、不同线上包的生成代码不一致,或 Mod/配置结构变化。
|
||||
|
||||
## 建议
|
||||
|
||||
给存档/地图数据加版本迁移层;对 0.7.1i/j/k 的 MemoryPack 生成文件做差异检查,确保只追加字段/union。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - de702afd197a236c90a11ac558d360f1
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/de702afd197a236c90a11ac558d360f1?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 707
|
||||
- 首次/最近: 2026-05-14 17:57:59 ~ 2026-05-19 11:51:53
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 : KanakoSmithery PlayerAction : None AIParam : AllClear Tech : KanakoSmithery CultureCardType : None 重复次数 :6
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 48. de702afd197a236c90a11ac558d360f1
|
||||
Type: UnityLogError
|
||||
Count: 707
|
||||
FirstSeen: 2026-05-14 17:57:59
|
||||
LastSeen: 2026-05-19 11:51:53
|
||||
Message: 存在相似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 : KanakoSmithery PlayerAction : None AIParam : AllClear Tech : KanakoSmithery CultureCardType : None 重复次数 :6
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: de702afd197a236c90a11ac558d360f1 UnityLogError 异常消息存在相似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 : KanakoSmithery PlayerAction : None AIParam : AllClear Tech : KanakoSmithery CultureCardType : None 重复次数 :6 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-14 17:57:59 ~ 2026-05-19 11:51:53 添加标签 2026-05-19 11:51:53 707 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/de702afd197a236c90a11ac558d360f1?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,49 @@
|
||||
# CrashSight 阻断报告 - 38384b99cb735e5a53df5b363b24fd48
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/38384b99cb735e5a53df5b363b24fd48?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: MemoryPack Union/协议反序列化失败
|
||||
- 发生次数: 655
|
||||
- 首次/最近: 2026-05-17 15:33:27 ~ 2026-05-18 13:23:37
|
||||
- 列表版本: 0.7.1j
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in fpx MemoryPackUnion annotations.
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 49. 38384b99cb735e5a53df5b363b24fd48
|
||||
Type: UnityLogError
|
||||
Count: 655
|
||||
FirstSeen: 2026-05-17 15:33:27
|
||||
LastSeen: 2026-05-18 13:23:37
|
||||
Message: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in fpx [类型: Logic.Skill.SkillBase] MemoryPackUnion annotations.
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 38384b99cb735e5a53df5b363b24fd48 UnityLogError 异常消息地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in fpx [类型: Logic.Skill.SkillBase] MemoryPackUnion annotations. 关键堆栈UnityEngine.Debug.LogError(Object) 0.7.1j 2026-05-17 15:33:27 ~ 2026-05-18 13:23:37 添加标签 2026-05-18 13:23:37 655 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/38384b99cb735e5a53df5b363b24fd48?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/SteamObjectSerializer.cs:75 - BaseMessage MemoryPackUnion 列表
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:19 - 反序列化 BaseMessage
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1914 - 地图数据反序列化异常捕获
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人消息、ForceUpdate、存档/地图读取无法反序列化,属于硬阻断。
|
||||
|
||||
原因: MemoryPack 读到的 union tag 不在当前类型的 `[MemoryPackUnion]` 注解内。BaseMessage tag 84 明显超出当前 `BaseMessage` 1-17 范围,地图/配置里的 `MomentItemBase`、技能 union 也有类似版本不兼容风险。
|
||||
|
||||
## 建议
|
||||
|
||||
确认线上 0.7.1i/j/k 的 MemoryPackUnion 生成文件一致;新增 union 只能追加不重排;网络消息反序列化失败要丢弃并触发恢复,不应继续应用半包。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 2518262ae7070bb58c2aaf0fb281d432
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2518262ae7070bb58c2aaf0fb281d432?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 651
|
||||
- 首次/最近: 2026-04-13 15:45:48 ~ 2026-05-19 12:20:22
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 50. 2518262ae7070bb58c2aaf0fb281d432
|
||||
Type: UnityLogError
|
||||
Count: 651
|
||||
FirstSeen: 2026-04-13 15:45:48
|
||||
LastSeen: 2026-05-19 12:20:22
|
||||
Message: 存在相似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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 2518262ae7070bb58c2aaf0fb281d432 UnityLogError 异常消息存在相似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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-13 15:45:48 ~ 2026-05-19 12:20:22 添加标签 2026-05-19 12:20:22 651 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/2518262ae7070bb58c2aaf0fb281d432?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - ebe3246947528a80600114bb6b8c87cf
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ebe3246947528a80600114bb6b8c87cf?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 557
|
||||
- 首次/最近: 2026-05-16 21:14:32 ~ 2026-05-19 10:43:18
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Map不一致前后Action : 前: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 后: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 51. ebe3246947528a80600114bb6b8c87cf
|
||||
Type: UnityLogError
|
||||
Count: 557
|
||||
FirstSeen: 2026-05-16 21:14:32
|
||||
LastSeen: 2026-05-19 10:43:18
|
||||
Message: Map不一致前后Action : 前: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 后: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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: ebe3246947528a80600114bb6b8c87cf UnityLogError 异常消息Map不一致前后Action : 前: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 后: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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 21:14:32 ~ 2026-05-19 10:43:18 添加标签 2026-05-19 10:43:18 557 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/ebe3246947528a80600114bb6b8c87cf?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,46 @@
|
||||
# CrashSight 阻断报告 - 447a0afd0c27314a3b3c95922283f7d8
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/447a0afd0c27314a3b3c95922283f7d8?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 不可执行城市升级 Action 暴露到 ActionCircle
|
||||
- 发生次数: 556
|
||||
- 首次/最近: 2026-04-11 17:03:51 ~ 2026-05-19 11:10:17
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 52. 447a0afd0c27314a3b3c95922283f7d8
|
||||
Type: UnityLogError
|
||||
Count: 556
|
||||
FirstSeen: 2026-04-11 17:03:51
|
||||
LastSeen: 2026-05-19 11:10:17
|
||||
Message: CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 447a0afd0c27314a3b3c95922283f7d8 UnityLogError 异常消息CityLevelUpAction 不应该出现在无法执行的action circle里, Tyep :None 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-11 17:03:51 ~ 2026-05-19 11:10:17 添加标签 2026-05-19 11:10:17 556 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/447a0afd0c27314a3b3c95922283f7d8?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_UI/View/Info/UIInfoCommonBaseActionCircleMono.cs:141
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 阻断相关。该问题会影响当前表现队列、玩家操作、回合推进或多人同步,即使部分日志来自 try/catch,也不能只按 debug 统计处理。
|
||||
|
||||
原因: UIInfoCommonBaseActionCircleMono.SetContent 在 action.CheckCan(param) 为 false 时仍收到了 CityLevelUpAction,并打出“CityLevelUpAction 不应该出现在无法执行的action circle里”。这说明上游 ActionCircle 构建列表和 CityLevelUpAction.CheckCan/CheckShow 的口径不一致,玩家能看到本不该出现的升级按钮。
|
||||
|
||||
## 建议
|
||||
|
||||
回查 UIInfoGridInfoView 生成 action circle 的 CityLevelUpAction 分支,把 CheckShow、CheckCan 和 ShowType 统一;该日志目前仍允许点击回调,建议在不可执行时禁用点击或直接不生成,避免后续执行侧再触发玩家/地图状态异常。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 49c71c9302c2296cc4d093adb034ba75
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/49c71c9302c2296cc4d093adb034ba75?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 553
|
||||
- 首次/最近: 2026-05-14 18:30:52 ~ 2026-05-19 11:39:57
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 53. 49c71c9302c2296cc4d093adb034ba75
|
||||
Type: UnityLogError
|
||||
Count: 553
|
||||
FirstSeen: 2026-05-14 18:30:52
|
||||
LastSeen: 2026-05-19 11:39:57
|
||||
Message: 存在相似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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 49c71c9302c2296cc4d093adb034ba75 UnityLogError 异常消息存在相似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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-14 18:30:52 ~ 2026-05-19 11:39:57 添加标签 2026-05-19 11:39:57 553 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/49c71c9302c2296cc4d093adb034ba75?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - fa920d4211c8075190887d65ee290bc1
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fa920d4211c8075190887d65ee290bc1?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 500
|
||||
- 首次/最近: 2026-04-12 21:48:55 ~ 2026-05-19 12:18:13
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似action ,记录点为:753 ,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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 54. fa920d4211c8075190887d65ee290bc1
|
||||
Type: UnityLogError
|
||||
Count: 500
|
||||
FirstSeen: 2026-04-12 21:48:55
|
||||
LastSeen: 2026-05-19 12:18:13
|
||||
Message: 存在相似action ,记录点为:753 ,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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: fa920d4211c8075190887d65ee290bc1 UnityLogError 异常消息存在相似action ,记录点为:753 ,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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-12 21:48:55 ~ 2026-05-19 12:18:13 添加标签 2026-05-19 12:18:13 500 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/fa920d4211c8075190887d65ee290bc1?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 5c24d8c271d5804cc62629a14d310136
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5c24d8c271d5804cc62629a14d310136?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 499
|
||||
- 首次/最近: 2026-05-16 21:51:55 ~ 2026-05-19 03:55:44
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 55. 5c24d8c271d5804cc62629a14d310136
|
||||
Type: UnityLogError
|
||||
Count: 499
|
||||
FirstSeen: 2026-05-16 21:51:55
|
||||
LastSeen: 2026-05-19 03:55:44
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 5c24d8c271d5804cc62629a14d310136 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 21:51:55 ~ 2026-05-19 03:55:44 添加标签 2026-05-19 03:55:44 499 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/5c24d8c271d5804cc62629a14d310136?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,46 @@
|
||||
# CrashSight 阻断报告 - edbc2bf3a9b58de9026ab0925253f29e
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/edbc2bf3a9b58de9026ab0925253f29e?pid=10
|
||||
- 异常类型: NullReferenceException
|
||||
- 阻断族: 探索者移动 Fragment 空引用
|
||||
- 发生次数: 499
|
||||
- 首次/最近: 2025-11-05 14:00:17 ~ 2026-05-19 01:36:18
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Object reference not set to an instance of an object.
|
||||
|
||||
关键堆栈: gcq.hdo (System.Single a) (at <00000000000000000000000000000000>.0)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 56. edbc2bf3a9b58de9026ab0925253f29e
|
||||
Type: NullReferenceException
|
||||
Count: 499
|
||||
FirstSeen: 2025-11-05 14:00:17
|
||||
LastSeen: 2026-05-19 01:36:18
|
||||
Message: Object reference not set to an instance of an object.
|
||||
KeyStack: gcq.hdo [方法: TH1_Anim.Fragments.FragmentMoveExplorer.OnUpdate(System.Single)] (System.Single a) (at <00000000000000000000000000000000>.0)
|
||||
RawText: edbc2bf3a9b58de9026ab0925253f29e NullReferenceException 异常消息Object reference not set to an instance of an object. 关键堆栈gcq.hdo [方法: TH1_Anim.Fragments.FragmentMoveExplorer.OnUpdate(System.Single)] (System.Single a) (at <00000000000000000000000000000000>.0) 2025-11-05 14:00:17 ~ 2026-05-19 01:36:18 添加标签 2026-05-19 01:36:18 499 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/edbc2bf3a9b58de9026ab0925253f29e?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Anim/Fragments/FragmentMoveExplorer.cs:62 - 探索者移动 OnUpdate
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 探索者移动表现中断。
|
||||
|
||||
原因: `FragmentMoveExplorer.OnUpdate` 虽然检查了 Data/TargetGrid,但仍依赖 `MapRenderer.Instance.CameraController`、Explorer、Grid Renderer 和 Main.MapData。切图或表现对象销毁时可能空引用。
|
||||
|
||||
## 建议
|
||||
|
||||
把 Fragment 的目标 renderer/cache 做生命周期校验;地图退出时取消未完成 Fragment。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 5680b7fdadea0291f36c15b5f571ba15
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5680b7fdadea0291f36c15b5f571ba15?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 470
|
||||
- 首次/最近: 2026-05-16 20:50:42 ~ 2026-05-19 12:07:43
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 57. 5680b7fdadea0291f36c15b5f571ba15
|
||||
Type: UnityLogError
|
||||
Count: 470
|
||||
FirstSeen: 2026-05-16 20:50:42
|
||||
LastSeen: 2026-05-19 12:07:43
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 5680b7fdadea0291f36c15b5f571ba15 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:50:42 ~ 2026-05-19 12:07:43 添加标签 2026-05-19 12:07:43 470 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/5680b7fdadea0291f36c15b5f571ba15?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 0835743d896436da32c652542336f397
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0835743d896436da32c652542336f397?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 461
|
||||
- 首次/最近: 2026-05-04 12:03:59 ~ 2026-05-19 12:18:06
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 重复次数 :6
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 58. 0835743d896436da32c652542336f397
|
||||
Type: UnityLogError
|
||||
Count: 461
|
||||
FirstSeen: 2026-05-04 12:03:59
|
||||
LastSeen: 2026-05-19 12:18:06
|
||||
Message: 存在相似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 重复次数 :6
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 0835743d896436da32c652542336f397 UnityLogError 异常消息存在相似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 重复次数 :6 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-04 12:03:59 ~ 2026-05-19 12:18:06 添加标签 2026-05-19 12:18:06 461 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/0835743d896436da32c652542336f397?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - ad347b0f0847882d05476b28dfbb5056
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad347b0f0847882d05476b28dfbb5056?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 444
|
||||
- 首次/最近: 2026-05-16 02:46:45 ~ 2026-05-19 12:05:31
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: Error
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 59. ad347b0f0847882d05476b28dfbb5056
|
||||
Type: UnityLogError
|
||||
Count: 444
|
||||
FirstSeen: 2026-05-16 02:46:45
|
||||
LastSeen: 2026-05-19 12:05:31
|
||||
Message: 触发断线重连, 触发原因: Error
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: ad347b0f0847882d05476b28dfbb5056 UnityLogError 异常消息触发断线重连, 触发原因: Error 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 02:46:45 ~ 2026-05-19 12:05:31 添加标签 2026-05-19 12:05:31 444 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/ad347b0f0847882d05476b28dfbb5056?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 7bdcfa8bcdb1086ff37a4b6de7aa5827
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7bdcfa8bcdb1086ff37a4b6de7aa5827?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 437
|
||||
- 首次/最近: 2026-05-16 21:15:52 ~ 2026-05-18 18:02:56
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: Disconnected
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 60. 7bdcfa8bcdb1086ff37a4b6de7aa5827
|
||||
Type: UnityLogError
|
||||
Count: 437
|
||||
FirstSeen: 2026-05-16 21:15:52
|
||||
LastSeen: 2026-05-18 18:02:56
|
||||
Message: 触发断线重连, 触发原因: Disconnected
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 7bdcfa8bcdb1086ff37a4b6de7aa5827 UnityLogError 异常消息触发断线重连, 触发原因: Disconnected 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 21:15:52 ~ 2026-05-18 18:02:56 添加标签 2026-05-18 18:02:56 437 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/7bdcfa8bcdb1086ff37a4b6de7aa5827?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 688b04002ace3cdbd23f5a760f60ea64
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/688b04002ace3cdbd23f5a760f60ea64?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 429
|
||||
- 首次/最近: 2026-05-16 21:07:13 ~ 2026-05-19 09:07:01
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: Timeout
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 61. 688b04002ace3cdbd23f5a760f60ea64
|
||||
Type: UnityLogError
|
||||
Count: 429
|
||||
FirstSeen: 2026-05-16 21:07:13
|
||||
LastSeen: 2026-05-19 09:07:01
|
||||
Message: 触发断线重连, 触发原因: Timeout
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 688b04002ace3cdbd23f5a760f60ea64 UnityLogError 异常消息触发断线重连, 触发原因: Timeout 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 21:07:13 ~ 2026-05-19 09:07:01 添加标签 2026-05-19 09:07:01 429 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/688b04002ace3cdbd23f5a760f60ea64?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 92a16aef34dc990899143b85ea8d25b5
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/92a16aef34dc990899143b85ea8d25b5?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 418
|
||||
- 首次/最近: 2026-05-15 20:49:47 ~ 2026-05-19 04:34:53
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 62. 92a16aef34dc990899143b85ea8d25b5
|
||||
Type: UnityLogError
|
||||
Count: 418
|
||||
FirstSeen: 2026-05-15 20:49:47
|
||||
LastSeen: 2026-05-19 04:34:53
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 92a16aef34dc990899143b85ea8d25b5 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-15 20:49:47 ~ 2026-05-19 04:34:53 添加标签 2026-05-19 04:34:53 418 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/92a16aef34dc990899143b85ea8d25b5?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - c98860085ab1915973545b791342b44f
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c98860085ab1915973545b791342b44f?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: MemoryPack Union/协议反序列化失败
|
||||
- 发生次数: 390
|
||||
- 首次/最近: 2026-05-16 20:38:37 ~ 2026-05-18 20:45:39
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in fpx MemoryPackUnion annotations.
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 63. c98860085ab1915973545b791342b44f
|
||||
Type: UnityLogError
|
||||
Count: 390
|
||||
FirstSeen: 2026-05-16 20:38:37
|
||||
LastSeen: 2026-05-18 20:45:39
|
||||
Message: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in fpx [类型: Logic.Skill.SkillBase] MemoryPackUnion annotations.
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: c98860085ab1915973545b791342b44f UnityLogError 异常消息地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in fpx [类型: Logic.Skill.SkillBase] MemoryPackUnion annotations. 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:38:37 ~ 2026-05-18 20:45:39 添加标签 2026-05-18 20:45:39 390 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/c98860085ab1915973545b791342b44f?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/SteamObjectSerializer.cs:75 - BaseMessage MemoryPackUnion 列表
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:19 - 反序列化 BaseMessage
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1914 - 地图数据反序列化异常捕获
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人消息、ForceUpdate、存档/地图读取无法反序列化,属于硬阻断。
|
||||
|
||||
原因: MemoryPack 读到的 union tag 不在当前类型的 `[MemoryPackUnion]` 注解内。BaseMessage tag 84 明显超出当前 `BaseMessage` 1-17 范围,地图/配置里的 `MomentItemBase`、技能 union 也有类似版本不兼容风险。
|
||||
|
||||
## 建议
|
||||
|
||||
确认线上 0.7.1i/j/k 的 MemoryPackUnion 生成文件一致;新增 union 只能追加不重排;网络消息反序列化失败要丢弃并触发恢复,不应继续应用半包。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - d31d09ef305b3ffcde9044c4ba3e490c
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d31d09ef305b3ffcde9044c4ba3e490c?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 386
|
||||
- 首次/最近: 2026-05-14 17:36:01 ~ 2026-05-19 03:08:15
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 64. d31d09ef305b3ffcde9044c4ba3e490c
|
||||
Type: UnityLogError
|
||||
Count: 386
|
||||
FirstSeen: 2026-05-14 17:36:01
|
||||
LastSeen: 2026-05-19 03:08:15
|
||||
Message: 成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData)
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: d31d09ef305b3ffcde9044c4ba3e490c UnityLogError 异常消息成员端: !Main.MapData.Net.Actions[message.Index - 1].IsEqual(message.ActionData) 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-14 17:36:01 ~ 2026-05-19 03:08:15 添加标签 2026-05-19 03:08:15 386 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/d31d09ef305b3ffcde9044c4ba3e490c?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 3a48be42a3149d43e7ebed18f372c83f
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3a48be42a3149d43e7ebed18f372c83f?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 377
|
||||
- 首次/最近: 2026-05-14 18:08:41 ~ 2026-05-19 12:14:10
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 重复次数 :6
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 65. 3a48be42a3149d43e7ebed18f372c83f
|
||||
Type: UnityLogError
|
||||
Count: 377
|
||||
FirstSeen: 2026-05-14 18:08:41
|
||||
LastSeen: 2026-05-19 12:14:10
|
||||
Message: 存在相似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 重复次数 :6
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 3a48be42a3149d43e7ebed18f372c83f UnityLogError 异常消息存在相似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 重复次数 :6 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-14 18:08:41 ~ 2026-05-19 12:14:10 添加标签 2026-05-19 12:14:10 377 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/3a48be42a3149d43e7ebed18f372c83f?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 3e3a6da58534d3ac548ff7003500b3c5
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3e3a6da58534d3ac548ff7003500b3c5?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 366
|
||||
- 首次/最近: 2026-05-15 18:11:19 ~ 2026-05-19 00:45:00
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 66. 3e3a6da58534d3ac548ff7003500b3c5
|
||||
Type: UnityLogError
|
||||
Count: 366
|
||||
FirstSeen: 2026-05-15 18:11:19
|
||||
LastSeen: 2026-05-19 00:45:00
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 3e3a6da58534d3ac548ff7003500b3c5 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-15 18:11:19 ~ 2026-05-19 00:45:00 添加标签 2026-05-19 00:45:00 366 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/3e3a6da58534d3ac548ff7003500b3c5?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 697d4fc58f94e10c7ba37bfd737e27df
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/697d4fc58f94e10c7ba37bfd737e27df?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: Action 执行玩家不一致 (BuyCultureCard)
|
||||
- 发生次数: 365
|
||||
- 首次/最近: 2026-04-11 17:57:46 ~ 2026-05-19 12:17:44
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 67. 697d4fc58f94e10c7ba37bfd737e27df
|
||||
Type: UnityLogError
|
||||
Count: 365
|
||||
FirstSeen: 2026-04-11 17:57:46
|
||||
LastSeen: 2026-05-19 12:17:44
|
||||
Message: 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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 697d4fc58f94e10c7ba37bfd737e27df UnityLogError 异常消息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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-11 17:57:46 ~ 2026-05-19 12:17:44 添加标签 2026-05-19 12:17:44 365 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/697d4fc58f94e10c7ba37bfd737e27df?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1105 - CompleteExecute 玩家一致性检查
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:240 - AI 最终执行 action
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:142 - 网络 action 执行入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 对应 action 被拦截不执行;如果发生在 AI 或同步链路,会造成卡回合或双方状态分叉。
|
||||
|
||||
原因: `ActionLogicBase.CompleteExecute` 要求 `actionParams.PlayerId` 等于 `MapData.CurPlayer.Id`。这里 action 的归属玩家与当前回合玩家不同,函数直接返回 false。常见来源是 AI/网络/回放参数刷新到错误 MapData,或 UI 缓存了上一回合 action。
|
||||
|
||||
## 建议
|
||||
|
||||
回查该 action 的构参处,确保 `CommonActionParams.MapData`、`PlayerData`、`PlayerId` 在执行前调用 `RefreshParams/OnParamChanged` 并跟随当前回合。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - c80751c5a0552930687465b6ec6f51ba
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c80751c5a0552930687465b6ec6f51ba?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: MemoryPack Union/协议反序列化失败
|
||||
- 发生次数: 345
|
||||
- 首次/最近: 2026-05-16 22:27:45 ~ 2026-05-18 17:33:43
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but not found in fpx MemoryPackUnion annotations.
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 68. c80751c5a0552930687465b6ec6f51ba
|
||||
Type: UnityLogError
|
||||
Count: 345
|
||||
FirstSeen: 2026-05-16 22:27:45
|
||||
LastSeen: 2026-05-18 17:33:43
|
||||
Message: 地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in fpx [类型: Logic.Skill.SkillBase] MemoryPackUnion annotations.
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: c80751c5a0552930687465b6ec6f51ba UnityLogError 异常消息地图数据反序列化失败,可能是版本不兼容: Data read tag: 0 but [方法: Logic.AI.AIActionGenerator.GeneratorActionIds(Logic.AI.AICalculatorData,Logic.Action.CommonActionType)] not found in fpx [类型: Logic.Skill.SkillBase] MemoryPackUnion annotations. 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 22:27:45 ~ 2026-05-18 17:33:43 添加标签 2026-05-18 17:33:43 345 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/c80751c5a0552930687465b6ec6f51ba?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/SteamObjectSerializer.cs:75 - BaseMessage MemoryPackUnion 列表
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:19 - 反序列化 BaseMessage
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1914 - 地图数据反序列化异常捕获
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人消息、ForceUpdate、存档/地图读取无法反序列化,属于硬阻断。
|
||||
|
||||
原因: MemoryPack 读到的 union tag 不在当前类型的 `[MemoryPackUnion]` 注解内。BaseMessage tag 84 明显超出当前 `BaseMessage` 1-17 范围,地图/配置里的 `MomentItemBase`、技能 union 也有类似版本不兼容风险。
|
||||
|
||||
## 建议
|
||||
|
||||
确认线上 0.7.1i/j/k 的 MemoryPackUnion 生成文件一致;新增 union 只能追加不重排;网络消息反序列化失败要丢弃并触发恢复,不应继续应用半包。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 10bf1e2a5d7f2a314e3d987347188100
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/10bf1e2a5d7f2a314e3d987347188100?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 329
|
||||
- 首次/最近: 2026-05-16 20:50:43 ~ 2026-05-19 07:37:15
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 69. 10bf1e2a5d7f2a314e3d987347188100
|
||||
Type: UnityLogError
|
||||
Count: 329
|
||||
FirstSeen: 2026-05-16 20:50:43
|
||||
LastSeen: 2026-05-19 07:37:15
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 10bf1e2a5d7f2a314e3d987347188100 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:50:43 ~ 2026-05-19 07:37:15 添加标签 2026-05-19 07:37:15 329 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/10bf1e2a5d7f2a314e3d987347188100?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 5ba6eeccf9b4553cf812def9b54018d8
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5ba6eeccf9b4553cf812def9b54018d8?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 314
|
||||
- 首次/最近: 2026-05-16 20:50:41 ~ 2026-05-19 12:07:43
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 70. 5ba6eeccf9b4553cf812def9b54018d8
|
||||
Type: UnityLogError
|
||||
Count: 314
|
||||
FirstSeen: 2026-05-16 20:50:41
|
||||
LastSeen: 2026-05-19 12:07:43
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 5ba6eeccf9b4553cf812def9b54018d8 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:50:41 ~ 2026-05-19 12:07:43 添加标签 2026-05-19 12:07:43 314 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/5ba6eeccf9b4553cf812def9b54018d8?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - d7f295079113b4d522f03b74c3dce4c9
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/d7f295079113b4d522f03b74c3dce4c9?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 310
|
||||
- 首次/最近: 2026-05-16 17:31:11 ~ 2026-05-19 10:53:01
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Map不一致前后Action : 前: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 后: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 71. d7f295079113b4d522f03b74c3dce4c9
|
||||
Type: UnityLogError
|
||||
Count: 310
|
||||
FirstSeen: 2026-05-16 17:31:11
|
||||
LastSeen: 2026-05-19 10:53:01
|
||||
Message: Map不一致前后Action : 前: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 后: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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: d7f295079113b4d522f03b74c3dce4c9 UnityLogError 异常消息Map不一致前后Action : 前: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 后: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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 17:31:11 ~ 2026-05-19 10:53:01 添加标签 2026-05-19 10:53:01 310 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/d7f295079113b4d522f03b74c3dce4c9?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 670d5de73503e84893e34fd9040677c5
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/670d5de73503e84893e34fd9040677c5?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 303
|
||||
- 首次/最近: 2025-12-28 20:57:28 ~ 2026-05-19 12:18:08
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 72. 670d5de73503e84893e34fd9040677c5
|
||||
Type: UnityLogError
|
||||
Count: 303
|
||||
FirstSeen: 2025-12-28 20:57:28
|
||||
LastSeen: 2026-05-19 12:18:08
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 670d5de73503e84893e34fd9040677c5 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2025-12-28 20:57:28 ~ 2026-05-19 12:18:08 添加标签 2026-05-19 12:18:08 303 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/670d5de73503e84893e34fd9040677c5?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - f322f67ab1a9616d64241d14d03c3bb0
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f322f67ab1a9616d64241d14d03c3bb0?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 300
|
||||
- 首次/最近: 2026-05-18 18:34:41 ~ 2026-05-19 01:39:01
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Map不一致前后Action : 前:Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : Examine CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None 后: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 73. f322f67ab1a9616d64241d14d03c3bb0
|
||||
Type: UnityLogError
|
||||
Count: 300
|
||||
FirstSeen: 2026-05-18 18:34:41
|
||||
LastSeen: 2026-05-19 01:39:01
|
||||
Message: Map不一致前后Action : 前:Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : Examine CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None 后: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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: f322f67ab1a9616d64241d14d03c3bb0 UnityLogError 异常消息Map不一致前后Action : 前:Action : UnitAction Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : Examine CityLevelUpAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None 后: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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-18 18:34:41 ~ 2026-05-19 01:39:01 添加标签 2026-05-19 01:39:01 300 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/f322f67ab1a9616d64241d14d03c3bb0?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - de7d59726317b481a6fccbac6d77ed31
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/de7d59726317b481a6fccbac6d77ed31?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 298
|
||||
- 首次/最近: 2026-05-17 01:24:11 ~ 2026-05-18 21:11:45
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Map不一致前后Action : 前:Action : AIParamControl 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 : AIMoney Tech : None CultureCardType : None 后: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 74. de7d59726317b481a6fccbac6d77ed31
|
||||
Type: UnityLogError
|
||||
Count: 298
|
||||
FirstSeen: 2026-05-17 01:24:11
|
||||
LastSeen: 2026-05-18 21:11:45
|
||||
Message: Map不一致前后Action : 前:Action : AIParamControl 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 : AIMoney Tech : None CultureCardType : None 后: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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: de7d59726317b481a6fccbac6d77ed31 UnityLogError 异常消息Map不一致前后Action : 前:Action : AIParamControl 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 : AIMoney Tech : None CultureCardType : None 后: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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-17 01:24:11 ~ 2026-05-18 21:11:45 添加标签 2026-05-18 21:11:45 298 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/de7d59726317b481a6fccbac6d77ed31?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 58addfad2d99940263ca4e9daa7dd320
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/58addfad2d99940263ca4e9daa7dd320?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 297
|
||||
- 首次/最近: 2026-04-14 23:19:15 ~ 2026-05-19 11:47:15
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 : Roads PlayerAction : None AIParam : AllClear Tech : Roads CultureCardType : None 重复次数 :7
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 75. 58addfad2d99940263ca4e9daa7dd320
|
||||
Type: UnityLogError
|
||||
Count: 297
|
||||
FirstSeen: 2026-04-14 23:19:15
|
||||
LastSeen: 2026-05-19 11:47:15
|
||||
Message: 存在相似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 : Roads PlayerAction : None AIParam : AllClear Tech : Roads CultureCardType : None 重复次数 :7
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 58addfad2d99940263ca4e9daa7dd320 UnityLogError 异常消息存在相似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 : Roads PlayerAction : None AIParam : AllClear Tech : Roads CultureCardType : None 重复次数 :7 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-14 23:19:15 ~ 2026-05-19 11:47:15 添加标签 2026-05-19 11:47:15 297 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/58addfad2d99940263ca4e9daa7dd320?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 61862032573b95eb42fbc6f4b8682cba
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/61862032573b95eb42fbc6f4b8682cba?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 下一玩家推进失败
|
||||
- 发生次数: 296
|
||||
- 首次/最近: 2026-04-11 16:56:33 ~ 2026-05-19 10:44:33
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UpdateNextPlayer Error : PlayerDataList Alive Count = 0!!!
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 76. 61862032573b95eb42fbc6f4b8682cba
|
||||
Type: UnityLogError
|
||||
Count: 296
|
||||
FirstSeen: 2026-04-11 16:56:33
|
||||
LastSeen: 2026-05-19 10:44:33
|
||||
Message: UpdateNextPlayer Error : PlayerDataList Alive Count = 0!!!
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 61862032573b95eb42fbc6f4b8682cba UnityLogError 异常消息UpdateNextPlayer Error : PlayerDataList Alive Count = 0!!! 关键堆栈UnityEngine.Debug.LogError(Object) 2026-04-11 16:56:33 ~ 2026-05-19 10:44:33 添加标签 2026-05-19 10:44:33 296 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/61862032573b95eb42fbc6f4b8682cba?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2017 - 玩家列表为空检查
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2085 - Alive Count 为 0
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 回合推进阻断,通常会表现为卡回合。
|
||||
|
||||
原因: `MapData.UpdateNextPlayer` 找不到可用玩家或玩家列表为空。可能由投降/死亡/结算顺序导致全部玩家被判定非 Alive。
|
||||
|
||||
## 建议
|
||||
|
||||
回查玩家死亡/投降/结算后 `IsPlaying/Alive` 状态;在切换玩家前处理游戏结束分支。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 39478df0f48376babd44b63a445e8e4c
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/39478df0f48376babd44b63a445e8e4c?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: ForceUpdate/断线重连恢复
|
||||
- 发生次数: 276
|
||||
- 首次/最近: 2026-05-16 20:54:34 ~ 2026-05-19 02:30:03
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 触发断线重连, 触发原因: Leaved
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 77. 39478df0f48376babd44b63a445e8e4c
|
||||
Type: UnityLogError
|
||||
Count: 276
|
||||
FirstSeen: 2026-05-16 20:54:34
|
||||
LastSeen: 2026-05-19 02:30:03
|
||||
Message: 触发断线重连, 触发原因: Leaved
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 39478df0f48376babd44b63a445e8e4c UnityLogError 异常消息触发断线重连, 触发原因: Leaved 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:54:34 ~ 2026-05-19 02:30:03 添加标签 2026-05-19 02:30:03 276 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/39478df0f48376babd44b63a445e8e4c?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:264 - ForceUpdate 接收
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:291 - 触发断线重连日志
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - 差异比较日志
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 玩家进入强制同步恢复状态,若恢复失败会回到前一状态或继续异常。
|
||||
|
||||
原因: 成员状态不是 OK 或主动请求恢复后,`OnReceivedForceUpdate` 记录触发原因并尝试 `NetResumeMatch`。详情中空消息问题来自 `MapData.FindDifferences` 输出了空字符串,说明恢复链路在比较/日志阶段也可能缺失有效差异文本。
|
||||
|
||||
## 建议
|
||||
|
||||
补强 `FindDifferences` 空差异时的日志;`NetResumeMatch` 前后保存/恢复状态,确保恢复失败不会半切换到 ForceUpdating。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - a2760c663bb0fe0ac80ae83537b98ecf
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a2760c663bb0fe0ac80ae83537b98ecf?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: Action 执行玩家不一致 (TurnEnd)
|
||||
- 发生次数: 254
|
||||
- 首次/最近: 2026-05-16 21:17:19 ~ 2026-05-19 01:12: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 78. a2760c663bb0fe0ac80ae83537b98ecf
|
||||
Type: UnityLogError
|
||||
Count: 254
|
||||
FirstSeen: 2026-05-16 21:17:19
|
||||
LastSeen: 2026-05-19 01:12:22
|
||||
Message: 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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: a2760c663bb0fe0ac80ae83537b98ecf UnityLogError 异常消息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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 21:17:19 ~ 2026-05-19 01:12:22 添加标签 2026-05-19 01:12:22 254 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/a2760c663bb0fe0ac80ae83537b98ecf?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1105 - CompleteExecute 玩家一致性检查
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:240 - AI 最终执行 action
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:142 - 网络 action 执行入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 对应 action 被拦截不执行;如果发生在 AI 或同步链路,会造成卡回合或双方状态分叉。
|
||||
|
||||
原因: `ActionLogicBase.CompleteExecute` 要求 `actionParams.PlayerId` 等于 `MapData.CurPlayer.Id`。这里 action 的归属玩家与当前回合玩家不同,函数直接返回 false。常见来源是 AI/网络/回放参数刷新到错误 MapData,或 UI 缓存了上一回合 action。
|
||||
|
||||
## 建议
|
||||
|
||||
回查该 action 的构参处,确保 `CommonActionParams.MapData`、`PlayerData`、`PlayerId` 在执行前调用 `RefreshParams/OnParamChanged` 并跟随当前回合。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - 211f7e716d7387f0652078dbe19d3082
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/211f7e716d7387f0652078dbe19d3082?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: AI 行为循环/重复 action
|
||||
- 发生次数: 243
|
||||
- 首次/最近: 2026-05-15 02:57:01 ~ 2026-05-19 11:35:22
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 存在相似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 重复次数 :7
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 79. 211f7e716d7387f0652078dbe19d3082
|
||||
Type: UnityLogError
|
||||
Count: 243
|
||||
FirstSeen: 2026-05-15 02:57:01
|
||||
LastSeen: 2026-05-19 11:35:22
|
||||
Message: 存在相似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 重复次数 :7
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 211f7e716d7387f0652078dbe19d3082 UnityLogError 异常消息存在相似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 重复次数 :7 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-15 02:57:01 ~ 2026-05-19 11:35:22 添加标签 2026-05-19 11:35:22 243 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/211f7e716d7387f0652078dbe19d3082?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:521 - AI 策略循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:160 - BT 行为树循环保护
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:216 - 重复 action 检测
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: AI 回合可能变慢、提前结束或重复无效行为,玩家感知为卡回合/AI 不行动。
|
||||
|
||||
原因: AI 行为树或策略计算超过保护阈值,或连续选择相同 action 超过次数。当前代码会打日志并 break/继续,但说明 AI 没能收敛到有效下一步。
|
||||
|
||||
## 建议
|
||||
|
||||
用记录点 `BTNodeId` 和 action 类型回查对应 BT 节点的退出条件;重复 action 要检查执行后是否真正改变了评分输入。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 4443050357137e5c5a729388bb744a81
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4443050357137e5c5a729388bb744a81?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 240
|
||||
- 首次/最近: 2025-12-28 20:57:27 ~ 2026-05-19 12:18:07
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 80. 4443050357137e5c5a729388bb744a81
|
||||
Type: UnityLogError
|
||||
Count: 240
|
||||
FirstSeen: 2025-12-28 20:57:27
|
||||
LastSeen: 2026-05-19 12:18:07
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 4443050357137e5c5a729388bb744a81 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2025-12-28 20:57:27 ~ 2026-05-19 12:18:07 添加标签 2026-05-19 12:18:07 240 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/4443050357137e5c5a729388bb744a81?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - a7baf4df12ebc294b3f9583d6123dd55
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a7baf4df12ebc294b3f9583d6123dd55?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 239
|
||||
- 首次/最近: 2025-10-27 03:37:27 ~ 2026-05-19 12:16:50
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 81. a7baf4df12ebc294b3f9583d6123dd55
|
||||
Type: UnityLogError
|
||||
Count: 239
|
||||
FirstSeen: 2025-10-27 03:37:27
|
||||
LastSeen: 2026-05-19 12:16:50
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: a7baf4df12ebc294b3f9583d6123dd55 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2025-10-27 03:37:27 ~ 2026-05-19 12:16:50 添加标签 2026-05-19 12:16:50 239 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/a7baf4df12ebc294b3f9583d6123dd55?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 0ee2d8a9dbb1819612667297fb55fdde
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0ee2d8a9dbb1819612667297fb55fdde?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 238
|
||||
- 首次/最近: 2026-05-15 18:11:20 ~ 2026-05-18 17:28:31
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 82. 0ee2d8a9dbb1819612667297fb55fdde
|
||||
Type: UnityLogError
|
||||
Count: 238
|
||||
FirstSeen: 2026-05-15 18:11:20
|
||||
LastSeen: 2026-05-18 17:28:31
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 0ee2d8a9dbb1819612667297fb55fdde UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-15 18:11:20 ~ 2026-05-18 17:28:31 添加标签 2026-05-18 17:28:31 238 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/0ee2d8a9dbb1819612667297fb55fdde?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - 611e22aa68a0a2059a21f187f2a75dbb
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/611e22aa68a0a2059a21f187f2a75dbb?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 236
|
||||
- 首次/最近: 2025-10-28 13:19:59 ~ 2026-05-19 12:18:51
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 83. 611e22aa68a0a2059a21f187f2a75dbb
|
||||
Type: UnityLogError
|
||||
Count: 236
|
||||
FirstSeen: 2025-10-28 13:19:59
|
||||
LastSeen: 2026-05-19 12:18:51
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: 611e22aa68a0a2059a21f187f2a75dbb UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2025-10-28 13:19:59 ~ 2026-05-19 12:18:51 添加标签 2026-05-19 12:18:51 236 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/611e22aa68a0a2059a21f187f2a75dbb?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - c8b4f6eca8d3db9fcea40a831affbfaa
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c8b4f6eca8d3db9fcea40a831affbfaa?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 235
|
||||
- 首次/最近: 2026-05-16 20:50:42 ~ 2026-05-19 07:37:14
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 84. c8b4f6eca8d3db9fcea40a831affbfaa
|
||||
Type: UnityLogError
|
||||
Count: 235
|
||||
FirstSeen: 2026-05-16 20:50:42
|
||||
LastSeen: 2026-05-19 07:37:14
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: c8b4f6eca8d3db9fcea40a831affbfaa UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 20:50:42 ~ 2026-05-19 07:37:14 添加标签 2026-05-19 07:37:14 235 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/c8b4f6eca8d3db9fcea40a831affbfaa?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,47 @@
|
||||
# CrashSight 阻断报告 - ae6b1dc5b5ae5d5842a3d642cb911962
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ae6b1dc5b5ae5d5842a3d642cb911962?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 单位防御计算缺少格子或玩家映射
|
||||
- 发生次数: 229
|
||||
- 首次/最近: 2026-05-16 22:01:40 ~ 2026-05-19 11:14:56
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 85. ae6b1dc5b5ae5d5842a3d642cb911962
|
||||
Type: UnityLogError
|
||||
Count: 229
|
||||
FirstSeen: 2026-05-16 22:01:40
|
||||
LastSeen: 2026-05-19 11:14:56
|
||||
Message: UnitData GetExtraDefense Cant find grid or player by uid
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: ae6b1dc5b5ae5d5842a3d642cb911962 UnityLogError 异常消息UnitData GetExtraDefense Cant find grid or player by uid 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 22:01:40 ~ 2026-05-19 11:14:56 添加标签 2026-05-19 11:14:56 229 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/ae6b1dc5b5ae5d5842a3d642cb911962?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/UnitData.cs:1019 - 防御倍率计算
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:1108 - 单位创建会写 UnitToGrid/UnitToCity
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 防御计算降级,继续扩大可能影响战斗结算和显示。
|
||||
|
||||
原因: `GetTerrainDefenseMultiplicationParam` 找不到单位所在格或单位所属玩家,返回默认防御并记录错误。数据层的 `UnitToGridDict/UnitToCityDict/PlayerMap` 至少有一处不一致。
|
||||
|
||||
## 建议
|
||||
|
||||
在单位移动、死亡、复活、生成后检查 Unit/Grid/Player 三张索引同步;这里虽然返回默认值,但应按数据完整性错误追。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - fbf21ccc1d02dc5a2747abfea8a1a04a
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fbf21ccc1d02dc5a2747abfea8a1a04a?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: 多人地图/Action 同步不一致
|
||||
- 发生次数: 227
|
||||
- 首次/最近: 2026-05-18 22:19:21 ~ 2026-05-19 07:10:38
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: Map不一致前后Action : 前:Action : AIParamControl 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 : AIMoney Tech : None CultureCardType : None 后: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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 86. fbf21ccc1d02dc5a2747abfea8a1a04a
|
||||
Type: UnityLogError
|
||||
Count: 227
|
||||
FirstSeen: 2026-05-18 22:19:21
|
||||
LastSeen: 2026-05-19 07:10:38
|
||||
Message: Map不一致前后Action : 前:Action : AIParamControl 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 : AIMoney Tech : None CultureCardType : None 后: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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: fbf21ccc1d02dc5a2747abfea8a1a04a UnityLogError 异常消息Map不一致前后Action : 前:Action : AIParamControl 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 : AIMoney Tech : None CultureCardType : None 后: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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-18 22:19:21 ~ 2026-05-19 07:10:38 添加标签 2026-05-19 07:10:38 227 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/fbf21ccc1d02dc5a2747abfea8a1a04a?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。
|
||||
|
||||
原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。`MapData.FindDifferences` 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。
|
||||
|
||||
## 建议
|
||||
|
||||
按报告中的“前/后 Action”回查该 action 的 `Execute` 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段;ForceUpdate 应保持原子恢复。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
@ -0,0 +1,48 @@
|
||||
# CrashSight 阻断报告 - e8064f7882367cdf42fcff64bcfbaab0
|
||||
|
||||
- 筛选范围: 0.7.1k / 0.7.1j / 0.7.1i,最近一天,ERROR,status=0/2
|
||||
- CrashSight: https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e8064f7882367cdf42fcff64bcfbaab0?pid=10
|
||||
- 异常类型: UnityLogError
|
||||
- 阻断族: Action 执行玩家不一致 (TurnEnd)
|
||||
- 发生次数: 222
|
||||
- 首次/最近: 2026-05-16 14:22:10 ~ 2026-05-19 11:37:06
|
||||
|
||||
## 原始异常
|
||||
|
||||
异常消息: 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
|
||||
|
||||
关键堆栈: UnityEngine.Debug.LogError(Object)
|
||||
|
||||
## 反混淆结果
|
||||
|
||||
```text
|
||||
## 87. e8064f7882367cdf42fcff64bcfbaab0
|
||||
Type: UnityLogError
|
||||
Count: 222
|
||||
FirstSeen: 2026-05-16 14:22:10
|
||||
LastSeen: 2026-05-19 11:37:06
|
||||
Message: 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
|
||||
KeyStack: UnityEngine.Debug.LogError(Object)
|
||||
RawText: e8064f7882367cdf42fcff64bcfbaab0 UnityLogError 异常消息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 关键堆栈UnityEngine.Debug.LogError(Object) 2026-05-16 14:22:10 ~ 2026-05-19 11:37:06 添加标签 2026-05-19 11:37:06 222 - 状态变更 创建缺陷单
|
||||
Href: /crash-reporting/errors/01076c49ce/e8064f7882367cdf42fcff64bcfbaab0?pid=10
|
||||
```
|
||||
|
||||
## 代码定位
|
||||
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1105 - CompleteExecute 玩家一致性检查
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:240 - AI 最终执行 action
|
||||
- F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:142 - 网络 action 执行入口
|
||||
|
||||
## 触发原因与阻断判断
|
||||
|
||||
判断: 对应 action 被拦截不执行;如果发生在 AI 或同步链路,会造成卡回合或双方状态分叉。
|
||||
|
||||
原因: `ActionLogicBase.CompleteExecute` 要求 `actionParams.PlayerId` 等于 `MapData.CurPlayer.Id`。这里 action 的归属玩家与当前回合玩家不同,函数直接返回 false。常见来源是 AI/网络/回放参数刷新到错误 MapData,或 UI 缓存了上一回合 action。
|
||||
|
||||
## 建议
|
||||
|
||||
回查该 action 的构参处,确保 `CommonActionParams.MapData`、`PlayerData`、`PlayerId` 在执行前调用 `RefreshParams/OnParamChanged` 并跟随当前回合。
|
||||
|
||||
## 备注
|
||||
|
||||
反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user