啮星者 / 达尔文黎明
举目无氢之前 / Before the absence of hydrogen
NPGS 模拟一个你操控 II 型文明的星系。建造戴森光束、发射相对论动能武器(RKKV)、派遣自我复制的冯·诺依曼探测器殖民恒星系统。每一颗恒星、行星、黑洞都是物理模拟的——从恒星演化到 Kerr 度规测地线光线追踪。
两种游戏模式:
| 模式 | 视角 | 光速延迟 | 控制范围 |
|---|---|---|---|
| 全视视角 | 星系全局 | 无 | 任意文明 |
| 局域视角 | 单个恒星系 | 有 | 单一 ASI |
- Kerr 度规光线追踪 + 四阶 Runge-Kutta (RK4) 测地线积分
- Christoffel 符号计算 + Kerr-Schild 坐标变换
- 吸积盘模型(薄盘,可配置内/外半径)
- 光子环渲染(独立亮度 & 色温增强)
- 相对论喷流可视化
- 偏振渲染(电磁波平行输运)
- 引力透镜、热雾、阴影剔除
- 白洞模式、outgoing/ingoing 坐标选择
- 基于初始质量函数(IMF)的程序化恒星群生成
- 多种星系模板:猎户旋臂、微缩银河、球状星团、核星团
- 完整恒星演化链:前主序 → 主序 → 红巨星 → 氦核燃烧 → E-AGB → TP-AGB → Post-AGB → 沃尔夫-拉叶星 → 白矮星 / 中子星 / 黑洞
- 14 种行星类型(岩石、类地、冰、海洋、冥府、热木星、气态巨行星等)
- 双星生成 & 八叉树空间索引
- H-R 图(赫罗图)恒星分类工具
- 戴森光束 — 基于恒星级能量的定向武器
- RKKV — 相对论动能击杀器
- 冯·诺依曼探测器 — 自复制星际探测器
- Star Lifter(举星器) — 通过赤道磁线圈从恒星提取物质
- 卡尔达舍夫等级文明进阶(I 型 → II 型 → III 型)
- 程序化文明生成(含生命周期阶段)
- Vulkan 1.x 渲染后端 + 完整 RAII 封装层
- 自研即时模式 UI 框架(基于 ImGui),10+ 组件
- 4 种语言变体:English / 简体中文 / English (Flavor) / 简体中文 (中二)
- JSON 驱动 UI 加载器
- 半程序化动画系统(Ease → Stretch → Measure → Draw 管线)
- 多线程渲染 + 物理核心亲和性绑定
| 分类 | 技术 |
|---|---|
| 语言 | C++20 |
| 图形 | Vulkan 1.x + GLFW + GLM |
| UI | ImGui(GLFW + OpenGL3 + Vulkan 绑定) |
| 数学 | GLM, Boost.Multiprecision |
| 资产 | Assimp(模型)、FreeType(字体)、stb(图像)、GLI(纹理) |
| 数据 | nlohmann-json, fast-cpp-csv-parser, magic-enum |
| 日志 | spdlog |
| 内存 | VulkanMemoryAllocator |
| 构建 | Visual Studio 2022 + vcpkg |
- Windows 10/11(x64)
- Visual Studio 2022(17.x),安装"使用 C++ 的桌面开发"工作负载
- Vulkan SDK(1.3+)
- vcpkg(已设置
VCPKG_ROOT环境变量)
# 1. 克隆仓库
git clone https://github.com/redamancy231-create/NPGS.git
cd NPGS
# 2. 通过 vcpkg 安装依赖
vcpkg install --triplet x64-windows
# 3. 在 Visual Studio 中打开并构建
start NPGS.sln
# 选择 Release | x64 → 生成 → 生成解决方案 (Ctrl+Shift+B)
# 4. 运行
# 可执行文件位于 NPGS/Win64/NPGS.exe注意: 预编译二进制文件可在 Releases 页面获取。
Linux/macOS 支持计划中,暂不可用。
NPGS/
├── NPGS.sln # Visual Studio 解决方案
├── LICENSE # GPL-3.0
│
└── NPGS/
├── vcpkg.json # 依赖清单
│
├── Sources/
│ ├── Program/ # 游戏逻辑
│ │ ├── main.cpp # 入口点
│ │ ├── Application.cpp/h # 主应用(渲染、输入、UI)
│ │ ├── Universe.cpp/h # 星系生成与管理
│ │ ├── DataStructures.h # GPU Uniform Buffer 结构体
│ │ └── Npgs.h # 聚合头文件
│ │
│ ├── Engine/Core/ # 引擎框架
│ │ ├── Runtime/Graphics/Vulkan/ # Vulkan RAII 封装(~44 个模块)
│ │ ├── Runtime/AssetLoaders/ # 资产管线(纹理、着色器、CSV)
│ │ ├── Runtime/Threads/ # 线程池(物理核心亲和性)
│ │ ├── System/Generators/ # 恒星、轨道、文明生成器
│ │ ├── System/Spatial/ # 八叉树、相机(轨道 + 自由)
│ │ ├── System/UI/ # UI 框架(ScreenManager、组件库)
│ │ └── Types/ # 天体物理类型系统
│ │
│ ├── ExternalImpl/ # stb + VMA 实现单元
│ └── Engine/Utils/ # 日志、随机数、字段反射
│
├── Assets/
│ ├── DataTables/StellarParameters/ # CSV 恒星演化数据表
│ ├── Shaders/ # GLSL/HLSL 着色器
│ ├── Textures/ # 纹理
│ ├── Models/ # 3D 模型
│ ├── Fonts/ # 字体(微软雅黑)
│ ├── Lang/translations.json # 多语言文本(24KB,4 种变体)
│ └── UI/ # UI 资产
│
└── Tools/
├── ShaderCompiler/ # 批量着色器编译(Python)
├── H-RDiagram/ # 赫罗图工具
├── CodeGenerator/ # C++ 样板代码生成器
└── LineCounter.py # 代码行数统计
本项目使用 GNU General Public License v3.0 (GPL-3.0)。详见 LICENSE。
简言之: 你可以自由使用、修改和分发本软件,但任何衍生作品也必须以 GPL-3.0 开源,并同时提供源代码。
- 原作者:baopinshui
- Crytek Nanosuit 模型用于测试资产
- 感谢开源生态:Vulkan、ImGui、GLFW、GLM、Assimp、Boost、FreeType、spdlog 以及更多。
NPGS——"啮星者"——是天体物理、计算机图形学与游戏引擎工程交叉领域的热爱之作。