# ohos-game-engine-template **Repository Path**: fengozl/ohos-game-engine-template ## Basic Information - **Project Name**: ohos-game-engine-template - **Description**: 提供如何快速适配鸿蒙版游戏引擎模板与指导 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-03-19 - **Last Updated**: 2024-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 一、简介 近期协助用户游戏引擎鸿蒙化过程中,发现对于用户来说,需要查阅大量的鸿蒙资料,学习NAPI、XComponent、鸿蒙系统组件等知识,动手适配时又可能遇到这样那样的问题,无疑增加了鸿蒙适配的工作量与难度。 而游戏引擎适配主要是对接鸿蒙提供的系统能力,无外乎包括启动、文件、字体、音视频等能力,这些能力基本在所有的游戏引擎对接中类似。因此提供鸿蒙适配的模板,期望把这些系统能力封装起来,对外提供C++的接口,用户仅实现相关能力接口既可实现鸿蒙系统的对接适配,减少鸿蒙游戏引擎适配的工作量。 当前提供基于OpenGL的模板。 ## 二、使用前需要了解的基础知识 使用模板前期望对鸿蒙的如下知识有简单的了解 ### 1. 鸿蒙工程目录结构 ![工程结构](doc/opengl模板工程结构.png) 工程使用[Stage模型](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/stage-model-development-overview-0000001774119970)。entry工程是应用工程,可以生成一个hap(类似于android apk包);har工程是库工程,类似于android的aar包。相关资料可以参考[鸿蒙应用程序包开发与使用](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hap-package-0000001820879541) ### 2. 鸿蒙线程模型 游戏引擎的渲染处理逻辑是在独立的线程,是独立于UI线程的,我们称之为游戏线程。模板工程使用[Worker线程](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/worker-introduction-0000001774279770),游戏逻辑的处理是在Worker线程中。 因此内部实现中会涉及到两个线程的交互。 - 游戏线程调用UI线程的流程,以创建文本框为例 ![创建文本框](doc/游戏线程触发创建系统组件.png) - UI调用游戏线程,以文本框编辑时触发回调为例 ![文本事件回调](doc/文本编辑消息触发逻辑.png) ## 三、使用 ### 1. 导入工程 - 选择opengl-template下的ohos目录,直接导入到DevEco IDE中。 - 重新生成签名信息。选择Project Structure下的Singing Config页签,选择Automatically generate signature。然后选择Apply - 运行工程,日志使用“native_manager”过滤。此时游戏界面黑屏,输出以下日志表示导入成功 ![导入成功](doc/启动成功样例.png) ### 2. 启动与渲染适配 模板工程封装了完整的启动流程,用户无需关心XComponent/NAPI调用等逻辑。只需要适配**native_manager.cpp**文件中的接口既可**(如无特殊说明,接口的调用处皆为游戏线程)**。下面是对需要适配的接口说明。 - onSurfaceCreated ``` void onSurfaceCreated(int width, int height, int orientation) ``` **描述** xxxx **参数** |名称|描述| |-----|------| |width|xxx| **返回** xxxxx - onDrawFrame - Pause - Resume - onSurfaceChanged - onSurfaceDestroyed ### 3. 文件系统适配 ### 4. 触摸事件适配 ### 5. TextInput适配 ### 6. Webview适配 ### 7. Video适配 ### 8. 字体适配 ### 9. 音频适配 ### 10. 网络适配 ### 11. 其他 - FPS修改 - 横竖屏适配 - 传感器适配