Appearance
引擎架构
概述
Unison Engine 基于 EMaix Engine 核心,集成 Cocos2d-x 渲染、Wwise 音频、FFmpeg 视频播放和 NEPython 3.13.14 脚本运行时,支持 Windows 和 Android 平台。
整体架构
┌──────────────────────────────────────────────────────┐
│ Python 游戏脚本 │
│ (NEPython 3.13.14 运行时) │
├──────────────────────────────────────────────────────┤
│ pybind11 绑定层 (unison.* 模块) │
├──────────────────────────────────────────────────────┤
│ │
│ Unison Engine │
│ ┌──────────┬──────────┬──────────┬──────────────┐ │
│ │ 场景管理 │ 渲染系统 │ 音频系统 │ UI 系统 │ │
│ │ Scene │ Render │ Wwise │ CocosUI │ │
│ ├──────────┼──────────┼──────────┼──────────────┤ │
│ │ 游戏对象 │ 配置系统 │ 日志系统 │ 信号系统 │ │
│ │GameObject│ Config │ Log │ Signal │ │
│ ├──────────┼──────────┼──────────┼──────────────┤ │
│ │ 数学库 │ 虚拟FS │ 平台适配 │ CpkImporter │ │
│ │ Math3D │ VFS │ Platform │ │ │
│ └──────────┴──────────┴──────────┴──────────────┘ │
│ │
├──────────────────────────────────────────────────────┤
│ 集成组件层 │
│ ┌──────────┬──────────┬──────────┬──────────────┐ │
│ │Cocos2d-x │ Wwise │ FFmpeg │ FreeType │ │
│ │ OpenGL │ 音频 │ 视频 │ 字体渲染 │ │
│ └──────────┴──────────┴──────────┴──────────────┘ │
├──────────────────────────────────────────────────────┤
│ 操作系统 (Windows / Android) │
└──────────────────────────────────────────────────────┘目录结构
UnisonEngine/
├── build.py # 跨平台构建脚本 (Windows / Android)
├── pack.py # 构建产物打包脚本
├── cepk.py # CPK 文件格式库 (压缩/混淆/加密)
├── CMakeLists.txt # 顶层 CMake 构建文件
│
├── UnisonEngine/ # 引擎核心模块
│ ├── core/ # 引擎核心 (日志、配置、场景树、API)
│ ├── scene/ # 场景管理 (GameObject、Node3D、世界系统)
│ ├── render/ # 渲染系统 (字体、渲染设备)
│ ├── ui/ # UI 管理 (Cocos UI 集成)
│ ├── python/ # Python 运行时 (嵌入 NEPython 3.13.14)
│ ├── platform/ # 平台适配层 (Win32 / Android)
│ ├── WwiseManager.cpp/h # Wwise 音频管理器
│ ├── FFmpegVideoPlayer.cpp/h # FFmpeg 视频播放器
│ └── AkVFSIOHook.cpp/h # Wwise VFS 文件系统钩子
│
├── UnisonLoader/ # 引擎加载器 (EXE 入口)
│ └── UnisonLoader.cpp # 动态加载 DLL 或静态链接入口
│
├── cocos/ # Cocos2d-x 引擎 (2D/3D/UI/物理/音频等)
│
├── external/ # 第三方库
│ ├── ffmpeg/ # FFmpeg (libavcodec/libavformat...)
│ ├── glew-2.3.1/ # GLEW (OpenGL 扩展)
│ ├── libpng-libpng18/ # libpng (PNG 编解码)
│ ├── bullet3-master/ # Bullet Physics (3D 物理)
│ ├── freetype_src/ # FreeType (字体渲染)
│ └── libjpeg-turbo-3.1.4.1/ # libjpeg-turbo (JPEG 编解码)
│
├── wwise/ # Audiokinetic Wwise SDK (音频中间件)
├── include/ # 头文件 (Python C API / pybind11 / pygame)
├── Android/ # Android 平台预编译库
└── scripts/ # 构建辅助脚本技术栈
| 领域 | 技术 |
|---|---|
| 引擎核心 | EMaix Engine |
| 渲染引擎 | Cocos2d-x (OpenGL) |
| 音频 | Audiokinetic Wwise |
| 视频 | FFmpeg |
| 脚本运行时 | NEPython 3.13.14 (嵌入解释器) |
| 绑定层 | pybind11 |
| 字体 | FreeType |
| 图像 | stb_image.cpp / libpng / libjpeg-turbo |
| 物理 | Bullet Physics |
| 构建系统 | CMake |
| 打包 | C ExRFy File System (CEFS/CEPK) |
| 平台 | Windows (MSVC) / Android (NDK) |
C++ 模块总览
| 模块 | 路径 | 职责 |
|---|---|---|
| 核心 | UnisonEngine/core/ | 日志、配置、场景树、VFS、数学库 |
| 场景 | UnisonEngine/scene/ | GameObject、Node3D、世界系统 |
| 渲染 | UnisonEngine/render/ | 字体管理、渲染设备 |
| UI | UnisonEngine/ui/ | Cocos2d-x UI 封装 |
| 音频 | UnisonEngine/WwiseManager.cpp | Wwise 完整封装 |
| 视频 | UnisonEngine/FFmpegVideoPlayer.cpp | FFmpeg 视频播放 |
| Python | UnisonEngine/python/ | Python 运行时、模块注册 |
| 平台 | UnisonEngine/platform/ | Win32 / Android 适配 |
| 入口 | UnisonLoader/ | EXE 入口点、DLL 加载 |
Python 模块总览
| 模块 | 说明 |
|---|---|
unison.vfs | 虚拟文件系统 — CPK 挂载、文件查找/读取、目录遍历 |
unison.excore | 引擎核心 — 窗口管理、帧率控制、消息框 |
unison.log | 日志系统 — 分级日志输出 |
unison.config | 配置系统 — XML 配置解析、加密、XOR 编解码 |
unison.math3d | 数学工具 — Vector2/3/4、Matrix、Quaternion、Color、Ray、Plane、Bounds |
unison.render | 渲染系统 — 场景渲染、帧率统计 |
unison.gameobject | 游戏对象 — GameObject、Transform、Component |
unison.wwise | 音频引擎 — Wwise 封装 |
unison.cocosui | UI 系统 — Cocos2d-x UI 组件封装 |
unison.scene | 场景管理 — 场景加载与切换 |
unison.rendering_device | 渲染设备 |
unison.renderer_scene | 渲染场景 — 网格/着色器/材质管理 |
unison.signal | 信号系统 |