Skip to content
 
 

Repository files navigation

NPGS — 冯·诺依曼探测器星系模拟

啮星者 / 达尔文黎明

举目无氢之前 / Before the absence of hydrogen

English version

License C++ Vulkan Platform Stars


这是什么?

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 型)
  • 程序化文明生成(含生命周期阶段)

🎨 图形 & UI

  • 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——"啮星者"——是天体物理、计算机图形学与游戏引擎工程交叉领域的热爱之作。

About

冯·诺依曼探测器星系模拟器 — 广义相对论黑洞渲染 + 程序化星系生成 + 星际文明模拟 | Von-Neumann Probe in Galaxy Simulator: GR black hole rendering + procedural galaxy + civilization sim

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages