Skip to content
/ Luma Public

A modern, high-performance, cross-platform, data-driven 2D game engine built with C++20 and .net 9.

License

Notifications You must be signed in to change notification settings

NGLSG/Luma

Repository files navigation

Luma 引擎

一种基于 C++20 与 C# 的现代化、模块化、数据驱动的高性能实时 2D 游戏引擎,旨在成为 Unity 2D 的强大替代方案。


目录


概览与设计哲学

Luma 引擎面向需要极致性能与现代化工作流的 2D 游戏项目。核心设计原则:

  • 数据驱动:场景、实体、组件与动画均以数据为中心,便于热重载、编辑器扩展与程序化生成。
  • 模块化与可扩展:渲染、物理、音频等核心系统彼此解耦,可独立升级与替换。
  • 性能优先:ECS 架构与并行 JobSystem 面向高并发与大规模对象的实时计算。

核心特性与性能概览

性能对比:Luma vs. Unity DOTS

Unity 版本:6.1 LTS;同一硬件、等价场景设置。

场景渲染(动态精灵):在视野内不断生成、移动、旋转与缩放大量精灵。

实体数量 Luma 引擎 (FPS) Unity DOTS (FPS) 性能倍数
100,000 ~100 ~30 ~3.3×
200,000 ~50 ~15 ~3.3×
1,000,000 ~10 ~2 ~5.0×

物理模拟(Box2D,10,000 动态刚体)

指标 Luma Unity 性能倍数
总帧时间 2.40 ms 45.45 ms 18.9×
理论 FPS ~416 ~22 18.9×

注:上述数值来源于同等条件下的内部测试,仅作为能力参考,实际效果随硬件与场景而异。

功能一览

现代 ECS 架构

  • 基于 EnTT,面向数据布局与高速遍历优化。
  • 逻辑与数据解耦,便于维护与扩展。

高性能并行计算

  • 基于工作窃取的 JobSystem,动态负载均衡。
  • 提供 C# JobSystem 绑定,脚本层可并行。

可视化蓝图

  • 节点式编辑器直接生成高性能 C# 代码(编译型,而非解释执行)。
  • 支持事件、分支、循环、自定义函数与变量。

C++/C# 互操作

  • 采用 .NET 9 CoreCLR 宿主,稳定双向调用。
  • 支持脚本热重载。

物理、Tilemap、UI、音频

  • Box2D 固定步长模拟,配合 JobSystem 并行。
  • Tilemap 支持标准/规则瓦片与预制体笔刷。
  • 基于 ECS 的 UI 组件(Text/Image/Button/InputText 等)。
  • SDL3 音频回调,空间化与多声道混音。

技术栈

类别 技术 版本/库
核心语言 C++ C++20
脚本语言 C# .NET 9 (CoreCLR)
构建系统 CMake 3.21+
ECS 框架 EnTT latest
2D 物理 Box2D latest
渲染后端 Skia + Dawn 跨平台图形封装
窗口与输入 SDL3 跨平台窗口管理
编辑器 UI Dear ImGui 即时模式 GUI
数据序列化 yaml-cpp / json YAML/JSON 读写

快速开始

环境与依赖

  1. 安装:Git、CMake (≥ 3.21)、Vulkan SDK、现代 C++ 编译器(VS 2022 / GCC 11 / Clang 14)。
  2. 依赖管理:推荐使用 Vcpkg;CPM.cmake 作为补充,亦可使用系统包管理器安装常见库。
  3. 特殊依赖:SkiaCoreCLR 需手动获取预编译包,并解压至项目根目录 External/
    • Releases 参考:Luma-External 预编译集合。
    • 解压完成后目录示例:
      Luma/
      ├── External/
      │   ├── coreclr-win-x64/    # 或 coreclr-linux-x64/
      │   └── skia-win/           # 或 skia-linux/
      └── ...
      

构建

git clone https://github.com/NGLSG/Luma.git
cd Luma

# 使用 Vcpkg(示例路径请根据本机替换)
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=E:/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build . --config Release

构建产物位于 build/bin/Release/(或对应生成目录)。


核心系统概述

  • 资产与资源系统:基于 GUID 的资产管线,.meta 持久化导入设置与唯一标识;运行时通过 AssetManager 与缓存实现高效加载与共享。
  • 脚本系统:CoreCLR 宿主与 C-API/PInvoke 桥接;支持 C# 侧事件、接口与 Job 绑定。
  • 渲染系统:模拟线程提交渲染数据,渲染线程基于插值生成帧间过渡,减少撕裂与抖动;后端采用批处理与图形 API 调度。
  • 物理系统:固定步长、运动学/动态刚体同步策略,物理到 Transform 的回写一致。
  • 音频系统:主线程管理 Voice,音频回调线程混音与空间化处理。
  • 并行调度:全局任务队列 + 本地队列工作窃取;线程池协同,任务完成可等待。
  • 动画与状态机:参数化状态、过渡条件与触发器,支持可视化配置与 C# 控制。

更多细节请参见 ARCHITECTURE.md


项目状态与路线图

已完成功能

  • 资产管线、ECS、JobSystem、动画状态机、可视化蓝图、Tilemap、UI、空间音频
  • C# 脚本宿主(热重载)、C++/C# 互操作、物理集成
  • 编辑器、打包工具、Profiler、物理可视化调试

路线图

优先级 功能 状态 目标时间
C-API 扩展 计划中 2025 Q3
编辑器界面现代化 研究中 2025 Q4
粒子系统 计划中 2025 Q4

贡献指南

  • 命名:类型/函数使用 PascalCase,变量使用 camelCase。
  • 注释:公共 API 使用 Doxygen 风格注释。
  • 提交流程:
    1. master 创建功能分支;
    2. 确保符合规范并通过构建;
    3. 提交 Pull Request,说明动机与实现。

许可证

本项目采用 MIT 许可。

About

A modern, high-performance, cross-platform, data-driven 2D game engine built with C++20 and .net 9.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages