Work in progress. These docs are new and are likely missing a lot of info. If you notice something wrong or missing, open an issue. PRs are welcome as well.

A tour of the codebase

What goes where?

Top-level directories

Folder What's in it
Source All the engine and editor code
Config Engine and runtime settings (EngineConfig.json, GlobalConfig.json) and their per-platform versions, device tier rules (DeviceTiers.hmf), and the list of shaders to compile (Shaders.hmf).
Content Assets for the core engine and editor
External Third-party code: Git submodules and prebuilt libraries.
Tools Build and packaging scripts, CodeGenTool source and other misc tools
Documentation Longer guides, like compiling the engine and the console, and third-party licenses.
Build, Binaries Where your build output goes Not committed, these are excluded via .gitignore
PackagedBuilds Output of the packaging scripts. Also not committed.

Source structure

Folder What's in it
Core containers, memory, reflection and so on. Keeps its dependencies to a minimum. This is also re-used in our CodeGenTool, not tied to the engine
Engine The main engine library: rendering, scenes, physics, networking, scripting and so on.
Editor The editor's code. C++ and C# mixed (bindings are C++, actual editor UI is C#)
Shaders HLSL shaders, compiled with DXC.
Commandlets See console
Sample The sample games: DefaultGame (C++, builds hyperion-sample) and CSharpGame (C#)
Templates The templates the editor uses to generate game projects, in C++ and C#, and the web page for web builds
PlatformSpecific Per-platform projects, like the Android Gradle project
Generated CodeGen output. Don't edit by hand, it'll be overwritten on next cmake configure!

Improve this page on GitHub