Kennismaking met Nau Engine: een open-source game-engine vanaf de broncode bouwen
Er is veel gepraat over Nau Engine, maar aankondigingen op conferenties horen is één ding, en daadwerkelijk duiken in de publieke repository om met de code aan de slag te gaan is iets heel anders. De repository is open, de broncode is beschikbaar op GitHub, en iedereen kan het project naar zijn machine klonen om de architectuur te evalueren of te proberen een testbuild te maken.
De auteurs verklaren onmiddellijk een open distributiemodel: de engine is gratis voor elk doel, inclusief commerciële game-uitgaven, zonder licentiekosten of verborgen royalties. De broncode is openbaar beschikbaar, dus de gemeenschap kan forks, uitbreidingen en pull requests maken.
Wat zit er in de Repository
Als je de NauEnginePublic repository opent, valt je meteen de klassieke C++-stack voor grootschalige projecten op. Er wordt niet geprobeerd het wiel opnieuw uit te vinden met een aangepaste package manager: afhankelijkheden worden binnengehaald via vcpkg, en builds worden beheerd via moderne CMake presets.
De engine zelf is geschreven in C++, maakt actief gebruik van submodules en vereist up-to-date tooling:
- MSVC v143 van Visual Studio 2022
- Huidige versie van Windows 10 SDK
- Python 3.10 of nieuwer voor build scripts
- CMake build-systeem met CMakePresets-ondersteuning
In de huidige fase heeft de repository een duidelijke focus op het Windows-platform. De documentatie beschrijft presets voor Visual Studio 2022 en de Clang-CL met Ninja-combinatie. Ondersteuning voor Linux of macOS is nog niet gedetailleerd in de README, dus het primaire werk scenario is momenteel gekoppeld aan de Microsoft-stack.
Omgeving en Afhankelijkheden Instellen
Een game-engine vanaf nul bouwen vereist altijd geduld. Het eerste wat je moet doen na het klonen van de repository is de submodules ophalen—zonder hen zal het project simpelweg niet configureren:
git clone https://github.com/NauEngine/NauEnginePublic.git
cd NauEnginePublic
git submodule update --init --recursive
Vervolgens komt het werken met de vcpkg package manager. Als je deze nog niet hebt geïnstalleerd, raden de auteurs aan om deze te klonen naar een aparte directory, bijvoorbeeld op c:\tools\vcpkg, en de initialisatie uit te voeren:
cd c:\tools
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
Daarna moet je de VCPKG_ROOT omgevingsvariabele instellen. Zonder deze variabele weet CMake niet waar het moet zoeken naar bibliotheken.
Trouwens, er is een nuttige hint in de repository: als het vcpkg.json-bestand verandert in een branch, is het het beste om een schone build te doen door de werkdirectory te wissen met git clean -d -x -f. Het belangrijkste is om al je niet-opgeslagen wijzigingen vooraf op te slaan, anders zal git ze zonder waarschuwing wissen.
Configuratie en Build-Proces
Zodra de afhankelijkheden op hun plaats zijn, neemt CMake het over. Het project heeft kant-en-klare presets geconfigureerd, dus je hoeft niet tientallen compiler flags handmatig op te geven.
Om het project te genereren voor Visual Studio 2022, voer je uit:
cmake --preset win_vs2022_x64
Als je de voorkeur geeft aan de Ninja en Clang-combinatie, is er een alternatieve preset:
cmake --preset win_ninja_clangcl-debug
Je kunt ook gewoon de projectmap openen in VS Code of Visual Studio. De IDE zal automatisch het CMakePresets.json bestand oppikken en voorstellen om de gewenste configuratie in de interface te selecteren.
Het compilatieproces zelf wordt gestart via CLI of rechtstreeks vanuit de IDE:
cmake --build build\win_vs2022_x64 --config=Debug
Na voltooiing van de compilatie kun je de engine installeren naar een lokale directory output:
cmake --install build\win_vs2022_x64 --config=Debug
In deze map krijg je een build die klaar is voor verdere integratie.
Waarom Ontwikkelaars Deze Code Moeten Bestuderen
Nau Engine is interessant niet alleen voor degenen die van plan zijn om games mee te maken, maar ook voor gewone C++-programmeurs.
Ten eerste is het een verse codebase. Veel populaire engines dragen de bagage van twintig jaar oude beslissingen met zich mee. Hier kun je zien hoe een modern project op de nieuwste C++-standaard wordt georganiseerd, hoe modules worden gesplitst en hoe de asset processing pipeline werkt.
Ten tweede is het project volledig open voor bijdragers. Er zijn open issues en pull requests in de repository, en de gemeenschap begint geleidelijk deel te nemen aan het verbeteren van de engine. Als je op zoek bent naar een complex systeemniveau open source project waar je optimalisaties of nieuwe functies kunt bijdragen, biedt Nau Engine die mogelijkheid zonder de bureaucratie van proprietaire licenties.
Ten derde is het een goede testomgeving voor het experimenteren met aangepaste renderers, fysica-engines of scripting wrappers. Het hebben van een kant-en-klare modulaire structuur bespaart weken van vervelende omgevingsinstelwerk.
Ten vierde is het voor gamestudio's een echte kans om een technologiestack te krijgen die niet afhankelijk is van de grillen van buitenlandse leveranciers en plotselinge veranderingen in licentieovereenkomsten.
Waar te Beginnen
Als het project je interesseert, begin dan simpel: kloon de repository, volg de stappen in de build guide en probeer de engine te bouwen in Debug-modus. Lees de directory structuur door, bekijk de implementatie van basissubsystemen in de broncode en bekijk het Issues tabblad op GitHub. Voor degenen die geïnteresseerd zijn in game engine-ontwikkeling van binnenuit is dit uitstekend studiemateriaal.
Gerelateerde projecten