Files
ichni_Official/docs/ichni-official-creatorstudio-technical-map.md
2026-07-08 04:29:20 -04:00

14 KiB
Raw Blame History

ichni Official / IchniCreatorStudio 技术对照文档

生成日期2026-07-08

本文档记录 ichni OfficialIchniCreatorStudio 的当前结构、同步关系和关键技术差异,供后续任务开始前快速参考。本文档基于本地仓库扫描结果,不代表所有运行时行为已经通过 Unity Editor 实机验证。

1. 工作区与权限

项目 路径 当前角色 当前写入状态
ichni Official D:\Projects\ichni Official 游戏本体 可读写
IchniCreatorStudio D:\Projects\IchniCreatorStudio 关卡编辑器 / 内容制作工具 可读写

已完成的权限验证:

  • D:\Projects\IchniCreatorStudio 已加入当前 Codex workspace writable roots。
  • 已在 D:\Projects\IchniCreatorStudio\.codex-write-test.tmp 执行创建、读取、删除测试。
  • 测试结果:WRITE_RETEST_OK: codex write retest 2026-07-08

2. 统一工作标准

后续所有工作继续遵循 D:\Projects\ichni Official\AGENTS.md 中记录的标准:

  • 两个项目遵循统一编码规范。
  • 文档和共享资源应供所有工作区成员查阅。
  • _BM 后缀类是序列化存档类,本文档称为 BM 类。
  • 新增或修改继承自 BaseElement 的游戏元素时,应优先同步检查两个项目。
  • ichni Official 使用 Wwise 2024.1.9.8920
  • IchniCreatorStudio 使用 Unity 原生音频。
  • ichni Official 使用 Yarn Spinner,允许修改和扩展。
  • 回复用户使用简体中文代码、API、类名、路径和特殊术语保留英文。

3. Unity 与 Package 基线

两个项目当前 Unity 版本一致,项目文件实际记录为:

  • 6000.3.7f1 (696ec25a53d1)

共同关键 packages

  • com.unity.inputsystem@1.18.0
  • com.unity.render-pipelines.universal@17.3.0
  • com.unity.timeline@1.8.10
  • com.unity.test-framework@1.6.0
  • com.unity.ugui@2.0.0
  • com.unity.visualscripting@1.9.9
  • com.unity.collections@2.6.2

ichni Official 扫描到的 package

  • com.taptap.sdk.core@4.10.4
  • com.taptap.sdk.login@4.10.4
  • com.unity.burst@1.8.27
  • com.unity.localization@1.5.12
  • com.unity.nuget.newtonsoft-json@3.2.1

IchniCreatorStudio 扫描到的 package

  • com.unity.burst@1.8.29
  • com.unity.ide.vscode@1.2.5
  • com.unity.memoryprofiler@1.1.9

注意:两个项目的 Burst patch 版本不同。除非确实需要统一,否则不要为了版本一致性单独改 package。

4. 顶层结构对照

ichni Official 关键结构:

  • Assets/Scripts/DataCore
  • Assets/Scripts/Game
  • Assets/Scripts/GameUI
  • Assets/Scripts/Generated
  • Assets/Scripts/Manager
  • Assets/Scripts/Menu
  • Assets/Scripts/NewStorySystem
  • Assets/Scripts/Online
  • Assets/Scripts/Saving
  • Assets/Scripts/Settings
  • Assets/Scripts/SLSUtilities
  • Assets/Story
  • Assets/Wwise
  • ichni Official_WwiseProject

IchniCreatorStudio 关键结构:

  • Assets/Scripts/CommandSystem
  • Assets/Scripts/Console
  • Assets/Scripts/DynamicUI
  • Assets/Scripts/Editor Tools
  • Assets/Scripts/Extensions
  • Assets/Scripts/Game/DataCore
  • Assets/Scripts/Game/EditorCore
  • Assets/Scripts/Game/RuntimeCore
  • Assets/Scripts/Gird
  • Assets/Scripts/Manager
  • Assets/Scripts/Settings
  • Assets/Scripts/SLSUtilities
  • Assets/Scripts/StartMenu
  • NodeScript

脚本数量快照:

