MeltedForge is a game engine written in C using Vulkan, with a focus on minimal dependencies, performance, and clean design.
- Model loading along with the material data
- Engine & editor level UI
- UI customization
- Render targets
- Objects with functionality to set the render output to an image, which can be used to render the scene inside an UI panel like the scene viewport
- A binary serialization/deserialization api
- Explicit shader resource management control for resources like UBOs and image samplers.
- Material system
- Entity Component System (ECS)
- Loading complex model scenes
- Documentation
- Partly to satisfy my curiosity.
- To showcase what C can really do in modern day
- To serve as a helpful learning resource for both me (@CloudCodingSpace) and other devs
- To gain experience in this field
- Beginner-friendly setup and usage
- Low-end devices friendly
- Cross-platform (Only on desktop platforms)
- Realistic graphics
- Sound system support
- Animation system
- Multithreading
- Async resource handling
Note: The documentation is currently a work in progress. The github repo is here.
The deployed url for the docs is here. It would be great if it would be pointed out for any grammartical errors or any suggestions spotted. If so, then it would be much appreciated if a pull request is opened in the documentation's repo.
There is a public read-only todo list of this engine. It is hosted on trello. It can be found here
Note: The following are the important conditions met by the PC for building/running MeltedForge
- Vulkan SDK (Get from LunarG)
- A GPU driver with modern Vulkan support (Vulkan 1.2.000+)
- A modern C & C++ compiler with the support of latest language standards with the corresponding runtime libraries (Preferably GCC & G++ or MSVC, but currently clang is not tested and is not supported)
- CMake (Get from here)
- Make if using GCC & G++
Note: This repo uses submodules. Make sure to clone it recursively.
git clone --recursive https://github.com/CloudCodingSpace/MeltedForge.gitThe make change the directory into the repo's remote folder/directory. Then create a folder/directory like bin/out/build for the binary output. Then run the following commands :-
cmake -S . -B <path-to-build-dir>
cmake --build <path-to-build-dir> --parallel- This engine is mostly using C. But there is some usage of other languages like C++ since 3rd party vendors like Dear ImGui and Assimp use it.
- Currently supports compilers like GCC, G++ and MSVC.
- Aims at having support for Clang & Clang++, but currently it is not tested and does not have official support for it.
- Currently tested in and developed on Windows with MSVC and GCC/G++
- Linux isn't tested yet.
The third party libraries used in this engine are :-
Licenses for these libraries are included. (In MeltedForge/libs, in their own respective folders)
This project may not have been possible if not for some of these sources and communities :-
- LearnOpenGL for foundation of graphics
- Vulkan tutorial for basics of vulkan
- Graphics programming discord server's community. Link
- Polyhaven for free, 3D assets
This project is licensed under Zlib license. More details in LICENSE.txt.
