Bocchi House 移植平台
项目简介#
Bocchi House 是一个运行在 HarmonyOS NEXT 平台上的游戏移植与启动平台,旨在将经典游戏(如 Paladin、Unholy Heights)移植到鸿蒙平台。
它提供了一套从底层 Vulkan 封装到上层 2D 渲染引擎的完整图形管线:
- 底层通过
platform_abstraction封装 Vulkan 与鸿蒙原生 API(窗口、节点、SurfaceHolder) - 中间层通过
graphics_adapter提供 2D 渲染引擎(SpriteBatch、纹理管理、字体渲染) - 上层游戏模块调用这些接口实现跨平台运行
技术栈:ArkTS + C++ (NAPI) + Vulkan + HarmonyOS SDK 6.1.0
分层架构#
products (启动器)
│ startAbility()
▼
game_sources (游戏) ←── 调用 ──► features/adapters (图形/音频/输入)
│ │ 调用
├── 生命周期事件 │
▼ ▼
features/game_framework common (平台封装)
│ 转发事件 │ 封装
▼ ▼
features/adapters HarmonyOS / Vulkan| 层 | 模块 | 职责 |
|---|---|---|
| 启动器 | products/laptop, products/mobile | 游戏列表 + startAbility() 启动游戏 |
| 游戏 | game_sources/paladin, game_sources/unholy_heights | 游戏核心逻辑 |
| 生命周期桥接 | features/game_framework | BHFrameworkCore 单例:Ability 生命周期事件 → 各 adapter;App 级窗口控制 |
| 游戏框架 | features/game_framework | Game 类(XNA 风格)、ScreenManager、GameScreen、GameTime |
| 适配层 | features/graphics_adapter | VulkanRenderer 编排器、SpriteBatch 2D 渲染、TextureManager、SpriteFont |
| 适配层 | features/audio_adapter / input_adapter | 音频接口、输入接口(框架完成,待实现) |
| 平台封装 | common/platform_abstraction | Vulkan RAII 封装(12 个类)、窗口管理、节点管理、日志 |
移植游戏#
| 游戏 | 原作 | 原始语言 | 移植语言 | 渲染方式 | 状态 |
|---|---|---|---|---|---|
| Paladin(仙剑奇侠传) | SDLPal / pal_harmony | C | C++ | CPU 软件渲染 (320x200) | 规划中 |
| Unholy Heights(房东是魔王大人) | Petit Depotto | C# (XNA 4.0) | C++ | Vulkan GPU 2D 精灵 | 移植中 |
当前进度(2026-08-12)#
- ✅ game_framework 生命周期桥接:
BHFrameworkCore+NapiBridge拆分,注册 15+ NAPI 接口 - ✅ 窗口控制:
BHWindowManager封装WindowInfo,SetDecorVisible/SetResizeByDrag已实现 - ✅ Vulkan RAII 封装(12 个类):Instance / Surface / Device / Swapchain / Command / Sync / RenderPass / Shader / Pipeline / Buffer / Image / Descriptor
- ✅ BHNodeContentTool 完整实现:
Bind(handle, tag)→ NodeContent 回调 →CreateXComponent→ Surface 回调分发 - ✅ graphics_adapter 结构对齐:
bridge/+GraphicsBridge、engine/+BHGraphicsCore编排器 - ✅ Laptop 启动器 UI:Navigation + 沉浸式 + Swiper 轮播推荐 + 游戏卡片列表
- 🔄 BHRender 实现:
SetupVKContext(window)设备检测链已完成(CreateInstance / CreateSurface / PickPhysicalDevice / CreateLogicalDeviceAndQueue) - 🔄 SpriteBatch 完整管线:着色器/顶点缓冲已建,Flush 未实现
- 🔄 TextureManager / SpriteFont:VkImage/View/Sampler 已建,staging upload 未实现
专栏文章#
(本栏目持续更新:项目介绍 + 架构解说 + 技术记录)