eduard-permyakov / permafrost-engine

An OpenGL RTS game engine written in C
GNU General Public License v3.0
2.65k stars 114 forks source link
c game-engine game-engine-3d opengl python real-time-strategy rendering-3d-graphics rts rts-engine

Logo

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-banner

EVERGLORY is the flagship game developed using Permafrost Engine.

Download the free (or donate what-you-want) demo on itch.io or on Steam. With the demo you also get access to all the scripts and assets powering the gameplay to learn from and modify as you wish.

screenshot-01 screenshot-02 screenshot-03 screenshot-04 screenshot-05 screenshot-06 screenshot-07 screenshot-08 screenshot-09 screenshot-10 screenshot-11 screenshot-12 screenshot-13 screenshot-14 screenshot-15 screenshot-16

Engine Summary

Dependencies

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

  1. git clone https://github.com/eduard-permyakov/permafrost-engine.git
  2. cd permafrost-engine
  3. make deps (to build the shared library dependencies to ./lib)
  4. 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/).

  1. git clone https://github.com/eduard-permyakov/permafrost-engine.git
  2. cd permafrost-engine
  3. make deps PLAT=WINDOWS
  4. make pf PLAT=WINDOWS
  5. make launchers PLAT=WINDOWS

Alternatively, a Visual Studio 2022 solution file is provided in the root directory of the project.

License

Permafrost Engine is licensed under the GPLv3, with a special linking exception.

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

EVERGLORY: Teaser Trailer #1

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]

Comments/Questions

Comments or questions regarding the project or the source code? E-mail: edward.permyakov@gmail.com. Discuss EVERGLORY and its' development on Discord. If you have a useful fix for a non-trivial engine issue, feel free to make a PR. Be warned that I will scrutinize every patch to make sure it meets my personal quality standards for the engine code. It you wish to evolve the engine in some way and want the changes to be upstreamed, then do get in touch to discuss it.