14 KiB
ichni Official / IchniCreatorStudio 技术对照文档
生成日期:2026-07-08
本文档记录 ichni Official 与 IchniCreatorStudio 的当前结构、同步关系和关键技术差异,供后续任务开始前快速参考。本文档基于本地仓库扫描结果,不代表所有运行时行为已经通过 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.0com.unity.render-pipelines.universal@17.3.0com.unity.timeline@1.8.10com.unity.test-framework@1.6.0com.unity.ugui@2.0.0com.unity.visualscripting@1.9.9com.unity.collections@2.6.2
仅 ichni Official 扫描到的 package:
com.taptap.sdk.core@4.10.4com.taptap.sdk.login@4.10.4com.unity.burst@1.8.27com.unity.localization@1.5.12com.unity.nuget.newtonsoft-json@3.2.1
仅 IchniCreatorStudio 扫描到的 package:
com.unity.burst@1.8.29com.unity.ide.vscode@1.2.5com.unity.memoryprofiler@1.1.9
注意:两个项目的 Burst patch 版本不同。除非确实需要统一,否则不要为了版本一致性单独改 package。
4. 顶层结构对照
ichni Official 关键结构:
Assets/Scripts/DataCoreAssets/Scripts/GameAssets/Scripts/GameUIAssets/Scripts/GeneratedAssets/Scripts/ManagerAssets/Scripts/MenuAssets/Scripts/NewStorySystemAssets/Scripts/OnlineAssets/Scripts/SavingAssets/Scripts/SettingsAssets/Scripts/SLSUtilitiesAssets/StoryAssets/Wwiseichni Official_WwiseProject
IchniCreatorStudio 关键结构:
Assets/Scripts/CommandSystemAssets/Scripts/ConsoleAssets/Scripts/DynamicUIAssets/Scripts/Editor ToolsAssets/Scripts/ExtensionsAssets/Scripts/Game/DataCoreAssets/Scripts/Game/EditorCoreAssets/Scripts/Game/RuntimeCoreAssets/Scripts/GirdAssets/Scripts/ManagerAssets/Scripts/SettingsAssets/Scripts/SLSUtilitiesAssets/Scripts/StartMenuNodeScript
脚本数量快照:
| 项目 | 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.csAssets/Scripts/Manager/ProjectLoader.csAssets/Scripts/GameAssets/Scripts/DataCoreAssets/Scripts/NewStorySystem
它更偏向最终运行时:
- 加载打包或导出的项目数据。
- 使用
Wwise播放音乐和音效。 - 执行关卡、判定、镜头、视觉元素、故事和存档。
- 使用
Yarn Spinner驱动剧情。 - 包含线上、登录、设置、解锁、剧情存档等玩家侧系统。
5.2 编辑器
IchniCreatorStudio 的核心编辑入口集中在:
Assets/Scripts/Manager/EditorManager.csAssets/Scripts/Manager/ProjectManager.csAssets/Scripts/Game/RuntimeCoreAssets/Scripts/Game/DataCoreAssets/Scripts/Game/EditorCore
它更偏向内容制作和导出:
- 管理工程文件、歌曲文件、谱面、命令脚本。
- 在编辑器内复用大量 runtime 元素。
- 每个可编辑元素通常还需要配套
EditorCore脚本。 - 使用 Unity 原生
AudioSource和动态音频加载。 - 导出给
ichni Official使用的压缩加密BM数据。
6. BM 与 BaseElement 同步关系
6.1 BM 覆盖情况
当前 BM 文件名对照结果:
ichni OfficialBM 文件名数量:100IchniCreatorStudioBM 文件名数量:105ichni Official中存在但IchniCreatorStudio中缺失:0IchniCreatorStudio中存在但ichni Official中缺失:5
IchniCreatorStudio 额外存在的 BM:
Custom2DShape_BM.csDisplacementTracker_BM.csScaleTracker_BM.csSwirlTracker_BM.csVector3Interferometer_BM.cs
共同 BM 文件中,只有少数内容完全一致,大多数同名 BM 在两个项目中存在实现差异。这是正常现象,因为编辑器侧需要保存、复制、编辑器行为或导出行为,游戏本体侧需要执行和运行时加载。
重要规则:不要因为同名就直接覆盖 BM 文件。任何 BM 同步都应逐个比较字段、ExecuteBM()、AfterExecute()、SaveBM()、DuplicateBM() 和导出兼容性。
6.2 BaseElement 差异
ichni Official:
Assets/Scripts/Game/Base/BaseElement.csIBaseElement包含matchedBM、Refresh()、OnDelete()、Delete()、SetUpInspector()。Assets/Scripts/Game/GameElements/Essential/GameElement.cs更偏运行时生命周期。
IchniCreatorStudio:
Assets/Scripts/Game/RuntimeCore/Base/BaseElement.csIBaseElement在运行时接口基础上额外包含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
BMscript - Creator
RuntimeCorescript - Creator
DataCore/BMscript - Creator
EditorCoreinspector 或编辑交互脚本 - 主题包内对应 runtime、data、editor 三侧脚本
7. 存档、加载与导出
7.1 Official 加载
关键文件:
D:\Projects\ichni Official\Assets\Scripts\Manager\ProjectLoader.cs
当前扫描到的核心设置:
SaveSettings:compressionType=None,encryptionType=None,format=JSON,location=ResourcesLoadSettings:compressionType=Gzip,encryptionType=AES,format=JSON,location=Resources
主要加载对象:
ProjectInformation_BMSongInformation_BMBeatmapContainer_BMCommandScripts_BM
加载后通过 ExecuteBM() 生成运行时对象。
7.2 Creator 保存与导出
关键文件:
D:\Projects\IchniCreatorStudio\Assets\Scripts\Manager\ProjectManager.cs
当前扫描到的核心设置:
SaveSettings:compressionType=None,encryptionType=None,format=JSONExportSettings:compressionType=Gzip,encryptionType=AES,format=JSON
导出流程通常会:
- 调用
SaveBM() - 写出
ProjectInformation - 写出
SongInformation - 写出
Beatmap - 写出
CommandScripts
这说明 IchniCreatorStudio 是 Official 可加载资源的重要源头。改动序列化字段时,必须同时确认保存、导出和 Official 加载链路。
8. 音频系统差异
8.1 Official: Wwise
Official 使用:
Assets/Wwiseichni Official_WwiseProjectAssets/Scripts/Manager/SongPlayer.csAssets/Scripts/SLSUtilities/WwiseAssistance/AudioManager.cs
Wwise 版本:
- Wwise SDK
2024.1.9 Build 8920 - Unity Integration Bundle
2024.1.9.3788
Official 音频特点:
- 使用
AK.Wwise.Event、RTPC和AkUnitySoundEngine。 SongPlayer通过 Wwise event 播放音乐,并读取 segment position。LowPassFilterEffect/HighPassFilterEffect通过 Wwise RTPC 控制滤波效果。- 音频事件、RTPC、bank 和 Unity 侧引用需要保持一致。
8.2 Creator: Unity Native Audio
Creator 使用:
Assets/Scripts/Manager/MusicPlayer.csAssets/Scripts/Manager/EditorManager.csAssets/Scripts/Game/RuntimeCore/Base/ProjectFiles/SongInformation.csAssets/Scripts/Game/RuntimeCore/Base/ProjectFiles/NoteAudioCollection.cs
Creator 音频特点:
- 使用
AudioSource、AudioClip和AudioMixerGroup。 SongInformation负责加载音频文件。- 包含自定义
LoadMP3和LoadWav流程。 MusicPlayer实现ISongTimeProvider,供编辑器时间轴使用。
音频相关游戏元素或效果不能直接从 Official 复制到 Creator。Official 侧通常要接 Wwise,Creator 侧通常要接 Unity 原生音频和编辑器预览。
9. 剧情系统
ichni Official 使用 Yarn Spinner,主要集中在:
D:\Projects\ichni Official\Assets\StoryD:\Projects\ichni Official\Assets\Scripts\NewStorySystem
已扫描到的关键文件:
Assets/Story/Chapter0/Chapter0.yarnprojectAssets/Story/Chapter0/C0_A0.yarnAssets/Story/Chapter0/StoryData_Chapter0.assetAssets/Story/Chapter0/CharacterRegistry.assetAssets/Scripts/NewStorySystem/StoryDialogueController.csAssets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.csAssets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.csAssets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs
当前 Chapter0.yarnproject 关键信息:
projectFileVersion: 4sourceFiles:**/*.yarnbaseLanguage:en- 已配置
zh-CNlocalisation - 当前 editor options 中可见角色:
SLS、Asahi
IchniCreatorStudio 当前没有扫描到对应 Yarn 资源。剧情系统修改一般只影响 Official,除非未来编辑器需要制作剧情内容。
10. ThemeBundle 与元素扩展
两个项目都包含主题包结构,例如:
BasicDepartureToMultiverseMetropolisOnOrbitShapes
主题包脚本通常按职责拆分:
- Official: runtime + data/BM
- Creator: runtime + data/BM + editor
示例:
- Official
DepartureToMultiverse包含DTMTrail.cs、DTMStarrySkybox.cs、DTMRandomGridFloor.cs等 runtime 脚本,以及对应*_BM.cs。 - Creator
DepartureToMultiverse除 runtime 和*_BM.cs外,还包含DTMTrail_Editor.cs、DTMStarrySkybox_Editor.cs、DTMRandomGridFloor_Editor.cs等编辑器脚本。 - Creator
Basic中存在Custom2DShape_BM.cs和Custom2DShape_Editor.cs,但 Official 当前没有同名 BM 文件。
新增主题包元素时,应先找同主题下已有元素作为模板,再分别实现 Official runtime/BM 与 Creator runtime/BM/editor。
11. 当前同步风险与注意事项
-
BM 文件名高度重合,但内容大多不一致。
- 不能机械同步。
- 字段变更必须评估导出兼容性和旧数据加载。
-
Creator 覆盖了所有 Official BM 文件名,并多出 5 个 BM。
- 如果 Official 后续需要加载这些 Creator-only 元素,Official 需要新增对应 runtime/BM 支持。
-
Official 与 Creator 的音频系统不同。
- Official:
Wwise - Creator: Unity native audio
- 音频效果和播放逻辑必须双实现或抽象到共同时间接口。
- Official:
-
Official 有剧情系统,Creator 当前没有。
- 修改
Yarn Spinner或NewStorySystem前不应假设 Creator 有对应编辑器支持。
- 修改
-
Creator 有
EditorCore,Official 没有。- 元素编辑能力通常不能只靠 runtime/BM 实现。
-
当前两个仓库均存在工作区未提交或未跟踪文件。
- 后续修改前应先检查
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.json和ProjectSettings/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 |
当前无对应系统 |