Skip to content

Latest commit

 

History

History
141 lines (97 loc) · 4.85 KB

File metadata and controls

141 lines (97 loc) · 4.85 KB

MeltedForge

MeltedForge is a game engine written in C using Vulkan, with a focus on minimal dependencies, performance, and clean design.

MeltedForge Logo


Features

  • A Basic ECS
    • Material system
    • Basic scene management
  • Model loading along with the material data
    • Can load complex models (Tested with Sponza & Bistro Internal)
  • Engine & editor level UI
    • UI customization (Using Dear ImGui's styles)
  • 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.
  • Skybox support (Equirectangular image as input only. HDR format also supported!)

WIP (Work In Progress)

  • Documentation

Reasons for starting

  • Partly to satisfy my curiosity.
  • To showcase what C can really do in game/game engine dev these days
  • To serve as a helpful learning resource for both me (@CloudCodingSpace) and other devs
  • To gain experience in this field

Goals

  • Beginner-friendly setup and usage
  • Low-end device friendly
  • Cross-platform (Only on desktop platforms)
  • Realistic graphics
  • Sound system support
  • Animation system
  • Multithreading
  • Async resource handling

Documentation

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.


TODO list

There is a public read-only todo list of this engine. It is hosted on trello. It can be found here


Dependencies

Note: The following are the important conditions met by the PC for building/running MeltedForge

  • Vulkan SDK (Get from here)
  • A GPU driver with modern Vulkan support (Vulkan 1.2+)
  • A modern C & C++ compiler with the support of latest language standards with the corresponding runtime libraries and build toolchain (Preferably GCC & G++ or MSVC, but currently clang is not tested and is not supported)
  • CMake (Get from here)

Build Instructions

Note: This repo uses submodules. Make sure to clone it recursively.

git clone --recursive https://github.com/CloudCodingSpace/MeltedForge.git

The 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

Technical Details (For developers and nerds)

  • 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.

Third party libraries

The third party libraries used in this engine are :-

  • Stb (For image loading)
  • Assimp (For loading models)
  • Glfw (For cross-platform windowing and input handling)
  • Slog (For logging)
  • Tracy (For profiling, only in debug mode with the MSVC compiler)
  • CImGui (C bindings for ImGUi, used for editor UI)

Licenses for these libraries are included. (In MeltedForge/libs, in their own respective folders)


Acknowledgement

This project may not have been possible if not for some of these sources and communities :-


License

This project is licensed under the Zlib license. More details in LICENSE.txt.