这是什么#
Bocchi House 是一个运行在 HarmonyOS NEXT 平台上的游戏移植与启动平台。
简单来说:一台鸿蒙设备上,装一个"游戏大厅",里面可以启动一个个被移植过来的经典游戏。
名字致敬了《孤独摇滚!》的波奇酱(Bocchi),也暗合"一个人折腾移植"的孤独感——不过移植出来的成果是可以分享的。
为什么做这个#
一直以来我都在折腾"把老游戏/老引擎搬到鸿蒙"这件事:
- MonoGame 的鸿蒙 C++ 移植(另一个长期项目)
- Paladin(仙剑奇侠传)、Unholy Heights(房东是魔王大人) 这类经典游戏的移植
移植本身已经很难,但移植完还有一个问题:怎么把游戏组织起来、怎么启动、怎么共用一套图形/音频/输入基础设施?
每个游戏都各自实现一遍 Vulkan 初始化、窗口绑定、精灵渲染,既重复又难维护。于是就有了 Bocchi House:把底层图形能力、生命周期桥接、游戏框架做成公共层,游戏只需要专注于自己的逻辑。
技术栈#
ArkTS + C++ (NAPI) + Vulkan + HarmonyOS SDK 6.1.0- ArkTS:启动器 UI 与 Ability 生命周期(声明式开发)
- C++ (NAPI):引擎层与图形管线,通过 NAPI 与 ArkTS 桥接
- Vulkan:GPU 渲染 API,鸿蒙端通过
XComponent提供原生渲染表面 - SurfaceHolderNDK:新版 Surface 生命周期管理 API
分层设计#
项目采用四层架构,每层职责单一:
| 层 | 做什么 |
|---|---|
| products(启动器) | 游戏列表 + startAbility() 拉起游戏 |
| game_sources(游戏) | 各移植游戏的核心逻辑(Paladin / Unholy Heights) |
| features(适配层) | 游戏框架(生命周期桥接)+ 图形/音频/输入适配器 |
| common(平台封装) | Vulkan RAII、窗口管理、节点内容、日志 |
现状与计划#
目前处于开发早期:Vulkan RAII 封装(12 个类)、生命周期桥接、Laptop 启动器 UI 已完成;BHRender 渲染上下文、SpriteBatch 完整管线进行中。
游戏方面,Unholy Heights 已在移植中(C# XNA → C++),Paladin 在规划中。
后续我会在这里持续记录架构设计与踩坑过程。
相关链接#
- 项目主页:https://gitcode.com/roger_bh/bocchi_house
- 架构文档:
ARCHITECTURE.md(仓库内)