SPENG

SPENG is the name of a game engine I am currently developing, it's designed for my project Infernal Descent but I'm trying to build it as open-ended as possible to allow a lot of the engine to be used for future projects too

As it stands, the engine contains an immediate-mode GUI toolkit, an OpenGL model renderer with a custom format with support for multiple sub-meshes, physically based materials (roughness workflow) and skeletal animations imported through a custom tool, Vulkan support is also in the works, but will require a modification of the renderer frontend so that it's not horrible spaghetti code. The entire engine is built on top of a custom asynchronous job system that can schedule tasks on different cores, to allow code to easily make use of multithreading with dependency chains without having to manually specify them.

Originally, the project was being written in C, but I'm rewriting it in a C++ subset for the benefit of slightly nicer APIs that require less memorisation of code, I'm also currently working on a profiler for the job system.

There are currently no downloads or code available, but I have been and will continue to blog about development as it progresses, along with code samples where relevant.

Screenshots

Here are a few select screenshots I took during the development process of SPENG


IMGUI rendering test!

IMGUI menus, with buttons and a graph!

First successful model rendering test

Optimized static mesh renderer rendering 10,000 doorways at 1000 FPS

Tileset editor!

Room editor!

First PBR lighting test

PBR with sample materials (better)

First screen-space point shadows test!