flingengine / FlingEngine

A Vulkan game engine with a focus on data oriented design
https://fling-engine.site/
MIT License
408 stars 16 forks source link

Split up the engine into "Modules" #169

Open BenjaFriend opened 2 years ago

BenjaFriend commented 2 years ago

We need to separate out each feature of the engine into a modular build target. We should have "Modules" for different parts of the engine to reduce dependencies and make for a scalable compile infrastructure.

For example, no gameplay code needs to know anything about rendering, so it should be in it's own separate build module and have a separate "_API" export.

We can accomplish this with CMake I think, but I'm not an expert in CMake by any means to this may be tricky to get to a state where adding new modules is simple and easy. I basically want something conceptually similar to how Unreal handles this with the build.cs files, so that for each module can have it's own set of dependencies.

We could even go as far as to break certain modules out into their own Submodules, so that active development on something like rendering for example has no effect on development on Gameplay.