Nau Engine kennenlernen: Eine Open-Source-Spiele-Engine aus dem Quellcode erstellen
Nau Engine wurde viel besprochen, aber Konferenzankündigungen sind das eine – und den Code tatsächlich auszuprobieren, ist etwas anderes. Das Repository ist offen, der Quellcode ist auf GitHub verfügbar, und jeder kann das Projekt auf seinen Rechner klonen, um die Architektur zu evaluieren oder einen Test-Build zu erstellen.
Die Autoren erklären sofort ein offenes Vertriebsmodell: Die Engine ist für jeden Zweck kostenlos, einschließlich kommerzieller Spieleveröffentlichungen, ohne Lizenzgebühren oder versteckte Tantiemen. Der Quellcode ist öffentlich verfügbar, sodass die Community Forks, Erweiterungen und Pull-Requests erstellen kann.
Was sich im Repository befindet
Wenn Sie das NauEnginePublic-Repository öffnen, werden Sie sofort einen klassischen C++-Stack für groß angelegte Projekte bemerken. Es wird kein Versuch unternommen, das Rad neu zu erfinden: Abhängigkeiten werden über vcpkg eingebunden, und Builds werden über moderne CMake-Presets verwaltet.
Die Engine selbst ist in C++ geschrieben, nutzt aktiv Submodule und erfordert aktuelle Tools:
- MSVC v143 aus Visual Studio 2022
- Aktuelle Version des Windows 10 SDK
- Python 3.10 oder neuer für Build-Skripte
- CMake-Build-System mit CMakePresets-Unterstützung
Im aktuellen Stadium konzentriert sich das Repository klar auf die Windows-Plattform. Die Dokumentation beschreibt Presets für Visual Studio 2022 und die Kombination aus Clang-CL mit Ninja. Die Unterstützung für Linux oder macOS ist in der README noch nicht beschrieben, daher ist das primäre Arbeitsszenario derzeit an den Microsoft-Stack gebunden.
Einrichtung der Umgebung und der Abhängigkeiten
Eine Spiel-Engine von Grund auf zu erstellen erfordert immer Geduld. Das Erste nach dem Klonen des Repositories ist das Aktualisieren der Submodule – ohne sie lässt sich das Projekt nicht konfigurieren:
git clone https://github.com/NauEngine/NauEnginePublic.git
cd NauEnginePublic
git submodule update --init --recursive
Anschließend folgt die Arbeit mit dem vcpkg-Paketmanager. Falls Sie ihn noch nicht installiert haben, empfehlen die Autoren, ihn in ein separates Verzeichnis zu klonen, zum Beispiel unter c:\tools\vcpkg, und die Initialisierung auszuführen:
cd c:\tools
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
Danach müssen Sie die Umgebungsvariable VCPKG_ROOT setzen. Ohne diese Variable weiß CMake nicht, wo es nach Bibliotheken suchen soll.
Übrigens gibt es einen nützlichen Hinweis im Repository: Wenn sich die Datei vcpkg.json in einem Branch ändert, empfiehlt es sich, einen sauberen Build durchzuführen, indem Sie das Arbeitsverzeichnis mit git clean -d -x -f leeren. Wichtig ist, vorher alle nicht gespeicherten Änderungen zu sichern, da git sie sonst ohne Warnung löscht.
Konfiguration und Build-Prozess
Sobald die Abhängigkeiten vorhanden sind, übernimmt CMake. Das Projekt verfügt über vorkonfigurierte Presets, sodass Sie nicht dutzende Compiler-Flags manuell angeben müssen.
Um das Projekt für Visual Studio 2022 zu generieren, führen Sie aus:
cmake --preset win_vs2022_x64
Wenn Sie die Kombination Ninja und Clang bevorzugen, gibt es ein alternatives Preset:
cmake --preset win_ninja_clangcl-debug
Sie können den Projektordner auch einfach in VS Code oder Visual Studio öffnen. Die IDE erkennt automatisch die Datei CMakePresets.json und schlägt vor, die gewünschte Konfiguration in der Benutzeroberfläche auszuwählen.
Der eigentliche Kompilierungsprozess wird über die CLI oder direkt aus der IDE gestartet:
cmake --build build\win_vs2022_x64 --config=Debug
Nach Abschluss der Kompilierung können Sie die Engine in ein lokales Verzeichnis output installieren:
cmake --install build\win_vs2022_x64 --config=Debug
In diesem Ordner erhalten Sie einen Build, der für die weitere Integration bereit ist.
Warum Entwickler diesen Code studieren sollten
Nau Engine ist nicht nur für diejenigen interessant, die Spiele damit erstellen möchten, sondern auch für reguläre C++-Programmierer.
Erstens handelt es sich um einen frischen Codebase. Viele beliebte Engines tragen den Ballast zwanzig Jahre alter Entscheidungen mit sich. Hier können Sie sehen, wie ein modernes Projekt auf dem neuesten C++-Standard organisiert ist, wie Module aufgeteilt werden und wie die Asset-Verarbeitungs-Pipeline funktioniert.
Zweitens ist das Projekt vollständig offen für Mitwirkende. Es gibt offene Issues und Pull-Requests im Repository, und die Community beginnt allmählich, an der Verbesserung der Engine mitzuwirken. Wenn Sie nach einem komplexen Open-Source-Projekt auf Systemebene gesucht haben, bei dem Sie Optimierungen oder neue Funktionen beitragen können, bietet Nau Engine diese Möglichkeit ohne die Bürokratie proprietärer Lizenzen.
Drittens ist es ein gutes Experimentierfeld für eigene Renderer, Physik-Engines oder Skripting-Wrapper. Eine vorhandene modulare Struktur spart Wochen mühsamer Einrichtungsarbeit.
Viertens bietet es für Spielestudios eine echte Chance, einen Technologie-Stack zu erhalten, der nicht von den Launen ausländischer Anbieter und plötzlichen Änderungen in Lizenzvereinbarungen abhängt.
Wo Sie anfangen sollten
Wenn das Projekt Sie interessiert, fangen Sie einfach an: Klonen Sie das Repository, folgen Sie den Schritten der Build-Anleitung und versuchen Sie, die Engine im Debug-Modus zu erstellen. Lesen Sie die Verzeichnisstruktur durch, sehen Sie sich die Implementierung grundlegender Subsysteme im Quellcode an und schauen Sie sich den Tab „Issues" auf GitHub an. Für diejenigen, die sich für die Spiele-Engine-Entwicklung von innen heraus interessieren, ist dies exzellentes Lernmaterial.
Ähnliche Projekte