What Is Crynn?
Crynn is a fast, powerful and simple game engine useful for realtime game experiences and simulations.
​
Crynn is written in C++20 and the renderer is written with OpenGL. It is free and open source and is available here.
![](https://static.wixstatic.com/media/c68286_334a58003c1347de93d8c0ded0065b34~mv2.png/v1/fill/w_731,h_390,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/c68286_334a58003c1347de93d8c0ded0065b34~mv2.png)
Example scene rendered with Crynn
What Can Crynn Do?
Crynn can do a lot of things modern game engines can do! A non exhaustive list of Crynn's features is as follows:
​
-
A robust input/event system
-
A fast OpenGL renderer
-
Quaternion rotations
-
Pointer managed parent child relationships.
-
Simple to setup and use
-
Built in Phong shading and an easily extendable shader API
-
Skyboxes/Cubemapping
-
3D Model Loading
-
Fast texture loading & mapping
-
Robust physics
-
Full rigidbody dynamics with qu3e.
-
GUI Debugging Tools
Keep in mind that this feature list is just a snippet into what Crynn is capable of. It has far more features, and receives new updates all the time.
​
To keep the codebase and engine as simple as possible, Crynn lacks many features other modern game engines may have. Crynn is intended for small and simple games or simulations.
![showcase2.gif](https://static.wixstatic.com/media/c68286_93e6a682a25e4997bd12948192ae2a36~mv2.gif/v1/fill/w_600,h_338,al_c,usm_0.66_1.00_0.01,pstr/showcase2_gif.gif)
Using the transformation hierarchy, a parent child relationship was created between these two backpacks.This allows them to move automatically with each other.
Why Use Crynn?
Crynn is simple!
​
It was built around the principle of simplicity and automation, and maintains it fairly well throughout the codebase.
​
It is made for the quick iteration of very simple graphics applications.
​
In fact, a fully functional instance of the Crynn engine can be created with just two lines in your main function.
​
#include <Crynn.h>
int main ()
{
Engine engine = Engine(800, 600, "Test");
engine.Run();
}