diff --git a/.codex/skills/th1-ios-migration/SKILL.md b/.codex/skills/th1-ios-migration/SKILL.md new file mode 100644 index 000000000..2bd9617ed --- /dev/null +++ b/.codex/skills/th1-ios-migration/SKILL.md @@ -0,0 +1,244 @@ +--- +name: th1-ios-migration +description: "TH1 project-specific iOS migration guide for same-mainline dual-platform support: HybridCLR hot update foundation, iOS/IL2CPP compile isolation, Steamworks/Steam SDK platform abstraction without Steam regressions, touch input adaptation, YooAsset AssetBundle/resource migration, iOS build settings, and verification that existing online Steam builds and gameplay behavior remain unaffected. Use whenever Codex works on TH1 iOS packaging, mobile porting, HybridCLR, YooAsset AB/resource loading, removing direct Steamworks references for iOS, platform services, touch controls, or build pipeline changes that must preserve the current Steam version." +--- + +# TH1 iOS Migration + +## Core Rule + +TH1 iOS migration is same-mainline dual-platform work. Do not create a long-lived Steam code line and a separate mobile code line. + +Every change must preserve the existing Steam build and gameplay behavior while adding iOS support through platform-specific implementations, build defines, asmdef/platform settings, and no-op/mobile services. + +Default target shape: + +- Shared gameplay, action logic, AI, `MapData`, config, save data, and localization stay common. +- Steam SDK, Steam lobby/P2P, Workshop, Steam auth, and Steam-specific UI live behind Steam-only platform boundaries. +- iOS gets IL2CPP/AOT-compatible code, mobile/no-op platform services, touch input, and platform-specific resources. +- Steam and iOS may have separate build profiles, resource bundles, and release branches, but not divergent business logic. + +## First Reads + +Read the relevant files before editing: + +- `MD/GameMDFramework/00-主文档-游戏架构总览.md` +- `MD/GameMDFramework/11-网络与Steam.md` +- `MD/GameMDFramework/13-配置与数据资产.md` +- `Unity/Packages/manifest.json` +- `Unity/ProjectSettings/ProjectSettings.asset` +- `Unity/Assets/Scripts/TH1_Logic/Core/Main.cs` +- `Unity/Assets/Scripts/TH1_Logic/Net/ILobby.cs` +- `Unity/Assets/Scripts/TH1_Logic/Net/LobbyManager.cs` +- `Unity/Assets/Scripts/TH1_Logic/Steam/SteamLobbyManager.cs` +- `Unity/Assets/com.rlabrecque.steamworks.net/Runtime/com.rlabrecque.steamworks.net.asmdef` +- `Unity/Assets/Scripts/TH1_Logic/Input/InputLogic.cs` +- `Unity/Assets/Scripts/TH1_UI/CameraController.cs` +- `Unity/Assets/Scripts/TH1_UI/View/Base/View.cs` +- `Unity/Assets/Scripts/TH1_Logic/Rersource/ResourceManager.cs` +- `Unity/Assets/AssetBundleCollectorSetting.asset` +- `Unity/Assets/Scripts/TH1_Resource/ResourceCache.cs` +- `Unity/Assets/Scripts/TH1_Logic/Config/ConfigManager.cs` + +Also use: + +- `th1-network-sync` when touching lobby, P2P, `GameNetSender`, `GameNetReceiver`, `NetData`, action sync, reconnect, or multiplayer start/resume. +- `th1-action-logic` when changing authoritative gameplay, action execution, AI action flow, replay, or deterministic behavior. +- `th1-multilingual` when changing Workshop/local mod language loading or localization resources. +- `th1-server-backend` when replacing Steam auth, STS, OSS upload, bug report upload, or backend identity. + +## Migration Order + +Use this order unless the user explicitly changes it: + +1. Add HybridCLR foundation. +2. Clean iOS compile isolation and Steam platform boundaries. +3. Add touch/mobile input adaptation. +4. Migrate resources to YooAsset AssetBundle flow. +5. Add automated Steam/iOS build and hot-update packaging verification. + +Do not use AB/YooAsset migration as a way to hide platform compile errors. iOS compile isolation must become clean before large resource replacement. + +## Phase 0: Baseline And Steam Parity Contract + +Before editing: + +- Run `git status --short` and preserve unrelated user changes. +- Search direct platform dependencies with `rg -n "using Steamworks|SteamUser|SteamFriends|SteamUtils|SteamUGC|SteamAPI|SteamManager|TH1_Logic\\.Steam|UNITY_IOS|STEAM_CHANNEL|Resources\\.Load|Input\\.Get|mousePosition|safeArea" Unity/Assets/Scripts`. +- Identify whether the change is platform boundary, hotfix assembly layout, touch input, resource loading, backend auth, or build settings. +- Write down which Steam behavior must remain identical: lobby, P2P, Workshop, achievements, bug report upload, OSS collect upload, config/save, UI visibility, and multiplayer action sync. + +Steam parity rules: + +- Do not delete Steamworks.NET or Steam-specific scripts as part of iOS migration. +- Do not remove `STEAM_CHANNEL` behavior for Standalone. +- Do not change multiplayer state machines unless the task is explicitly network work and `th1-network-sync` is active. +- Do not move authoritative action logic into hotfix assemblies unless the user explicitly accepts the extra deterministic and replay risk. +- Do not modify obfuscation, MemoryPack compatibility, or generated config outputs without repeated explicit confirmation from the user. + +## Phase 1: HybridCLR Foundation + +Goal: create a hot-update pipeline without changing Steam gameplay. + +Preferred first scope: + +- Add HybridCLR package/config/build steps. +- Create hotfix assembly boundaries such as `TH1.Hotfix` only after deciding what belongs there. +- Keep authoritative turn/action/AI/network contracts in AOT main assemblies at first. +- Put low-risk UI, presentation helpers, non-networked bug fixes, or feature flags into hotfix first. +- Generate and commit required AOT metadata/link preservation files only through the documented HybridCLR workflow. +- Ensure the Steam build can still run without downloading any hotfix package when using local/editor mode. + +iOS constraints: + +- iOS is IL2CPP/AOT. Assume reflection, generic sharing, MemoryPack formatters, and dynamically referenced types can be stripped unless preserved. +- Treat code hot update on iOS as sensitive. Do not present it as a way to bypass App Store review. Prefer resources/configs for content updates and use code hotfix cautiously. +- Keep a rollback path: base app version, hotfix manifest version, minimum compatible app version, and ability to ignore bad hotfix packages. + +Checks: + +- Steam Standalone compile still succeeds. +- iOS IL2CPP compile reaches the next real blocker. +- Hotfix assembly does not reference Steamworks or editor-only assemblies. +- `link.xml`/preserve additions are minimal and justified. + +## Phase 2: iOS Compile Isolation And Steam Boundary + +Goal: iOS compiles without Steamworks types while Steam keeps full behavior. + +Preferred pattern: + +- Move platform-neutral DTOs out of `TH1_Logic.Steam` into `TH1_Logic.Net` or a platform-neutral namespace before sharing them through `ILobby`. +- Make `ILobby` and shared UI/data contracts free of `Steamworks` types. +- Keep `SteamLobbyManager`, `SimpleP2P`, `GameNetSender`, `GameNetReceiver`, Workshop browser/uploader, and Steam auth under Steam-only compile/platform boundaries. +- Add mobile/no-op implementations for services iOS cannot use yet. +- Hide or disable unsupported iOS UI entries instead of leaving clickable failing paths. + +Use platform services for direct SDK access: + +- `IPlatformUser`: user id, display name, login state. +- `IPlatformLobby`/existing `ILobby`: lobby/multiplayer operations. +- `IPlatformAchievement`: local/Steam/Game Center achievements. +- `IPlatformWorkshop` or local mod service: Workshop and local mod separation. +- `IPlatformAuth`: Steam ticket, Game Center/apple/backend/anonymous auth. +- `IPlatformBackendUpload`: OSS/bug report/collect upload routing. + +Compile guard guidance: + +- Prefer asmdef include platforms and service implementations over scattered `#if`. +- Use `#if STEAM_CHANNEL || UNITY_STANDALONE` only around Steam-specific code, not around shared gameplay. +- Do not make `UNITY_EDITOR` automatically mean Steam behavior if that blocks iOS simulation or mobile service testing in editor. +- Keep editor-only tooling under editor asmdefs or `#if UNITY_EDITOR`. + +Checks: + +- `rg -n "using Steamworks|SteamUser|SteamFriends|SteamUtils|SteamUGC|SteamAPI|SteamManager" Unity/Assets/Scripts -g '!Steamworks.NET/**'` should show only Steam-only files or files guarded out of iOS. +- `LobbyManager` selects Steam for Steam builds and no-op/mobile for iOS. +- iOS build does not compile against the Steamworks.NET asmdef. +- Steam multiplayer, Workshop, and Steam upload paths are unchanged or covered by explicit parity tests. + +## Phase 3: Touch And Mobile Input + +Goal: single-player iOS is playable without keyboard/mouse. + +Touch work is a UX layer, not a gameplay mutation layer: + +- Do not bypass action construction or `CheckCan`/`CompleteExecute`. +- Convert tap/drag/pinch/cancel/confirm into the same input/action intentions used by existing UI and `InputLogic`. +- Keep keyboard/mouse shortcuts working on Steam. +- Add touch-specific affordances when keyboard shortcuts previously exposed required commands. + +Minimum iOS control coverage: + +- Tap grid/unit/city selection. +- Tap action buttons and confirm/cancel flows. +- Drag camera. +- Pinch zoom replacing mouse wheel. +- Long press or explicit UI button for right-click/cancel-equivalent actions. +- Safe area handling for top/bottom UI. +- ScrollRect feel and button target size on touch. + +Checks: + +- Single-player start, select civ/force, generate map, move unit, attack, build/train, end turn, save/load, and finish game remain possible on touch. +- Steam keyboard/mouse behavior is not removed. +- UI text and buttons fit common iPhone and iPad aspect ratios. + +## Phase 4: YooAsset AssetBundle Flow + +Goal: move toward AB/resource hot update without destabilizing the Steam build. + +Use the existing YooAsset package and `AssetBundleCollectorSetting.asset` unless there is a clear reason not to. + +Recommended sequence: + +1. Finish a real `ResourceManager` wrapper around YooAsset package initialization. +2. Start with `OfflinePlayMode` so resources are packaged with the app. +3. Add platform-specific package build output: Standalone and iOS must produce separate bundles. +4. Move high-value resource groups first: UI prefabs, common sprites, audio, config data assets, large visual assets. +5. Replace `Resources.Load` through local resource/cache entrypoints, not scattered direct YooAsset calls. +6. Only after Offline is stable, add `HostPlayMode` for CDN/OSS remote resource update. + +Resource rules: + +- Keep stable logical addresses. Do not make gameplay code depend on platform-specific paths. +- Do not modify export-flow outputs such as `Unity/Assets/Resources/Export/*`, `Tools/Multilingual.xlsx`, or `Tools/MultilingualTxt.txt` unless the user asked for export/import changes. +- Use iOS-specific texture/audio compression settings and bundle output. Do not reuse PC texture assumptions blindly. +- Treat generated config/DataAsset loading as compatibility-sensitive; preserve existing table and localization behavior. + +Checks: + +- Steam package can still load existing resources in editor and standalone. +- iOS package uses iOS bundles and does not load PC-only bundle variants. +- Missing asset failures are logged with package/address/platform. +- No synchronous remote download is required during deterministic action execution. + +## Phase 5: Build Pipeline And Release Discipline + +Maintain one main branch with separate build profiles: + +- Steam build: Standalone, `STEAM_CHANNEL`, Steamworks.NET, Steam lobby/P2P, Workshop, Steam auth/upload. +- iOS build: iOS, IL2CPP, mobile platform services, no Steamworks compile dependency, touch enabled, iOS bundles. +- Hot update build: platform-specific HybridCLR DLL/AOT metadata and YooAsset manifests. + +Release branches may exist for stabilization only: + +- `release/steam-*` and `release/ios-*` may freeze and cherry-pick fixes. +- All durable business logic fixes should return to the shared mainline. +- Avoid copy-pasted Steam/mobile variants of gameplay classes. + +## Verification + +For ordinary C# changes run: + +```powershell +dotnet build Unity/Assembly-CSharp.csproj --no-restore +``` + +For editor/build pipeline/resource tooling changes also run: + +```powershell +dotnet build Unity/Assembly-CSharp-Editor.csproj --no-restore +``` + +Also verify the relevant Unity builds when possible: + +- Steam Editor/Standalone smoke test. +- iOS switch-platform compile or Xcode export. +- HybridCLR generate/compile hotfix artifacts. +- YooAsset build for the touched package/platform. + +Manual smoke checklist: + +- Steam: start game, create/join lobby if network touched, Workshop/mod page if Workshop touched, bug report/upload if backend touched. +- iOS/mobile: launch, start single-player, touch select/move/action/end turn, save/load, rotate/aspect/safe area check. +- Shared: config load/save, localization, achievements/local progress, no hardcoded game-facing text added. + +## Stop Conditions + +Stop and ask before continuing if: + +- A change would require editing MemoryPack serialization compatibility, obfuscation config, generated config outputs, or Steam backend auth contracts. +- The only easy path is duplicating gameplay code between Steam and iOS. +- iOS support would require removing or weakening existing Steam multiplayer guarantees. +- A hotfix assembly needs to own authoritative action/network/replay logic before the migration baseline is stable. diff --git a/.codex/skills/th1-ios-migration/agents/openai.yaml b/.codex/skills/th1-ios-migration/agents/openai.yaml new file mode 100644 index 000000000..519298185 --- /dev/null +++ b/.codex/skills/th1-ios-migration/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "TH1 iOS Migration" + short_description: "HybridCLR, iOS isolation, touch, YooAsset" + default_prompt: "Use $th1-ios-migration when making TH1 iOS migration changes that must keep the Steam build and existing gameplay behavior intact." diff --git a/MD/CrashSight_2026-06-09_0.7.3e_1day/index.md b/MD/CrashSight_2026-06-09_0.7.3e_1day/index.md new file mode 100644 index 000000000..492f31793 --- /dev/null +++ b/MD/CrashSight_2026-06-09_0.7.3e_1day/index.md @@ -0,0 +1,34 @@ +# CrashSight 0.7.3e 最近一天 ERROR 分析 + +- 捕获时间:2026-06-09 10:58:01 +- 筛选范围:`0.7.3e`,`last_1_day`,ERROR,未处理/处理中 +- CrashSight numFound:23 +- 去重 Issue:23 +- blocking:0 个 Issue,0 次 +- logerror:23 个 Issue,51 次 +- 原始数据:`Temp\CrashSight\Daily_2026-06-09_0.7.3e` + +## 阻断家族 + +未发现包含真实异常对象/栈的 blocking Issue。 + +## 非阻断高频 + +| 类别 | Issue 数 | 次数 | +|---|---:|---:| +| P2P/大厅连接失败诊断 | 2 | 22 | +| 多语言 ID 为空 | 2 | 6 | +| 网络发送失败诊断 | 6 | 6 | +| AI 计算死循环保护 | 2 | 4 | +| STS/OSS 上传失败诊断 | 2 | 4 | +| 其他项目诊断日志 | 4 | 4 | +| 相似 Action 重复诊断 | 4 | 4 | +| 受击生命周期格子为空诊断 | 1 | 1 | + +## 报告 + +- [LogError Summary](logerror_summary.md) + +## 说明 + +blocking 的判定只认真实异常类型、异常对象或调用栈;纯 `LogSystem.LogError` 业务状态诊断归入 logerror。 diff --git a/MD/CrashSight_2026-06-09_0.7.3e_1day/logerror_summary.md b/MD/CrashSight_2026-06-09_0.7.3e_1day/logerror_summary.md new file mode 100644 index 000000000..97d7b2149 --- /dev/null +++ b/MD/CrashSight_2026-06-09_0.7.3e_1day/logerror_summary.md @@ -0,0 +1,47 @@ +# LogError Summary + +- 筛选范围:`0.7.3e`,`last_1_day`,ERROR,status `0,2` +- 捕获时间:2026-06-09 10:58:01 +- 非阻断 Issue:23 +- 非阻断次数:51 + +## 分类汇总 + +| 类别 | Issue 数 | 次数 | 设备数 | 代码位置 | 示例 Issue | +|---|---:|---:|---:|---|---| +| P2P/大厅连接失败诊断 | 2 | 22 | 8 | Unity/Assets/Scripts\TH1_Logic\Steam\SimpleP2P.cs:479: LogSystem.LogError($"Connection failed - Reason: {endReason}"); | 01eaa6aefd9162eccc930c2450a63779, 9b415b4bbb546c66eba3a6b67f916d35 | +| 多语言 ID 为空 | 2 | 6 | 6 | Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:176: LogSystem.LogError($"多语言ID为空");
Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:200: LogSystem.LogError($"多语言ID为空"); | f5d6caefc1e5ac72cd5c21a56e3dfddb, 691253c2a412f07945231dd650f58213 | +| 网络发送失败诊断 | 6 | 6 | 6 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1230: LogSystem.LogError($"ActionConfirm send failed, abort local execute: {ActionId.GetStringLog()}"); | dbce2880e5ad9287fcca2bf271f97622, 81a5e2896daabc7005cd79ae522de4bf, 2cb3d67ddfe0d9587abd02390f5de041 | +| AI 计算死循环保护 | 2 | 4 | 4 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:179: LogSystem.LogError($"死循环了,最终记录点为:{MainEditor.Instance.BTNodeId}");
Unity/Assets/Scripts\TH1_Logic\AI\AIActionBase.cs:528: LogSystem.LogError($"死循环了"); | bb81bce180d8672f500aa9f2021ec9f8, 83c5b5b46447ac4e50101f1148f4ab70 | +| STS/OSS 上传失败诊断 | 2 | 4 | 4 | Unity/Assets/Scripts\TH1_Logic\Oss\OssManager.cs:124: LogSystem.LogError($"CollectData upload failed: {ex.Message}"); | 4519111d864a8906a22e97fb6b1dafde, 93509b23a954c79d835f4138bab9f3f7 | +| 其他项目诊断日志 | 4 | 4 | 4 | 未直接定位 | dc8a0a12922d2ba2cd2b232774f909fb, 786bc4b518cd1e0cdb1e4f0b134573b8, 94c57a8beeeb7a5d974d168da2b55836 | +| 相似 Action 重复诊断 | 4 | 4 | 4 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:230: if(_sameCount > 5) LogSystem.LogError($"存在相似action ,记录点为:{MainEditor.Instance.BTNodeId} ," + | eef2a9c6d58f5454cecf029ffc2438d3, 284527635e39660c5430a3fe6170231a, f76a1c7293c1f7361bf9545b93892bdb | +| 受击生命周期格子为空诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Skill\AllSkill\SatoriSeeSkill.cs:45: LogSystem.LogError($"BeforeUnitDamaged Error selfGrid : {selfGrid}, targetGrid : {targetGrid}"); | fec6b9b264a6c8b1fa5ac0591bdf3b41 | + +## 明细 + +| Issue | 类别 | 类型 | 次数 | 设备 | 最近上报 | 消息 | +|---|---|---|---:|---:|---|---| +| [9b415b4bbb546c66eba3a6b67f916d35](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9b415b4bbb546c66eba3a6b67f916d35?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 14 | 3 | 2026-06-09 10:22:16 | 应用层拒绝连接 - 错误码: 1000,可能原因:1.对方未创建监听套接字 2.对方主动拒绝 3.对方游戏未运行 | +| [01eaa6aefd9162eccc930c2450a63779](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/01eaa6aefd9162eccc930c2450a63779?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 8 | 5 | 2026-06-09 10:35:21 | Connection failed - Reason: 1000 | +| [691253c2a412f07945231dd650f58213](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/691253c2a412f07945231dd650f58213?pid=10) | 多语言 ID 为空 | UnityLogError | 3 | 3 | 2026-06-09 08:11:36 | 多语言ID为空 | +| [bb81bce180d8672f500aa9f2021ec9f8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bb81bce180d8672f500aa9f2021ec9f8?pid=10) | AI 计算死循环保护 | UnityLogError | 3 | 3 | 2026-06-09 09:49:28 | 死循环了 | +| [f5d6caefc1e5ac72cd5c21a56e3dfddb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5d6caefc1e5ac72cd5c21a56e3dfddb?pid=10) | 多语言 ID 为空 | UnityLogError | 3 | 3 | 2026-06-09 08:11:37 | 多语言ID为空 | +| [4519111d864a8906a22e97fb6b1dafde](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4519111d864a8906a22e97fb6b1dafde?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 2 | 2 | 2026-06-09 10:27:52 | CollectData upload failed: STS request failed: HTTP/1.1 403 Forbidden | +| [93509b23a954c79d835f4138bab9f3f7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/93509b23a954c79d835f4138bab9f3f7?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 2 | 2 | 2026-06-09 10:27:50 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: Steam API 请求失败(重试 2 次): Steam API 请求超时(8000ms)"} | +| [1d2092e8267a158d39aa1a040041020d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1d2092e8267a158d39aa1a040041020d?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-09 10:27:06 | P2P broadcast preflight failed: target=76561199140125537, reason=No connection to 76561199140125537 | +| [284527635e39660c5430a3fe6170231a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/284527635e39660c5430a3fe6170231a?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-09 10:22:07 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : Aquatism PlayerAction : None AIParam : AllClear Tech : Aquatism CultureCardType : None 重复次数 :6 | +| [2cb3d67ddfe0d9587abd02390f5de041](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2cb3d67ddfe0d9587abd02390f5de041?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-09 10:27:09 | ij: 房主广播失败 | +| [4628d34f3d350cc5201a4b0061d92890](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4628d34f3d350cc5201a4b0061d92890?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-09 09:47:47 | epn: 发送给房主失败 | +| [4b42e043c64194e31205b4fa1a9b4d2d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4b42e043c64194e31205b4fa1a9b4d2d?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-09 02:19:12 | 存在相似action ,记录点为:743 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : KomeijiIndianNavigation PlayerAction : None AIParam : AllClear Tech : KomeijiIndianNavigation CultureCar… | +| [786bc4b518cd1e0cdb1e4f0b134573b8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/786bc4b518cd1e0cdb1e4f0b134573b8?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-09 03:45:07 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=3718009707, ActionIndex=753, DataUnits=10, RenderUnits=11, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[752]: Version=752, MapHash=b3c222fb7630a79e12bd026e1acc5c2a Action : UnitAttackAlly Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : … | +| [81a5e2896daabc7005cd79ae522de4bf](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/81a5e2896daabc7005cd79ae522de4bf?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-09 10:27:13 | P2P broadcast preflight failed: target=76561199481856121, reason=Target is not a lobby peer: 76561199481856121 | +| [83c5b5b46447ac4e50101f1148f4ab70](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/83c5b5b46447ac4e50101f1148f4ab70?pid=10) | AI 计算死循环保护 | UnityLogError | 1 | 1 | 2026-06-09 07:18:07 | 死循环了,最终记录点为:194 | +| [94c57a8beeeb7a5d974d168da2b55836](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/94c57a8beeeb7a5d974d168da2b55836?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-09 02:16:47 | AddUnitData blocked: target grid occupied. gid=29, cid=132, newUnit=Warrior/None/0, existingUnitId=134, existingUnit=Giant/IndianKoishi/1, mapId=1420962692 | +| [9710b2a3ce8de361e2e1d64f357e1c53](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/9710b2a3ce8de361e2e1d64f357e1c53?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-09 09:47:46 | P2P message send failed: target=76561198078001233, reason=Connection to 76561198078001233 is not active for queueing. State: k_ESteamNetworkingConnectionState_ClosedByPeer, bytes: 36 | +| [a4a999b4713d79384b69e705f9ea432b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a4a999b4713d79384b69e705f9ea432b?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-09 01:46:19 | 房间人数超过玩家槽位数量: member=76561199140125537, playerCount=4 | +| [dbce2880e5ad9287fcca2bf271f97622](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dbce2880e5ad9287fcca2bf271f97622?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-09 10:27:15 | ij: 房主广播失败 | +| [dc8a0a12922d2ba2cd2b232774f909fb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dc8a0a12922d2ba2cd2b232774f909fb?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-09 10:31:15 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=3469557537, ActionIndex=478, DataUnits=41, RenderUnits=42, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[477]: Version=477, MapHash=d4f1de5674640aa2ed385ef3664e40fe Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None… | +| [eef2a9c6d58f5454cecf029ffc2438d3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/eef2a9c6d58f5454cecf029ffc2438d3?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-09 10:28:57 | 存在相似action ,记录点为:716 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : Strategy PlayerAction : None AIParam : AllClear Tech : Strategy CultureCardType : None 重复次数 :7 | +| [f76a1c7293c1f7361bf9545b93892bdb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f76a1c7293c1f7361bf9545b93892bdb?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-09 05:35:33 | 存在相似action ,记录点为:756 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : KanakoChivalry PlayerAction : None AIParam : AllClear Tech : KanakoChivalry CultureCardType : None 重复次数 … | +| [fec6b9b264a6c8b1fa5ac0591bdf3b41](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fec6b9b264a6c8b1fa5ac0591bdf3b41?pid=10) | 受击生命周期格子为空诊断 | UnityLogError | 1 | 1 | 2026-06-09 03:01:26 | BeforeUnitDamaged Error selfGrid : bsr, targetGrid : | diff --git a/MD/CrashSight_2026-06-09_0.7.3e_1day/report_manifest.json b/MD/CrashSight_2026-06-09_0.7.3e_1day/report_manifest.json new file mode 100644 index 000000000..20d1dcf9a --- /dev/null +++ b/MD/CrashSight_2026-06-09_0.7.3e_1day/report_manifest.json @@ -0,0 +1,122 @@ +{ + "date": "2026-06-09", + "version": "0.7.3e", + "capture": { + "capturedAtUtc": "2026-06-09T02:58:01+00:00", + "capturedAtLocal": "2026-06-09 10:58:01", + "rawDir": "Temp\\CrashSight\\Daily_2026-06-09_0.7.3e", + "reportDir": "MD\\CrashSight_2026-06-09_0.7.3e_1day" + }, + "filter": { + "version": "0.7.3e", + "date": "last_1_day", + "status": "0,2", + "exceptionCategoryList": "ERROR", + "sortField": "uploadTime", + "sortOrder": "desc", + "rows": 100 + }, + "totalIssues": 23, + "blockingIssues": 0, + "blockingOccurrences": 0, + "logerrorIssues": 23, + "logerrorOccurrences": 51, + "blockingReports": [], + "categories": [ + { + "id": "p2p-lobby-connection-failure", + "title": "P2P/大厅连接失败诊断", + "class": "logerror", + "issueCount": 2, + "occurrences": 22, + "issues": [ + "01eaa6aefd9162eccc930c2450a63779", + "9b415b4bbb546c66eba3a6b67f916d35" + ] + }, + { + "id": "multilingual-empty-id", + "title": "多语言 ID 为空", + "class": "logerror", + "issueCount": 2, + "occurrences": 6, + "issues": [ + "f5d6caefc1e5ac72cd5c21a56e3dfddb", + "691253c2a412f07945231dd650f58213" + ] + }, + { + "id": "network-send-failure", + "title": "网络发送失败诊断", + "class": "logerror", + "issueCount": 6, + "occurrences": 6, + "issues": [ + "dbce2880e5ad9287fcca2bf271f97622", + "81a5e2896daabc7005cd79ae522de4bf", + "2cb3d67ddfe0d9587abd02390f5de041", + "1d2092e8267a158d39aa1a040041020d", + "4628d34f3d350cc5201a4b0061d92890", + "9710b2a3ce8de361e2e1d64f357e1c53" + ] + }, + { + "id": "ai-loop-guard", + "title": "AI 计算死循环保护", + "class": "logerror", + "issueCount": 2, + "occurrences": 4, + "issues": [ + "bb81bce180d8672f500aa9f2021ec9f8", + "83c5b5b46447ac4e50101f1148f4ab70" + ] + }, + { + "id": "sts-upload-failure", + "title": "STS/OSS 上传失败诊断", + "class": "logerror", + "issueCount": 2, + "occurrences": 4, + "issues": [ + "4519111d864a8906a22e97fb6b1dafde", + "93509b23a954c79d835f4138bab9f3f7" + ] + }, + { + "id": "other-logerror", + "title": "其他项目诊断日志", + "class": "logerror", + "issueCount": 4, + "occurrences": 4, + "issues": [ + "dc8a0a12922d2ba2cd2b232774f909fb", + "786bc4b518cd1e0cdb1e4f0b134573b8", + "94c57a8beeeb7a5d974d168da2b55836", + "a4a999b4713d79384b69e705f9ea432b" + ] + }, + { + "id": "duplicate-similar-action", + "title": "相似 Action 重复诊断", + "class": "logerror", + "issueCount": 4, + "occurrences": 4, + "issues": [ + "eef2a9c6d58f5454cecf029ffc2438d3", + "284527635e39660c5430a3fe6170231a", + "f76a1c7293c1f7361bf9545b93892bdb", + "4b42e043c64194e31205b4fa1a9b4d2d" + ] + }, + { + "id": "damage-grid-null-diagnostic", + "title": "受击生命周期格子为空诊断", + "class": "logerror", + "issueCount": 1, + "occurrences": 1, + "issues": [ + "fec6b9b264a6c8b1fa5ac0591bdf3b41" + ] + } + ] +}