Files
SpineParticlesWeb/DateToSpine/docs/11-阶段0技术原型记录.md
T
2026-09-07 21:29:15 +08:00

4.1 KiB

阶段 0 技术原型记录

记录日期

2026-09-07

当前结论

首批工程骨架已经建立并在 macOS Apple Silicon 上通过构建测试。此阶段证明多版本 Runtime 隔离、基础输入识别、本地 Editor 发现和跨平台进程抽象可以按既定架构继续推进;尚未证明完整动画预览或 .spine 恢复流程。

本机环境

  • Apple Clang 17
  • CMake 4.4.3(项目最低要求仍为 3.25)
  • Ninja 1.13.2
  • Qt Base 6.11.2
  • Qt Image Formats 6.11.2
  • Spine Launcher 4.3.06 Apple Silicon
  • Launcher 当前观察到启动 Spine Editor 3.8.99 Professional

只安装 Qt Base 与 Qt Image Formats,没有安装 Qt WebEngine、Location、NetworkAuth 等与产品无关的 Qt 元组件。

固定 Runtime 提交

Runtime 官方分支 提交
3.8 3.8 8b4844bd4b193ba9e54487ed397a777993cbad56
4.0 4.0 425ce416bb218b28caeec47b317aa57cd7140375
4.1 4.1 77a5db0ec6d16331f5efbaa7662bba9355bd3424
4.2 4.2 e7dc1435fa4a0083ab431f1b28e083c14a1f5c68
4.3 4.3 4309c05c287d3f15da778e68f5d2a483fe10a6a3

当前只展开各分支的 spine-cpp 源码。4.3 官方 Spineboy 资源仅用于开发测试,不进入安装目标和发行包。

已实现

  • CMake/C++20 工程和 macOS、Windows Preset。
  • 标准 C++ 核心库,不依赖 Qt。
  • Spine 版本值对象和正式支持范围判断。
  • JSON 最小 Spine schema 与版本探测。
  • SKEL 二进制头部 hash/version 有界读取。
  • Atlas 多页、page、region、PMA、scale、rotate、bounds/legacy 字段基础解析。
  • macOS 常见 Spine 路径发现和 .app 规范化。
  • Windows 常见路径骨架和 .exe.com 规范化。
  • 不经过 shell 的 POSIX/Windows 子进程执行器。
  • 超时后终止本软件启动的整个子进程树。
  • Launcher 版本与实际 Editor 版本分离解析。
  • 五个 Runtime 独立静态目标和动态 adapter。
  • 稳定 C ABI 版本与 metadata 加载验证。
  • 极简 Qt 桌面外壳:资源拖放/选择、资源切换、动画切换和一键转换。
  • Editor 自动发现;仅在自动发现失败时请求自定义路径。
  • 4.3 Runtime 已实际加载官方 JSON、SKEL 和 Atlas,并输出动画/Skin/骨骼元数据。
  • 4.3 Runtime 已输出裁剪后的纹理三角形,Qt 画布可循环播放并切换真实动画。
  • 4.3 beta 后缀版本和新版 SKEL 文件头识别。
  • CLI:Editor 发现、路径探测、数据版本检查。

构建与测试结果

  • cmake --preset macos-debug:通过。
  • cmake --build --preset macos-debug:通过。
  • 五个官方 Runtime:通过 Apple Clang 编译。
  • 五个 Runtime adapter:通过动态加载和 ABI/版本检查。
  • 核心单元测试:全部通过。
  • 官方 Spineboy JSON/SKEL 真实加载测试:通过,识别到 11 个动画。
  • Qt 应用 offscreen 启动冒烟测试:通过。

Spine 4.3 上游源码在 Apple Clang 下产生一条未覆盖枚举值的 warning。第三方源码没有被修改,该警告暂不影响构建,后续记录在上游警告基线中。

实际 Editor 探测发现

直接执行本机 Spine --version 时先报告 Launcher 4.3.06,随后启动 3.8.99 Professional。旧版 launcher 在当前系统产生字体兼容警告,并且探测可能长时间不退出。

因此代码已经采用:

  • 分离解析 Launcher 和 Editor 版本。
  • 探测超时。
  • 进程树终止。
  • “已观察到 Spine 但探测超时”独立状态。

仅看到 Launcher 版本不能代表目标 Editor 版本可用。

尚未完成的阶段 0 关卡

  1. 对 3.8—4.2 执行真实资源预览。
  2. 目标 Editor 版本选择与离线缓存能力验证。
  3. 官方 Texture Unpacker 调用与结果验证。
  4. JSON/SKEL 到 .spine 的端到端恢复。
  5. SKEL 图片路径双重导入/导出方案验证。
  6. Windows MSVC 构建与真实 Editor 测试。

下一步

先扩展 Runtime C ABI,以 4.3 adapter 实现真实资源加载、动画/Skin 元数据与 draw list;通过后把版本差异分别适配到 4.2、4.1、4.0 和 3.8。随后接 Qt OpenGL 预览画布,再进入 Editor 导入和官方解包流水线。