From b85de846815bb3ed4af2b2bbcebe1a400af87e89 Mon Sep 17 00:00:00 2001 From: Kevin Trogant Date: Fri, 28 Jun 2024 16:21:27 +0200 Subject: [PATCH] Add Developer Experience --- Developer-Experience.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Developer-Experience.md diff --git a/Developer-Experience.md b/Developer-Experience.md new file mode 100644 index 0000000..7d94ec9 --- /dev/null +++ b/Developer-Experience.md @@ -0,0 +1,35 @@ +This is the (planned) workflow for engine and game development. +The goal is a smooth experience that reliably delivers stable games. + +## Engine +The engine lives inside [this](https://libneat.hopto.org/git/kevin/rtengine) git repository. +It uses [https://mesonbuild.com/](meson) as it's build system and makes use of it's wrap feature to fetch dependencies (except some that are currently vendored-in inside the contrib/ directory). + +Code changes are pushed to feature branches and trigger a CI pipeline that builds the engine, runs automatic tests and, if successfull, builds a packaged version as an artifact. +The engine contains **libasset_compiler** for building *resources* from source assets. +A command-line tool **assetc** uses this library to build all (changed) source assets during CI execution. +The packaged build also contains the compiled resources. + +**libasset_compiler** can be embedded inside the running game to compile changed assets during runtime for faster iteration speeds. +The resource-system inside the engine notifies other systems about changed resources which can then updated during runtime. + +## Game + +Games use the engine as an subproject (possibly also via meson-wrap) and fix it to a specific version (to prevent engine bugs from breaking game-dev). +The same CI process as for the engine should also apply to the game, with extended and/or replaced tests. + +## Art + +Art needs to be put into the game. For the forseeable future, we don't have in-house artists, so this will mostly go through the same process as Code changes. +In the future, it's possible that artists use a packaged (tested) build from CI to put their assets into the game and check in the assets via git (or a GUI frontend for that purpose). + +## Engine/Game resources combined + +The engine (will) supports a *Virtual File System* that allows us to map multiple "physical" paths to the same "virtual" path. +For example: + +> /game/resources -> /resources +> +> /game/submodules/engine/resources -> /resources + +Resources in both physical directories will show up in the same virtual directory, allowing the game to use resources without distinguishing between engine and game assets.