Insanity Engine

A high-performance C++ game engine by Uenluom


The website insanityengine.com is not owned by me (they want $4K for it, and I'm not about to reward them for squatting domains for 9 years.).

What is InsanityEngine?

InsanityEngine is a high-performance C++ game engine developed as a learning project as well as to create an engine I fully understood the internals of.

Design Philosophy

I am consistently annoyed by bloated software. Some packages on Linux that seem like they should be simple actually have tens of dependencies that make their installation relatively large.

This can probably be explained reasonably, but I find that software overly depends on other software.

InsanityEngine was an answer to the dependency issue. A game engine should not bloat the executable with tons of old, obsolete code. It should use a minimal set of libraries, only including what is required.

However, InsanityEngine should also be as simple to program for as possible. An engine that is extremely performant but a nightmare to program for is not a solution.

To that extent, I use an interface/implementor architecture for InsanityEngine. For example, there are several graphical backends. To name a few, Vulkan, OpenGL, and DirectX. I think the programmer of a game should not have to worry about the internals of the graphics API. So, we provide interfaces to manage those systems.

This is more future-proof because as time goes on and technologies develop, things like DirectX and OpenGL and Vulkan will disappear. However, as long as the interface exists, a new implementor can take its place.

This has a great benefit for the user: If the developer has abandoned development but their graphics API is unsupported, they can create their own implementor or find one online. They can simply replace their old implementor, and now they can play their game again, as if nothing had gone wrong.

Additionally, if a user knows they will only use one implementor, they can free up disk space by deleting the others. Or an InsanityEngine launcher could force a specific implementor if a game is misbehaving.

In regards to the engine environment itself, I would like to provide something that contains editors for engine file types. The idea is that to make a game in InsanityEngine, you don't need any other programs. Of course, for complicated documents, other editors may be more suitable, but for at least simple edits, the engine alone should suffice.

In summary, the design pillars of InsanityEngine are thus: