>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C-plus-plus

Poznajemy silnik Nau Engine: budowanie otwartego silnika gier ze źródeł

O silniku Nau Engine mówiło się wiele, ale słuchanie zapowiedzi na konferencjach to jedno, a faktyczne zanurzenie się w publicznym repozytorium i praca z kodem to coś innego. Repozytorium jest otwarte, kod źródłowy dostępny na GitHub, a każdy może sklonować projekt na swój komputer, aby ocenić architekturę lub spróbować zbudować wersję testową.

Autorzy od razu deklarują otwarty model dystrybucji: silnik jest darmowy do dowolnych celów, w tym komercyjnych wydań gier, bez opłat licencyjnych ani ukrytych tantiem. Kod źródłowy jest publicznie dostępny, więc społeczność może tworzyć forki, rozszerzenia i pull requesty.

Co znajdziesz w repozytorium

Jeśli otworzysz repozytorium NauEnginePublic, od razu zauważysz klasyczny stos C++ dla dużych projektów. Nie ma tu próby wymyślania koła na nowo z własnym menedżerem pakietów: zależności są pobierane przez vcpkg, a buildy są zarządzane przez nowoczesne presety CMake.

Sam silnik jest napisany w C++, aktywnie korzysta z submodułów i wymaga aktualnych narzędzi:

  • MSVC v143 z Visual Studio 2022
  • Aktualna wersja Windows 10 SDK
  • Python 3.10 lub nowszy do skryptów budowania
  • System budowania CMake z obsługą CMakePresets

Na obecnym etapie repozytorium ma wyraźny fokus na platformę Windows. W dokumentacji opisano presety dla Visual Studio 2022 oraz kombinacji Clang-CC z Ninja. Wsparcie dla Linuksa lub macOS nie jest jeszcze opisane w README, więc główny scenariusz pracy jest obecnie związany ze stosem Microsoft.

Przygotowanie środowiska i zależności

Budowanie silnika gier od zawsze wymaga cierpliwości. Pierwszą rzeczą po sklonowaniu repozytorium jest pobranie submodułów — bez nich projekt po prostu się nie skonfiguruje:

git clone https://github.com/NauEngine/NauEnginePublic.git
cd NauEnginePublic
git submodule update --init --recursive

Następnie przychodzi czas na pracę z menedżerem pakietów vcpkg. Jeśli jeszcze go nie masz, autorzy zalecają sklonowanie go do osobnego katalogu, na przykład w c:\tools\vcpkg, i uruchomienie inicjalizacji:

cd c:\tools
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat

Po tym musisz ustawić zmienną środowiskową VCPKG_ROOT. Bez tej zmiennej CMake nie będzie wiedział, gdzie szukać bibliotek.

Przy okazji, w repozytorium znajduje się przydatna wskazówka: jeśli plik vcpkg.json zmieni się w gałęzi, najlepiej wykonać czysty build, usuwając katalog roboczy za pomocą git clean -d -x -f. Najważniejsze to wcześniej zapisać wszystkie niezapisane zmiany, w przeciwnym razie git je usunie bez ostrzeżenia.

Konfiguracja i proces budowania

Gdy zależności są na miejscu, przejmuje CMake. Projekt ma gotowe skonfigurowane presety, więc nie będziesz musiał ręcznie podawać dziesiątek flag kompilatora.

Aby wygenerować projekt dla Visual Studio 2022, uruchom:

cmake --preset win_vs2022_x64

Jeśli wolisz kombinację Ninja i Clang, jest dostępny alternatywny preset:

cmake --preset win_ninja_clangcl-debug

Możesz też po prostu otworzyć folder projektu w VS Code lub Visual Studio. IDE automatycznie wykryje plik CMakePresets.json i zaproponuje wybranie żądanej konfiguracji w interfejsie.

Sam proces kompilacji uruchamia się przez CLI lub bezpośrednio z IDE:

cmake --build build\win_vs2022_x64 --config=Debug

Po zakończeniu kompilacji możesz zainstalować silnik do lokalnego katalogu output:

cmake --install build\win_vs2022_x64 --config=Debug

W tym folderze otrzymasz build gotowy do dalszej integracji.

Dlaczego programiści powinni badać ten kod

Nau Engine jest interesujący nie tylko dla osób planujących tworzyć w nim gry, ale także dla zwykłych programistów C++.

Po pierwsze, to świeża baza kodu. Wiele popularnych silników niesie ze sobą bagaż dwudziestoletnich decyzji. Tutaj możesz zobaczyć, jak zorganizowany jest nowoczesny projekt na najnowszym standardzie C++, jak podzielone są moduły i jak działa potok przetwarzania zasobów.

Po drugie, projekt jest w pełni otwarty dla contributorów. W repozytorium są otwarte issue'y i pull requesty, a społeczność stopniowo zaczyna uczestniczyć w ulepszaniu silnika. Jeśli szukasz złożonego projektu open source na poziomie systemowym, w którym możesz wnosić optymalizacje lub nowe funkcje, Nau Engine oferuje tę możliwość bez biurokracji własnościowych licencji.

Po trzecie, to dobre pole do eksperymentowania z własnymi rendererami, silnikami fizyki czy wrapperami skryptowymi. Mając gotową modułową strukturę, oszczędzasz tygodnie żmudnej pracy przy konfiguracji środowiska.

Po czwarte, dla studiów gier to realna szansa na technologię, która nie zależy od kaprysów zagranicznych dostawców i nagłych zmian w umowach licencyjnych.

Od czego zacząć

Jeśli projekt cię zainteresował, zacznij od prostych rzeczy: sklonuj repozytorium, postępuj zgodnie z krokami przewodnika budowania i spróbuj zbudować silnik w trybie Debug. Przejrzyj strukturę katalogów, przyjrzyj się implementacji podstawowych podsystemów w kodzie źródłowym i sprawdź zakładkę Issues na GitHub. Dla zainteresowanych tworzeniem silników gier od środka to doskonały materiał do nauki.

Powiązane projekty