本页目录

Oolite:开源 Elite 风格太空模拟游戏(Objective-C)

oolite · OoliteProject/oolite

Oolite 是一款开源太空模拟游戏,其 README 自述为“开源版 Elite 的强化版”:它既能像原作一样在现代电脑上运行,也能通过 Oolite Expansion Packs 进行大幅扩展。主仓库以 Objective-C 编写,官方提供主页、Wiki、论坛与 readthedocs 文...

策略 自研引擎 C 程序化生成 动画系统 渲染技术 高级
★ Stars 678 Forks 88 License 未明确 更新 2026-11-08

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
未知
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
README 摘录未给出完整编译依赖与平台支持说明,国内编译环境待核验;使用 OpenGL 3.3 需注意显卡驱动支持;脚本层为 Python 2.7,环境较旧,配置时需留意;Steam Demo 访问可能受网络影响。

中文项目介绍

Permafrost Engine 是一个以 C 语言从零编写、基于 OpenGL 3.3 可编程管线的实时战略(RTS)游戏引擎。README 的自述是「以老派经典为蓝本,同时融入一些现代思路」。它并不试图做成一个面面俱到的通用引擎,而是围绕 RTS 这一具体品类的实际需求逐步搭建起来的一整套技术栈:渲染、动画、寻路、群体移动、编辑器、脚本层、存档与调试工具各自独立成块,又通过统一的事件与任务系统串起来。配套的旗舰作品 EVERGLORY 已在 Steam 上架并提供免费 Demo,Demo 中附带了驱动玩法的全部脚本,可以学习与修改。

渲染方面,引擎使用 OpenGL 3.3 可编程管线,并在可用时启用较新的扩展。模型采用自定义文本格式便于与外部工具互通,运行期再烘焙成二进制格式加快加载;骨骼动画采用 GPU 蒙皮,并把动画姿态数据批处理写入纹理,以支撑大量动画单位同时渲染。光照为 Phong 反射模型加材质,配合方向光阴影贴图;支持凹凸贴图、法线贴图与视差贴图;地形使用纹理 splatting,另有天空盒、基于距离的网格 LOD 以及远景单位的 billboard 渲染。批次渲染使用动态批次,数据通过环形缓冲流式传送到 GPU。水面渲染包含反射、折射与软边缘效果;纹理可以用 Image Quilting 算法程序化合成,地图平面则用 Wang Tiling 做非周期平铺。

核心功能

核心特性

RTS 玩法侧的系统覆盖得相当完整:RTS 摄像机与 FPS 摄像机、基于瓦片的自定义地图格式、小地图与 RTS 风格单位选择、单位战斗系统、战争迷雾、基地建造机制、工人与生产的可配置自动化、资源采集与运输、单位驻扎与运载,以及基于弹道物理模拟的远程交战。移动与寻路是这套引擎的重点:包含 boids 群体转向与聚集行为、分层流场寻路、动态障碍处理、用 Hybrid Reciprocal Velocity Obstacles 与 ClearPath 算法做多单位动态避障、编队移动与基于匈牙利算法的最优编队重排;并用「导航层」区分不同种类与体型的单位,支持陆地、水面与空中三类单位的寻路;移动与寻路计算做了并行加速,还实现了基于 compute shader 的 GPU 人群模拟。空间索引使用 SIMD 加速的位图网格,并能实时跟踪实体对动态空间区域的归属。音频系统支持定位音效以及多路全局音效通道。

脚本与工具链是这个项目的另一条主线。引擎内部暴露给 Python 2.7,并内嵌交互式 Python 控制台;有独立的事件系统、基于 Nuklear 的 UI 框架、高效的射线拾取、地图与场景编辑器、暂停/恢复系统,以及面向超大地图的快速渲染和导航图/网格生成。工程化能力上也做了不少工作:可对整个 Python 解释器状态做序列化与反序列化,因此任意引擎会话(包括 Python 定义的全部状态)都能存档与恢复;使用页级写时复制语义实现状态零拷贝 fork;用 fiber 系统把工作拆成用户态调度的轻量任务,并让 Python 任务跑在 fiber 之上以获得协作式多任务;整体是多线程的两段式流水线,模拟与渲染分阶段执行;此外还有调试可视化与性能剖析插桩、用于实时追踪内存分配的轻量内存计量。

技术架构分析

技术要点

平台与构建方面,README 明确声明跨平台支持 Linux 与 Windows。Linux 下依次执行 make deps 构建共享库依赖到 ./lib、make pf 编译引擎,随后可用 make run 启动 Demo、make run_editor 启动地图编辑器,或用 make launchers 生成无需参数的 ./demo 与 ./editor 可执行文件。Windows 下可用 mingw-w64 交叉编译工具链在 Linux 主机上构建(在 make 环境传入 PLAT=WINDOWS 即可),也可在 Windows 上用 MSYS2 原生构建,仓库根目录另提供 Visual Studio 2022 的解决方案文件。依赖包括 SDL2 2.30.0、GLEW 2.3.1、Python 2.7.17、openal-soft 1.21.1、mimalloc 2.2.3,以及 stb_image、khash、nuklear 等单头文件库;这些依赖都可以从源码构建并随游戏二进制一起分发,Python 则以裁剪过的模块子集与精简标准库打包。源码以 GPLv3 附特殊链接例外发布,其他授权可按个案商谈。

适合谁来读这套代码:想弄清一款 RTS 从渲染、动画、寻路、群体避障到存档、多任务、编辑器全链路的开发者,可以按模块对照 README 的特性列表逐个深入;对 C 语言工程实践、C 与 Python 混合脚本层、以及大规模单位渲染优化感兴趣的读者也能从中找到参考。需要注意的是门槛偏高,阅读前最好熟悉 C、OpenGL 与常见构建工具链;脚本层停留在 Python 2.7,与当下生态差距较大;国内构建时 make deps 需要能顺利拉取多个第三方库源码,网络与镜像情况待核验,Steam Demo 的获取也可能受商店访问条件影响。

开源许可证与版权说明

许可证标识:未明确。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目