https://github.com/robinsaviary/estroengine
A portable simple-to-use node-based game engine built in C++20.
https://github.com/robinsaviary/estroengine
cpp cpp20 game-engine header-only node-tree
Last synced: 12 months ago
JSON representation
A portable simple-to-use node-based game engine built in C++20.
- Host: GitHub
- URL: https://github.com/robinsaviary/estroengine
- Owner: RobinsAviary
- License: mit
- Created: 2025-03-10T00:06:21.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-10T19:46:54.000Z (12 months ago)
- Last Synced: 2025-04-10T20:39:05.993Z (12 months ago)
- Topics: cpp, cpp20, game-engine, header-only, node-tree
- Language: C++
- Homepage: https://robinsaviary.com/
- Size: 154 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Estroengine v0.1.6
[](https://blinkies.cafe/?s=0023-trans-pride)
An *open source, portable, easy-to-use node-tree-based game engine* built in *C++20*.
The entire engine is ***header-only*** so it can be easily integrated.
Heavily inspired by engines such as [Godot](https://godotengine.org/), [Source](https://developer.valvesoftware.com/wiki/SDK_Docs), and [GameMaker](https://gamemaker.io/en).
### Installation / Building
[Premake](https://premake.github.io/) is a work-in-progress, though I am personally just using a simple include and templates for the backends themself. *(Also make sure you update the specific backend you're using in estroengine.hpp. I'm working on a way to hopefully avoid having to do this in the future.)* The final premake will just be a simple mix of SFML and estroengine.
### Example
This example is the minimum amount of required code to create and manage a window in a way that won't upset whatever system you're working on. Be sure to include an implementation file from `include\backends\`.
```
#include "estroengine.hpp"
rVector2 windowSize = {600, 400};
std::string windowTitle = "Estroengine"
rEngine engine;
int main() {
rInit(windowSize, windowTitle);
while (rIsGameLooping()) {
engine.update();
}
return 0;
}
```
### Backends
Estroengine currently supports two libraries as backends:
* [raylib](https://www.raylib.com/)
* [SFML](https://www.sfml-dev.org/)
### Notes on sub-libraries
Estroengine includes a standalone library, *estrovector*, which is a basic C#-style implementation of math vectors intended for general utility (Basically Vector2 and Vector3).
*Estropathing* is an interface for [Bensuperpc](https://github.com/bensuperpc)'s [A* implementation](https://github.com/bensuperpc/astar).
*Estrocolors* is another technically standalone library that adds a simple but versatile rColor struct.
Gamepads are currently a work in progress and only supported on the SFML backend at the moment.
### Related Reading
I occasionally post about Estroengine on my website:
[](https://robinsaviary.com)