Skip to main content

Source code layout

This page lists the directories in FakeEngine's code and their use.

Directory layout

Root folder

Directory / Fileuse
/FakeDemos/Contains demo applications, that showcases the features of the engine.
/FakeDocs/Contains the api documentation for the core engine.
/FakeEngine/Contains the source code for the core engine.
/FakePlugins/Contains N submodules, each representing a single plugin that is hooked into the core engine.
/FakeRuntime/Contains the source code for the base client application, that executes a game as a standalone application.
/FakeSandbox/Contains the source code for the Sandbox, a client application, that is used during development to test different new features.
/FakeScripts/Contains the source code for many different smaller python scripts, mainly used in CI.
/FakeTests/Contains the source code for the unit tests of the core engine.
/FakeVersionGen/Contains the source code for a utility tool, to generate independent version numbers for the core engine and plugins.

Core engine

Directory / Fileuse
/FakeEngine/assets/Contains the assets used with the engine, all assets places in here will be shipped with the executable later.
/FakeEngine/src/Application/Contains the main code, driving the life cycle of the engine and containing the game loop.
/FakeEngine/src/Containers/Contains the base data structures, used widely in the engine, like dynamic arrays, lists, queues, etc.
/FakeEngine/src/Core/Contains the very core of the engine, like memory headers, plugin manager, systems manager, logging and asserts.
/FakeEngine/src/Interfaces/Contains general interfaces, which are mostly used for plugins, because the engine needs more knowledge about core plugins.
/FakeEngine/src/Loaders/Contains all loaders of the engine.
/FakeEngine/src/Math/Contains the math code of the engine, like vectors, matrices, quaternions and base math operations all in the field of linear algebra.
/FakeEngine/src/Networking/Contains the networking code, like general socket implementations, http clients and game networking code.
/FakeEngine/src/Platform/Contains the platform code, distingueshed in Windows, Linux, MacOS for now. Android, iOS will also follow soon.
/FakeEngine/src/Plugin/Contains the base structure for the plugins, like the plugin definition and base plugin operations.
/FakeEngine/src/Renderer/Contains the renderer code, but only the frontend code, that is used widely in the engine to draw through the GPU to the screen, the backend code is placed in own plugins.
/FakeEngine/src/Resources/Contains general resources used widely in the engine, for resource loading and representation of client data.
/FakeEngine/src/Systems/Contains most of the systems, systems are designed to only be the frontend for their functionality, meaning that the systems are supposed to be used by engine and client code. The backend of each system is often a plugin.
/FakeEngine/src/Threading/Contains code for multithreading.
/FakeEngine/src/Utils/Contains utility code, essentially global helpers for the engine.
/FakeEngine/src/Vendor/Contains third-party code, for now only stb_image and stb_freetype. Later the third-party code shall be replaced by own implementations.
/FakeEngine/src/Window/Contains general code for window operations, like window creation, backbuffer switching, native input handling.
/FakeEngine/src/Defines.hContains global defines for the engine and client code. Mostly widely used macros or base types.
/FakeEngine/src/EntryPoint.hContains the main entrypoint for the engine and client applications, no client has to provide an entry point, but only fulfill the interface for client applications.
/FakeEngine/src/Fake.hGlobal header file, that contains most core systems that are meant to be public. When included, all public functions are exposed to the client.
/FakeEngine/src/FakeVersion.hAutomatically generated by the FakeVersionGen tool. Do not change or delete this file, contains only the version string as a macro.