All Projects → eduard-permyakov → Permafrost Engine

eduard-permyakov / Permafrost Engine

Licence: gpl-3.0
An OpenGL RTS game engine written in C

Programming Languages

python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Permafrost Engine

Etlegacy
ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license.
Stars: ✭ 212 (-75.09%)
Mutual labels:  game-engine, game-engine-3d, opengl
Etlegacy Deprecated
Archived repository. For current repo, see: https://github.com/etlegacy/etlegacy
Stars: ✭ 470 (-44.77%)
Mutual labels:  game-engine, game-engine-3d, opengl
Qfusion
Source code for cross-platform OpenGL gaming engine
Stars: ✭ 255 (-70.04%)
Mutual labels:  game-engine, game-engine-3d, opengl
Spring
A powerful free cross-platform RTS game engine. - Report issues at https://springrts.com/mantis/
Stars: ✭ 2,385 (+180.26%)
Mutual labels:  opengl, game-engine, rts
Tinyengine
Tiny OpenGL Wrapper / 3D Engine in C++
Stars: ✭ 251 (-70.51%)
Mutual labels:  game-engine, game-engine-3d, opengl
Ruby2d
🎮 The Ruby 2D gem
Stars: ✭ 427 (-49.82%)
Mutual labels:  game-engine, opengl
Rizz
Small C game development framework
Stars: ✭ 428 (-49.71%)
Mutual labels:  game-engine, opengl
Oreon Engine
OpenGL/Vulkan Java 3D Engine
Stars: ✭ 431 (-49.35%)
Mutual labels:  game-engine, opengl
3dworld
3D Procedural Game Engine Using OpenGL
Stars: ✭ 527 (-38.07%)
Mutual labels:  game-engine, game-engine-3d
Ncine
A cross-platform 2D game engine
Stars: ✭ 372 (-56.29%)
Mutual labels:  game-engine, opengl
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (-43.83%)
Mutual labels:  game-engine, opengl
Bulllord Engine
lightspeed lightweight elegant game engine in pure c
Stars: ✭ 539 (-36.66%)
Mutual labels:  game-engine, opengl
Fiber2d
Cross-platform 2D Game Engine in pure Swift
Stars: ✭ 415 (-51.23%)
Mutual labels:  game-engine, opengl
Etengine
Realtime 3D Game-Engine with a focus on space sim. Written in C++ 14
Stars: ✭ 408 (-52.06%)
Mutual labels:  game-engine, opengl
Rigelengine
A modern re-implementation of the classic DOS game Duke Nukem II
Stars: ✭ 393 (-53.82%)
Mutual labels:  game-engine, opengl
Xray Oxygen
🌀 Oxygen Engine 2.0. [Preview] Discord: https://discord.gg/P3aMf66
Stars: ✭ 481 (-43.48%)
Mutual labels:  game-engine, game-engine-3d
Ouzel
C++ game engine for Windows, macOS, Linux, iOS, tvOS, Android, and web browsers
Stars: ✭ 607 (-28.67%)
Mutual labels:  game-engine, opengl
Arxlibertatis
Cross-platform port of Arx Fatalis, a first-person role-playing game
Stars: ✭ 602 (-29.26%)
Mutual labels:  game-engine-3d, opengl
Opensage
OpenSAGE is a free, open source re-implementation of SAGE, the 3D real time strategy (RTS) engine used in Command & Conquer: Generals and other RTS titles from EA Pacific. Written in C#. Not affiliated with EA.
Stars: ✭ 735 (-13.63%)
Mutual labels:  game-engine, rts
Yage
Simple game engine, written in C++
Stars: ✭ 7 (-99.18%)
Mutual labels:  game-engine, opengl

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.

Support the project - Wishlist on Steam today!

village lone-warrior gather-1 gather-2 army building battle puzzle main-menu editor

Engine Summary

  • OpenGL 3.3 programmable pipeline (more modern extensions used where available)
  • Custom ASCII model format with Blender export script
  • Skeletal animation with GPU skinning
  • Phong reflection model with materials
  • Directional light shadow mapping
  • Batched rendering with dynamic batches
  • Ringbuffer-based streaming of data to GPU
  • RTS camera, FPS camera
  • Rendering of tile-based map parsed from ASCII file
  • Water rendering (including reflection, refraction, soft edge effects)
  • Export/Import of game entites to/from ASCII files
  • Engine internals exposed to Python 2.7 for scripting
  • 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
  • Pathfinding of different kinds/sizes of units (using "navigation layers")
  • Efficient spatial indexing using a quadtree
  • 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
  • RTS resource gathering (and transporting) mechanics
  • 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
  • Fiber system for putting work in lightweight tasks that are scheduled in userspace
  • Fiber-backed Python tasks, allowing cooperative multitasking logic in Python
  • Cross-platform (Linux and Windows)
  • Windows launcher to automatically capture a minidump and stdout, stderr logs on application error

Dependencies

  • SDL2 2.0.10
  • GLEW 2.1.0
  • python 2.7.17
  • openal-soft 1.21.1
  • 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

  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

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

Comments/Questions

Comments or questions regarding the project or the source code? E-mail: [email protected]. Discuss EVERGLORY and its' development on Discord. Pull requests are not accepted until the release of EVERGLORY, which will coincide with the 1.0 milestone of the engine.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].