À propos du projet

ZEngine (Zodiac Engine) est un moteur de rendu 3D open source écrit en C++ et basé sur l'API graphique Vulkan. Le README le positionne pour des activités telles que le jeu vidéo et le calcul et la visualisation scientifiques. Le projet se compose de trois éléments. ZEngine est le runtime principal, couvrant un ECS, le rendu Vulkan, la physique, l'audio et un système de fichiers virtuel. Tetragrama est un éditeur construit sur ZEngine pour la création de scènes et la gestion des actifs. Panzerfaust est un lanceur de projets écrit en C#/.NET qui crée, ouvre et gère des projets de jeux ; il est hébergé dans un dépôt séparé (ZodiacEngineHub). Les plateformes prises en charge sont Windows, macOS et Linux (Debian/Ubuntu), toutes décrites comme activement développées et testées. La documentation complète se trouve dans le wiki du projet, et un fichier de feuille de route est référencé. La configuration requiert une chaîne d'outils C++ ainsi que des outils de support. Sur Windows : Visual Studio 2022 avec Développement desktop en C++, MSVC v143 et le SDK Windows 10/11, PowerShell Core, Python, CMake 4.1.2 ou ultérieur, et LLVM. Sur macOS : Xcode, Homebrew, puis CMake, NuGet, PowerShell Core et LLVM/ClangFormat via brew. Sur Linux : build-essential, CMake, Ninja, LLVM/Clang, Python 3 et NuGet via apt, plus PowerShell Core. Les dépendances sont récupérées automatiquement par CMake au moment de la configuration via FetchContent, donc aucune initialisation manuelle de sous-modules n'est nécessaire. La compilation est pilotée par un script PowerShell à la racine du dépôt : BuildEngine.ps1 avec -Configurations Debug ou Release et -RunBuilds $True. Passer -RunBuilds $False génère le répertoire de build sans compiler, et omettre -Configurations construit les deux configurations. La liste des dépendances est large et regroupée par domaine. Le rendu et la gestion des fenêtres utilisent Vulkan-Headers et Vulkan-Loader, VulkanMemoryAllocator pour la mémoire GPU, SPIRV-Cross, glslang et SPIRV-Tools pour le pipeline de compilation des shaders, et GLFW pour la création de fenêtres et les entrées. Le système d'interface utilisateur (ZUI) utilise FreeType pour la rastérisation des polices et rapidhash pour le hachage des clés de widgets. Le chargement des actifs couvre Assimp pour l'import 3D hérité, fastgltf pour glTF 2.0, ufbx pour FBX, meshoptimizer pour le cache de sommets, l'overdraw et l'optimisation LOD, STB pour le chargement d'images (PNG, JPEG, HDR) et miniz pour la compression zip/deflate. La mémoire utilise tlsf comme allocateur dynamique O(1) pour les dalles de taille variable du moteur. Les formats de données incluent nlohmann/json, simdjson pour le pipeline d'actifs et yaml-cpp pour la configuration. La journalisation et les utilitaires incluent spdlog, fmt, stduuid, CLI11 et Tracy comme profileur de trames optionnel via le drapeau ZENGINE_TRACY. GoogleTest est utilisé pour les tests unitaires, et un workflow GitHub Actions compile et teste le moteur. Le projet est sous licence MIT et accueille les contributions, avec un guide de contribution référencé avant d'ouvrir des demandes de tirage.