Monday 25 December
The overarching objective of this project is to maximize performance without tethering itself to a specific hardware architecture. The aim is to cultivate a profound, low-level comprehension of the foundational concepts within the computer resources available to a programmer. In pursuit of this goal, the chosen approach involves crafting the program in pure C—a language celebrated for its proximity to the hardware and expansive ecosystem.
An additional strategic consideration stems from the observation that the most substantial WebGPU development effort presently resides in 'Dawn,' a framework written in C. This choice facilitates direct control over the graphics pipeline. Consequently, the anticipated core stack is likely to encompass the following elements:
WebGPU (Graphics—WGSL shaders)
Emscripten (WASM)
SDL2 (Window + context creation, audio, inputs)
Enet (Bespoke UDP networking architecture)
Other dependencies:
Upon thoughtful analysis of factors such as long-term stability, learning curve, and bloat, the aforementioned stack is poised to yield a robust, low-level API that not only ensures optimal performance but also provides ample room for optimisation opportunities. This approach sidesteps unnecessary complications associated with wasting time reinventing established solutions and emphasises a high level of cross-compatibility. This adaptability extends to targeting both mobile and desktop platforms through web and native applications, with the potential for future integration of console support.
The current foundational framework is pivotal for the project's development, emphasising the need to carefully consider the inherent limitations of the chosen medium from the outset. This foresight is crucial to preemptively address potential challenges that may arise in the project's trajectory. These dependencies serve as a runway that will quickly get the project running and it's important that there is sufficient capability to expand in the future until limitations are encountered.
Another goal in the project is to make a truly multi-threaded engine where concurrency is used where possible. Modern machines often have multiple cores and parrellism is of the utmost importance to maximise performance. Modular design and a data-driven approach are also core philosophies of the engine. Each component of the engine should be able to be designed, integrated, and tested independently and cohere with the larger engine easily, similar to the 'Bevy' engine. Finally in the production of this engine, I will review the source codes of popular open sourced engines such as iD software's now open-sourced id-Tech 4 engine, Godot, Bevy, and Unreal to learn lessons and apply similar patterns as and where are relevant.