项目 Assets/Scripts C# BM C# Runtime / Game 核心 C#
ichni Official 340 83 Assets/Scripts/Game: 102
IchniCreatorStudio 401 87 Assets/Scripts/Game/RuntimeCore: 108

5. 核心架构差异

5.1 游戏本体

ichni Official 的核心运行入口集中在:

  • Assets/Scripts/Manager/GameManager.cs
  • Assets/Scripts/Manager/ProjectLoader.cs
  • Assets/Scripts/Game
  • Assets/Scripts/DataCore
  • Assets/Scripts/NewStorySystem

它更偏向最终运行时:

  • 加载打包或导出的项目数据。
  • 使用 Wwise 播放音乐和音效。
  • 执行关卡、判定、镜头、视觉元素、故事和存档。
  • 使用 Yarn Spinner 驱动剧情。
  • 包含线上、登录、设置、解锁、剧情存档等玩家侧系统。

5.2 编辑器

IchniCreatorStudio 的核心编辑入口集中在:

  • Assets/Scripts/Manager/EditorManager.cs
  • Assets/Scripts/Manager/ProjectManager.cs
  • Assets/Scripts/Game/RuntimeCore
  • Assets/Scripts/Game/DataCore
  • Assets/Scripts/Game/EditorCore

它更偏向内容制作和导出:

  • 管理工程文件、歌曲文件、谱面、命令脚本。
  • 在编辑器内复用大量 runtime 元素。
  • 每个可编辑元素通常还需要配套 EditorCore 脚本。
  • 使用 Unity 原生 AudioSource 和动态音频加载。
  • 导出给 ichni Official 使用的压缩加密 BM 数据。

6. BM 与 BaseElement 同步关系

6.1 BM 覆盖情况

当前 BM 文件名对照结果:

  • ichni Official BM 文件名数量100
  • IchniCreatorStudio BM 文件名数量105
  • ichni Official 中存在但 IchniCreatorStudio 中缺失0
  • IchniCreatorStudio 中存在但 ichni Official 中缺失5

IchniCreatorStudio 额外存在的 BM

  • Custom2DShape_BM.cs
  • DisplacementTracker_BM.cs
  • ScaleTracker_BM.cs
  • SwirlTracker_BM.cs
  • Vector3Interferometer_BM.cs

共同 BM 文件中,只有少数内容完全一致,大多数同名 BM 在两个项目中存在实现差异。这是正常现象,因为编辑器侧需要保存、复制、编辑器行为或导出行为,游戏本体侧需要执行和运行时加载。

重要规则:不要因为同名就直接覆盖 BM 文件。任何 BM 同步都应逐个比较字段、ExecuteBM()AfterExecute()SaveBM()DuplicateBM() 和导出兼容性。

6.2 BaseElement 差异

ichni Official

  • Assets/Scripts/Game/Base/BaseElement.cs
  • IBaseElement 包含 matchedBMRefresh()OnDelete()Delete()SetUpInspector()
  • Assets/Scripts/Game/GameElements/Essential/GameElement.cs 更偏运行时生命周期。

IchniCreatorStudio

  • Assets/Scripts/Game/RuntimeCore/Base/BaseElement.cs
  • IBaseElement 在运行时接口基础上额外包含 SaveBM()
  • Assets/Scripts/Game/RuntimeCore/GameElements/Essential/GameElement.cs 额外有 SetEditorSubmodules()
  • Assets/Scripts/Game/DataCore/Base_BM/GameElement_BM.cs 额外包含 DuplicateBM(GameElement attached)

新增 BaseElement 派生元素时,通常需要同时考虑:

  • Official runtime script
  • Official BM script
  • Creator RuntimeCore script
  • Creator DataCore / BM script
  • Creator EditorCore inspector 或编辑交互脚本
  • 主题包内对应 runtime、data、editor 三侧脚本

7. 存档、加载与导出

7.1 Official 加载

关键文件:

  • D:\Projects\ichni Official\Assets\Scripts\Manager\ProjectLoader.cs

当前扫描到的核心设置:

  • SaveSettings: compressionType=None, encryptionType=None, format=JSON, location=Resources
  • LoadSettings: compressionType=Gzip, encryptionType=AES, format=JSON, location=Resources

