依赖需先执行 make deps 从源码构建到 ./lib,且版本被固定(如 SDL2 2.30.0、Python 2.7.17);脚本层绑定的是 Python 2.7 而非 Python 3;Windows 构建需给 make 传 PLAT=WINDOWS 或改用 VS2022 解决方案。

git clone https://github.com/eduard-permyakov/permafrost-engine.git
cd permafrost-engine
make deps
make pf
make runREADME 未说明具体显存或 GPU 型号要求,仅要求支持 OpenGL 3.3;跨平台支持 Linux 与 Windows。
用 C 写的 OpenGL 3.3 实时战略游戏引擎,自带寻路、编队、战争迷雾等 RTS 全套机制
用 C 语言写的 OpenGL 实时战略游戏引擎,自带渲染管线和 RTS 玩法基础,适合想从零搭 RTS 或研究 3D 渲染的开发者。
核心能力
- OpenGL 3.3 可编程管线,支持骨骼动画 GPU 蒙皮与动画姿态批量贴图
- 分层流场寻路,支持动态障碍、导航层与陆海空单位
- 用 HRVO 与 ClearPath 做多实体动态避障
- 匈牙利算法做编队最优重排,支持编队移动与放置
- 引擎内部暴露给 Python 2.7,内置交互式控制台与地图编辑器
容易踩的坑
暂无 release 数据(可能没有发版,或尚未同步)。
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Support the Development - Wishlist EVERGLORY on Steam
Permafrost Engine is an OpenGL 3.3 Real Time Strategy game engine written in C. It is made in the image of old classics, but incorporating some modern ideas.
Engine Showcase

EVERGLORY is the flagship game developed using Permafrost Engine.
Download the free demo on Steam. With the demo you also get access to all the scripts powering the gameplay to learn from and modify as you wish.

