Skip to content
Daniel Grace edited this page May 16, 2019 · 3 revisions

Opengine is an opinionated, code-first game engine.

Opinionated

Opengine is opinionated in that it has some very strong guiding principles that will not be violated and are also different than many other engines. The largest two are that it uses Vulkan (and only Vulkan), glTF (and not other formats), and is desktop-only.

Being Vulkan-only allows the engine design to warp to Vulkan's improved level of control. Also supporting OpenGL, for instance, would require compromises that other engines have already made, so use those if you want that.

Being glTF-only means that we can fully support the format. No more situations where 40 formats are partially supported and you need to find which format can successfully import animations and textures at the same time.

Being desktop only means that we can assume that we have a fairly high level of power available. We can be built on lwjgl without also having to pull in other libraries for other platforms. We can also expose window movement events and other things that only really happen on desktop.

Code First

There are lots of engines that are GUI-first, such as Unity and Unreal Engine. To make a game you're expected to drag and drop for as much of your logic as possible, and only delve into programming when necessary.

There are also "frameworks" and "libraries" that give you the basics and don't do anything all that complicated (libgdx).

There's a relative dearth of things somewhere in between.

With Opengine you are expected to write code. There is no first-party editor and likely never will be for most things (any first-party editors would be for very narrow things that then wrote json or xml that you could load from code). But Opengine also takes the philosophy that if you want a default implementation for some common feature, you should have that. Spend time polishing the parts of the game that actually matter to your game -- don't write a sub-par version of literally everything.

Clone this wiki locally