主要加载对象:

  • ProjectInformation_BM
  • SongInformation_BM
  • BeatmapContainer_BM
  • CommandScripts_BM

加载后通过 ExecuteBM() 生成运行时对象。

7.2 Creator 保存与导出

关键文件:

  • D:\Projects\IchniCreatorStudio\Assets\Scripts\Manager\ProjectManager.cs

当前扫描到的核心设置:

  • SaveSettings: compressionType=None, encryptionType=None, format=JSON
  • ExportSettings: compressionType=Gzip, encryptionType=AES, format=JSON

导出流程通常会:

  • 调用 SaveBM()
  • 写出 ProjectInformation
  • 写出 SongInformation
  • 写出 Beatmap
  • 写出 CommandScripts

这说明 IchniCreatorStudio 是 Official 可加载资源的重要源头。改动序列化字段时,必须同时确认保存、导出和 Official 加载链路。

8. 音频系统差异

8.1 Official: Wwise

Official 使用:

  • Assets/Wwise
  • ichni Official_WwiseProject
  • Assets/Scripts/Manager/SongPlayer.cs
  • Assets/Scripts/SLSUtilities/WwiseAssistance/AudioManager.cs

Wwise 版本:

  • Wwise SDK 2024.1.9 Build 8920
  • Unity Integration Bundle 2024.1.9.3788

Official 音频特点:

  • 使用 AK.Wwise.EventRTPCAkUnitySoundEngine
  • SongPlayer 通过 Wwise event 播放音乐,并读取 segment position。
  • LowPassFilterEffect / HighPassFilterEffect 通过 Wwise RTPC 控制滤波效果。
  • 音频事件、RTPC、bank 和 Unity 侧引用需要保持一致。

8.2 Creator: Unity Native Audio

Creator 使用:

  • Assets/Scripts/Manager/MusicPlayer.cs
  • Assets/Scripts/Manager/EditorManager.cs
  • Assets/Scripts/Game/RuntimeCore/Base/ProjectFiles/SongInformation.cs
  • Assets/Scripts/Game/RuntimeCore/Base/ProjectFiles/NoteAudioCollection.cs

Creator 音频特点:

  • 使用 AudioSourceAudioClipAudioMixerGroup
  • SongInformation 负责加载音频文件。
  • 包含自定义 LoadMP3LoadWav 流程。
  • MusicPlayer 实现 ISongTimeProvider,供编辑器时间轴使用。

音频相关游戏元素或效果不能直接从 Official 复制到 Creator。Official 侧通常要接 WwiseCreator 侧通常要接 Unity 原生音频和编辑器预览。

9. 剧情系统

ichni Official 使用 Yarn Spinner,主要集中在:

  • D:\Projects\ichni Official\Assets\Story
  • D:\Projects\ichni Official\Assets\Scripts\NewStorySystem

已扫描到的关键文件:

  • Assets/Story/Chapter0/Chapter0.yarnproject
  • Assets/Story/Chapter0/C0_A0.yarn
  • Assets/Story/Chapter0/StoryData_Chapter0.asset
  • Assets/Story/Chapter0/CharacterRegistry.asset
  • Assets/Scripts/NewStorySystem/StoryDialogueController.cs
  • Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs
  • Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs
  • Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs

当前 Chapter0.yarnproject 关键信息:

  • projectFileVersion: 4
  • sourceFiles: **/*.yarn
  • baseLanguage: en
  • 已配置 zh-CN localisation
  • 当前 editor options 中可见角色:SLSAsahi

IchniCreatorStudio 当前没有扫描到对应 Yarn 资源。剧情系统修改一般只影响 Official除非未来编辑器需要制作剧情内容。

10. ThemeBundle 与元素扩展

两个项目都包含主题包结构,例如:

  • Basic
  • DepartureToMultiverse
  • MetropolisOnOrbit
  • Shapes

主题包脚本通常按职责拆分:

  • Official: runtime + data/BM
  • Creator: runtime + data/BM + editor

示例:

  • Official DepartureToMultiverse 包含 DTMTrail.csDTMStarrySkybox.csDTMRandomGridFloor.cs 等 runtime 脚本,以及对应 *_BM.cs
  • Creator DepartureToMultiverse 除 runtime 和 *_BM.cs 外,还包含 DTMTrail_Editor.csDTMStarrySkybox_Editor.csDTMRandomGridFloor_Editor.cs 等编辑器脚本。
  • Creator Basic 中存在 Custom2DShape_BM.csCustom2DShape_Editor.cs,但 Official 当前没有同名 BM 文件。

新增主题包元素时,应先找同主题下已有元素作为模板,再分别实现 Official runtime/BM 与 Creator runtime/BM/editor。

11. 当前同步风险与注意事项

  1. BM 文件名高度重合,但内容大多不一致。

    • 不能机械同步。
    • 字段变更必须评估导出兼容性和旧数据加载。
  2. Creator 覆盖了所有 Official BM 文件名,并多出 5 个 BM。

    • 如果 Official 后续需要加载这些 Creator-only 元素Official 需要新增对应 runtime/BM 支持。
  3. Official 与 Creator 的音频系统不同。

    • Official: Wwise
    • Creator: Unity native audio
    • 音频效果和播放逻辑必须双实现或抽象到共同时间接口。
  4. Official 有剧情系统Creator 当前没有。

    • 修改 Yarn SpinnerNewStorySystem 前不应假设 Creator 有对应编辑器支持。
  5. Creator 有 EditorCoreOfficial 没有。

    • 元素编辑能力通常不能只靠 runtime/BM 实现。
  6. 当前两个仓库均存在工作区未提交或未跟踪文件。

    • 后续修改前应先检查 git status
    • 不要还原或覆盖用户已有改动。

12. 后续任务检查清单

修改或新增 BaseElement / 游戏元素时:

  • 检查 Official runtime 脚本。
  • 检查 Official BM 脚本。
  • 检查 Creator RuntimeCore 脚本。
  • 检查 Creator DataCore / BM 脚本。
  • 检查 Creator EditorCore 脚本。
  • 检查主题包内是否有同类元素模板。
  • 检查 SaveBM()ExecuteBM()AfterExecute()DuplicateBM()
  • 检查旧数据加载和导出兼容性。
  • 如果涉及音频,分别实现 Wwise 侧和 Unity native audio 侧。
  • 如果涉及剧情,只默认影响 Official除非明确要求 Creator 支持剧情编辑。

修改 BM 字段时:

  • 确认字段默认值。
  • 确认序列化名称和旧文件兼容性。
  • 确认 Creator 保存和导出。
  • 确认 Official 加载和执行。
  • 尽量准备一个最小导出样例进行回归验证。

修改 package、Unity 版本或项目设置时:

  • 不要只改一个项目,除非差异有明确原因。
  • 先确认 Packages/manifest.jsonProjectSettings/ProjectVersion.txt
  • 记录差异原因。

13. 关键文件索引

主题 Official Creator
工作标准 D:\Projects\ichni Official\AGENTS.md D:\Projects\IchniCreatorStudio\AGENTS.md
Unity 版本 D:\Projects\ichni Official\ProjectSettings\ProjectVersion.txt D:\Projects\IchniCreatorStudio\ProjectSettings\ProjectVersion.txt
Packages D:\Projects\ichni Official\Packages\manifest.json D:\Projects\IchniCreatorStudio\Packages\manifest.json
Runtime elements D:\Projects\ichni Official\Assets\Scripts\Game D:\Projects\IchniCreatorStudio\Assets\Scripts\Game\RuntimeCore
BM data D:\Projects\ichni Official\Assets\Scripts\DataCore D:\Projects\IchniCreatorStudio\Assets\Scripts\Game\DataCore
Editor scripts 无统一 EditorCore D:\Projects\IchniCreatorStudio\Assets\Scripts\Game\EditorCore
Official loader D:\Projects\ichni Official\Assets\Scripts\Manager\ProjectLoader.cs 不适用
Creator save/export 不适用 D:\Projects\IchniCreatorStudio\Assets\Scripts\Manager\ProjectManager.cs
Official audio D:\Projects\ichni Official\Assets\Scripts\Manager\SongPlayer.cs 不适用
Creator audio 不适用 D:\Projects\IchniCreatorStudio\Assets\Scripts\Manager\MusicPlayer.cs
Story/Yarn D:\Projects\ichni Official\Assets\Scripts\NewStorySystem 当前无对应系统