Engine Summary
- OpenGL 3.3 programmable pipeline (more modern extensions used where available)
- Custom text model format for interoperability with tools; baked binary format for fast runtime loading
- Skeletal animation with GPU skinning
- Batching of animation pose data to a texture for performant rendering of large numbers of animated entities
- Phong reflection model with materials
- Directional light shadow mapping
- Bump mapping, normal mapping, parallax mapping
- Terrain texture splatting
- Skybox
- Distance-based mesh level-of-detal (LOD) rendering
- Billboarding for efficient rendering of huge numbers of distant entities
- Batched rendering with dynamic batches
- Ringbuffer-based streaming of data to GPU
- RTS camera, FPS camera
- Rendering of tile-based map with custom file format
- Water rendering (including reflection, refraction, soft edge effects)
- Programmatic synthesis of textures using the Image Quilting algorithm
- Aperiodic tiling of the map plane using the Wang Tiling algorithm
- Engine internals exposed to Python 2.7 for scripting
- Embedded interactive Python console
- Event system
- UI framework (Nuklear-based)
- Efficient raycasting
- Map/Scene editor
- Pause/Resume system
- Fast rendering of huge maps
- Map navigation graph/grid generation
- Implementation of 'boids' steering/flocking behaviours
- Hierarchial flow field pathfinding
- Handling of dynamic obstacles in pathfinding
- Dynamic collision avoidance of multiple entities using Hybrid Reciprocal Velocity Obstacles and the ClearPath algorithm
- Formation-based unit movement and placement
- Optimal formation re-shuffling using the Hungarian Algorithm
- Pathfinding of different kinds/sizes of units (using "navigation layers")
- Pathfinding of Land, Water, and Air units
- Movement and pathfinding computations accelerated with parallelism
- GPU-based crowd simulation with compute shaders
- Efficient spatial indexing using a SIMD-accelerated bitmap grid
- Efficient real-time tracking of entity membership to dynamic spatial regions
- Audio system supporting positional effects and multiple channels of global effects
- RTS minimap
- RTS-style unit selection
- RTS unit combat system
- RTS fog-of-war system
- RTS base-building mechanics
- Configurable automation of workers and production
- RTS resource gathering (and transporting) mechanics
- RTS unit garrison and transport mechanics
- Ranged combat using an efficient projectile physics simulation
- Support for different resolutions and aspect ratios
- Configurable graphics settings
- Serialization and deserialization of the entire Python interpreter state
- Saving and restoring of any engine session, including all Python-defined state
- Multithreaded: simulation and rendering in a 2-stage pipeline
- Advanced debug visualizations and profiling instrumentatation
- Lightweight memory accounting for realtime tracking of allocations
- Fiber system for putting work in lightweight tasks that are scheduled in userspace
- Fiber-backed Python tasks, allowing cooperative multitasking logic in Python
- Zero-copy forking of state using page-level Copy-on-Write semantics
- Cross-platform (Linux and Windows)
- Windows launcher to automatically capture a minidump and stdout, stderr logs on application error
Dependencies
- SDL2 2.30.0
- GLEW 2.3.1
- python 2.7.17
- openal-soft 1.21.1
- mi-malloc 2.2.3
- stb_image.h, stb_image_resize.h
- khash.h
- nuklear.h
All dependencies can be built from source and distributed along with the game binary if desired. Python is built with a subset of the default modules and packaged with a trimmed-down stdlib.
Building Permafrost Engine
For Linux
git clone https://github.com/eduard-permyakov/permafrost-engine.gitcd permafrost-enginemake deps(to build the shared library dependencies to./lib)make pf
Now you can invoke make run to launch the demo or make run_editor to launch the map editor.
Optionally, invoke make launchers to create the ./demo and ./editor binaries which don't
require any arguments.
For Windows
The source code can be built using the mingw-w64 cross-compilation toolchain
(http://mingw-w64.org/doku.php) using largely the same steps as for Linux. Passing PLAT=WINDOWS
to the make environment is the only required change.
The compliation can either be done on a Linux host, or natively on Windows using MSYS2 (https://www.msys2.org/).
git clone https://github.com/eduard-permyakov/permafrost-engine.gitcd permafrost-enginemake deps PLAT=WINDOWSmake pf PLAT=WINDOWSmake launchers PLAT=WINDOWS
Alternatively, a Visual Studio 2022 solution file is provided in the root directory of the project.
Devlog
Follow the development of Permafrost Engine and EVERGLORY on YouTube.
Indie RTS Devlog #1: Introducing Permafrost Engine
Indie RTS Devlog #2: Saving The Python Interpreter
Indie RTS Devlog #3: Group Pathfinding
Indie RTS Devlog #4: Fog of War
Indie RTS Devlog #5: Performance Optimization
Indie RTS Devlog #6: Fibers, Async Jobs
Indie RTS Devlog #7: Main Menu UI, Loading Missions
Indie RTS Devlog #8: Python Tasks + Making Pong!
Indie RTS Devlog #9: Base Building
Indie RTS Devlog #10: Demo Gameplay
Indie RTS Devlog #11: Resource Gathering, Game Design
Indie RTS Devlog #12: Crafting Units
Indie RTS Devlog #13: Large Unit Pathfinding
Indie RTS Devlog #14: Projectiles, Big Battles
EVERGLORY - Official Trailer (2021 Indie RTS)
Indie RTS Devlog #15: Unit Formations
EVERGLORY (Indie RTS Game) - Pathfinding Showcase
Indie RTS Devlog #16: Land, Water, and Air
Indie RTS Devlog #17: Economy + NEW DEMO
Indie RTS Devlog #18: Improved Map Rendering
EVERGLORY: Teaser Trailer #2 [Indie RTS Game]
EVERGLORY: Teaser Trailer #3 [Indie RTS Game]
License
The source code of Permafrost Engine is freely available under the GPLv3 license, with a special linking exception. However, I may grant permission to use parts or all of the code under a different license on a case-by-case basis. Please inquire by e-mail.
Comments/Questions
You may contact me with any questions, comments, or concerns pertaining to the source code or the underlying algorithms. In addition, you may solicit me regarding interesting job opportunities.
Discuss EVERGLORY and its' development on Discord.
My e-mail is: [email protected]
