Découvrir Nau Engine : Compiler un moteur de jeu open source à partir des sources
Nau Engine a beaucoup fait parler de lui, mais entendre des annonces en conférence, c'est une chose, et se plonger concrètement dans le dépôt public pour manipuler le code, c'est autre chose. Le dépôt est ouvert, le code source est disponible sur GitHub, et n'importe qui peut cloner le projet sur sa machine pour évaluer l'architecture ou tenter de compiler un build de test.
Les auteurs déclarent immédiatement un modèle de distribution ouvert : le moteur est gratuit pour tout usage, y compris les sorties de jeux commerciaux, sans frais de licence ni royalties cachées. Le code source est publiquement accessible, permettant à la communauté de créer des forks, des extensions et des pull requests.
Ce qu'il y a dans le dépôt
Si vous ouvrez le dépôt NauEnginePublic, vous remarquerez immédiatement une pile C++ classique pour les projets à grande échelle. Il n'y a aucune tentative de réinventer la roue avec un gestionnaire de paquets personnalisé : les dépendances sont récupérées via vcpkg, et les builds sont gérés via des préréglages CMake modernes.
Le moteur lui-même est écrit en C++, s'appuie activement sur des sous-modules et nécessite des outils à jour :
- MSVC v143 de Visual Studio 2022
- Version actuelle du SDK Windows 10
- Python 3.10 ou plus récent pour les scripts de build
- Système de build CMake avec support de CMakePresets
À l'étape actuelle, le dépôt se concentre clairement sur la plateforme Windows. La documentation décrit des préréglages pour Visual Studio 2022 et la combinaison Clang-CL avec Ninja. Le support pour Linux ou macOS n'est pas encore détaillé dans le README, donc le scénario de travail principal est actuellement lié à la pile Microsoft.
Configuration de l'environnement et des dépendances
Compiler un moteur de jeu à partir de zéro demande toujours de la patience. La première chose après avoir cloné le dépôt est de récupérer les sous-modules — sans eux, le projet ne se configurera tout simplement pas :
Ensuite vient le travail avec le gestionnaire de paquets vcpkg. Si vous ne l'avez pas encore installé, les auteurs recommandent de le cloner dans un répertoire séparé, par exemple à c:\tools\vcpkg, et d'exécuter l'initialisation :
Après cela, vous devez définir la variable d'environnement VCPKG_ROOT. Sans cette variable, CMake ne saura pas où chercher les bibliothèques.
Au fait, il y a une astuce utile dans le dépôt : si le fichier vcpkg.json change dans une branche, il est préférable de faire une compilation propre en effaçant le répertoire de travail avec git clean -d -x -f. L'essentiel est de sauvegarder auparavant toutes vos modifications non enregistrées, sinon git les supprimera sans avertissement.
Configuration et processus de compilation
Une fois les dépendances en place, CMake prend le relais. Le projet dispose de préréglages prêts à l'emploi, vous n'aurez donc pas besoin de spécifier manuellement des dizaines d'indicateurs de compilateur.
Pour générer le projet pour Visual Studio 2022, exécutez :
Si vous préférez la combinaison Ninja et Clang, il existe un préréglage alternatif :
Vous pouvez également simplement ouvrir le dossier du projet dans VS Code ou Visual Studio. L'IDE récupérera automatiquement le fichier CMakePresets.json et suggérera de sélectionner la configuration souhaitée dans l'interface.
Le processus de compilation lui-même se lance via la CLI ou directement depuis l'IDE :
Une fois la compilation terminée, vous pouvez installer le moteur dans un répertoire local output :
Dans ce dossier, vous disposerez d'un build prêt pour une intégration ultérieure.
Pourquoi les développeurs devraient étudier ce code
Nau Engine est intéressant non seulement pour ceux qui prévoient de créer des jeux avec, mais aussi pour les programmeurs C++ ordinaires.
Premièrement, c'est une base de code récente. De nombreux moteurs populaires traînent le poids de décisions prises il y a vingt ans. Ici, vous pouvez voir comment un projet moderne sur la dernière norme C++ est organisé, comment les modules sont divisés et comment fonctionne le pipeline de traitement des assets.
Deuxièmement, le projet est entièrement ouvert aux contributeurs. Il y a des issues ouvertes et des pull requests dans le dépôt, et la communauté commence progressivement à participer à l'amélioration du moteur. Si vous cherchiez un projet open source complexe de niveau système où vous pouvez contribuer des optimisations ou de nouvelles fonctionnalités, Nau Engine offre cette opportunité sans la bureaucratie des licences propriétaires.
Troisièmement, c'est un bon terrain d'expérimentation pour tester des renderers personnalisés, des moteurs de physique ou des wrappers de scripting. Disposer d'une structure modulaire prête fait gagner des semaines de travail fastidieux de configuration d'environnement.
Quatrièmement, pour les studios de jeux, c'est une vraie chance d'obtenir une pile technologique qui ne dépend pas des caprices de fournisseurs étrangers et des changements soudains des accords de licence.
Par où commencer
Si le projet vous intéresse, commencez simplement : clonez le dépôt, suivez les étapes du guide de compilation et essayez de compiler le moteur en mode Debug. Parcourez la structure des répertoires, regardez l'implémentation des sous-systèmes de base dans le code source et consultez l'onglet Issues sur GitHub. Pour ceux qui s'intéressent au développement de moteurs de jeu de l'intérieur, c'est un excellent matériel d'étude.
Projets similaires