Representing scenes as solid geometry, quantified as voxels, has several advantages. Most notably, intersection testing is very fast, making high quality light transport and physics simulations possible. It specifically makes rendering scenes using path tracing possible, which carries two great advantages.
- Realism. By staying true to the rendering equation, light phenomena such as soft shadows, color bleeding and reflections are naturally simulated by the path tracing algoritm.
Scalability. The best case time complexity of ray tracing derivatives (incl. path tracing) is
nis number of objects in the scene. This opens the door to having very detailed objects and scenes.
Combining these advantages can produce stunning graphics with a very distinctive aesthetic, informally known as voxel art. Up until recently, rendering path traced voxel art has been too computation heavy to do in real-time, but advances in consumer graphics cards have now made it possible.
TL;DR Solid Engine aims to be the first game engine that can render detailed interactive voxel worlds beautifully, in real-time.
Philosophy, goals and tradeoffs
Most modern game engines try to make game development as straightforward as possible for cross-functional teams. Tooling and workflows are optimized for squeezing extra programming capacity out of semi-technical team members, by means of e.g. "node editors" (i.e. visual programming) or simple scripting languages. Solid Engine is taking a more uncompromizing route, explicitly catering to small teams, consisting of dedicated programmers and creatives, where the programmers are solely responsible for turning the art and visions of the creatives into interactive games.
Combined with voxels and path tracing (which require no light maps, normal maps, height maps, LOD, ...), this tradeoff allows Solid Engine to simplify large parts of the content creation pipeline. The ambition is to make it as fun and easy to create a 3D "voxel art" game, as it is to create a 2D "pixel art" game. This approach should work well for certain game types and teams but does not scale to AAA game situations, making Solid Engine a decidedly indie game engine.
Under this premise, making game development iteration times short can be achieved by the following.
- All code is written in a single language, Rust, making it trivial to treat code as data.
- Content tools can be simplified and specialized to a clear user persona, making them more productive.
- Engine architecture can be more opinionated, allowing e.g.
Being the experimental game engine that it is, it also contains some fun and novel components.
These components are of course optional, which brings us to the final goal; modularity. Solid Engine is designed as a library rather than a framework, where the game code composes and calls into the engine, rather than the other way around.
In general, the philosophy is that the engine focuses on a small subset of games programming (rendering, UI, state management) and does that really well. For the remaining parts (windowing, input, math, audio, physics, ECS), it composes existing best-in-class solutions.
Current status and roadmap
Solid Engine has been developed as a spare-time project of the author since 2015, based on the hypothesis that real-time dynamic global illumination ought to be theoretically possible. Only now, as of 2021, has the engine reached a point where that hypothesis can be considered proven; the engine is capable of rendering an interactive, globally illuminated, voxel world with moving objects at 40 FPS on an Nvidia GTX 1080 graphics card. Render performance is expected to scale linearly with the number of graphics card compute cores, hinting of a bright future.
The end goal is to release the entire engine as open source software, but the code is not ready for that just yet - it lacks some basic features that can be expected from a game engine, as well as tests and documentation. On a more positive note, the author has taken a leave of absence for six months, starting September 1 2021, to work full time on this project!
The engine consists of many parts and tools, of which several are standalone. The plan is to start releasing some of them individually during the fall of 2021, as they can hopefully be of use in other projects, before Solid Engine is released as a whole.
|Ball Pointer||Component||Fall of 2021|
|State management||Library||Fall of 2021|
|UI||Library||Beginning of 2022|
|Main engine||White whale||First half of 2022|