Molten is a engine project I'm working on in my spare time as a means to eventually produce my own games without using a third party engine or framework such as Unity3D or MonoGame.
In the past I've used MonoGame, XNA and Unity3D to produce a game but never felt quite satisfied with the fact that I didn't actually create the foundations myself, as well as feeling frustrated at times by the limitations of third-party frameworks.
While parts of this project will inevitably be a classic case of re-inventing the wheel, I'm teating it as a chance to gain more experience in the area of game engine development.
I've previously attempted a game engine back in 2015 using SharpDX and while it inevitably ended in failure, I learned a great deal in terms of game engine architecture and the way a GPU works under the hood, as well as other high-performance elements, such as multi-threading.
This is my second attempt at such an engine, so being able to share the code for others to learn from and perhaps even contribute to, seems like the right thing to do. Hopefully you'll find something useful around here!
See the following table for the per-platform support and status of each feature.
โ๏ธ Functional/Complete
๐ง Work in progres
Blank - Not Started
๐ซ Not-applicable
Feature | Windows | Android | Linux | Mac |
---|---|---|---|---|
Renderer - OpenGL | ๐ง | ๐ซ | ๐ง | ๐ง |
Renderer - OpenES | ๐ซ | ๐ซ | ||
Renderer - Vulkan | ||||
Renderer - DirectX 11 | โ๏ธ | ๐ซ | ๐ซ | ๐ซ |
Renderer - DirectX 12 | ๐ซ | ๐ซ | ๐ซ | |
Audio - OpenAL | ||||
Audio - XAudio 2 | ๐ซ | ๐ซ | ๐ซ | |
Keyboard support | โ๏ธ | |||
Mouse support | โ๏ธ | |||
Touch support | โ๏ธ | |||
Game pad support | โ๏ธ | |||
Entity component system | โ๏ธ | โ๏ธ | โ๏ธ | โ๏ธ |
Example projects | โ๏ธ | |||
Networking | ๐ง | |||
2D Physics engine | ||||
3D Physics engine | ||||
Google Analytics | ||||
Google AdMob | ||||
Google Firebase | ||||
Tool - Content editor |
See the following table for the per-renderer support and status of each feature.
โ๏ธ Functional/Complete
๐ง Work in progres
Blank - Not Started
๐ซ Not-supported
Feature | DX11 | DX12 | OpenGL | OpenGL ES | Vulkan |
---|---|---|---|---|---|
Deferrend rendering | ๐ง | ||||
Geometry Shaders | โ๏ธ | ||||
Tessellation | โ๏ธ | ||||
Hull & Domain Shaders | โ๏ธ | ||||
Compute Shaders | โ๏ธ | ||||
2D Spite batching | โ๏ธ | ||||
2D Primitive batching | โ๏ธ | ||||
Compressed textures | โ๏ธ | ||||
Hardware instancing | |||||
Occlusion culling | |||||
Frustrum culling | |||||
Portal culling | |||||
Level of Detail (LoD) | |||||
HDR support | |||||
2D Texture arrays | โ๏ธ | ||||
3D Texture arrays | โ๏ธ | ||||
3D/volume textures | โ๏ธ | ||||
static skyboxes | โ๏ธ | ||||
real-time skyboxes | |||||
multi-window support | โ๏ธ | ๐ซ | |||
Render into WinForms | โ๏ธ | ๐ซ | ๐ซ | ๐ซ | |
Render into WPF | ๐ซ | ๐ซ | ๐ซ | ||
Render into UWP | ๐ซ | ๐ซ | ๐ซ | ||
Render into MAUI | |||||
Render into Android UI | ๐ซ | ๐ซ | ๐ซ | ๐ซ | |
Raytracing | ๐ซ | ๐ซ | ๐ซ |
A special thanks to each of these great libraries, without which Molten wouldn't exist in it's current form:
- SharpDX - DirectX bindings for C#
- Magick.NET - Extensive image library for .NET
- JSON.NET - JSON serialization
- OpenTK - OpenGL, OpenAL and input bindings for C#
MIT - You can do what you want with Molten. Fork it, chop it up and consume it for dinner. You get the idea!