À propos du projet

Prowl est un moteur de jeu 3D open source écrit en C# pur sur le dernier .NET et publié sous licence MIT. Il est explicitement inspiré par Unity : il conserve une API d'éditeur et de script similaire, utilise une architecture de composants GameObject et MonoBehaviour, et vise à rendre le portage de projets Unity aussi fluide que possible tout en restant petit et personnalisable (KISS). Le projet est actuellement en version 1.0-preview après une réécriture complète de l'éditeur, du rendu, de la physique, de l'audio et de l'interface utilisateur ; les projets des versions antérieures ne sont pas compatibles et il n'existe aucun chemin de migration, et d'autres changements cassants sont possibles avant la version 1.0. Éditeur et flux de travail : un éditeur complet fournit une vue de scène, une hiérarchie, un inspecteur, un explorateur de projet, une console et une vue de jeu, avec des éditeurs personnalisés pour les composants, propriétés et vues de scène, des gizmos de transformation (déplacer, faire pivoter, redimensionner), annuler/rétablir, des panneaux ancrables et redimensionnables avec persistance de la disposition, glisser-déposer, sélection multiple, recherche/filtrage, vignettes d'actifs et aperçus 3D, éditeurs de courbes d'animation et de dégradés, raccourcis réassignables, thèmes, tests de jeu dans l'éditeur et rechargement à chaud de scripts. L'éditeur est localisé en anglais, allemand, espagnol, français, italien, japonais, coréen, polonais, portugais, russe, turc et chinois. Les plugins gérés et natifs avec définitions d'assemblages sont pris en charge. Le runtime est entièrement autonome par rapport à l'éditeur, donc un jeu peut y faire référence directement et être distribué sans dépendance à l'éditeur. Rendu : un backend OpenGL via Silk.NET avec un thread de rendu dédié et un pipeline extensible (pipelines personnalisés pris en charge). Le pipeline par défaut à éclairage direct utilise une pré-passe G-buffer légère (profondeur, normales, mouvement, rugosité, métallique). Il offre un flux de travail métallique HDR et PBR avec cartes d'albedo, normales, surface et émission ; des rendus de maillages et de maillages squelettiques avec animation osseuse et blendshapes ; un rendu de lignes ; des sprites avec découpage de feuilles basé sur la grille, isométrique et automatique basé sur l'alpha, plus un éditeur de sprites ; des textures de rendu et Texture3D ; instanciation GPU et élimination par frustum. L'éclairage couvre les lumières ponctuelles, projecteurs et directionnelles avec mappage d'ombres, ombres en cascade pour les lumières directionnelles (jusqu'à quatre cascades), ombres cubemap pour les lumières ponctuelles et un atlas d'ombres avec regroupement dynamique. Le post-traitement inclut le mappage de tons HDR (ACES, Reinhard, Uncharted, Filmic, Melon, AgX), le bloom, FXAA, TAA, SMAA, GTAO, SSR stochastique, profondeur de champ bokeh, brouillard volumétrique et effets cinématiques. Sont également présents : la transparence, une passe de capture sensible à la profondeur pour la réfraction/effet de chaleur/verre dépoli, des ciels procéduraux/cubemap/dégradés, un système de terrain avec LOD quadtree, peinture de hauteur et de splatmap, herbe instanciée GPU, rendu d'arbres avec distance LOD, trous et un éditeur de terrain dédié, plus un système de particules instancié GPU avec émission, modules de durée de vie, collision et animation UV dans l'espace local ou mondial. Un langage de shaders personnalisé prend en charge #include, multi-passes et mots-clés/variantes de shaders ; le dépliage UV et un lightmapper progressif avec sondes lumineuses cuites sont inclus. La physique utilise Jitter Physics 2 : collisionneurs de boîte, sphère, capsule, cylindre, cône, enveloppe convexe, maillage, modèle et terrain ; un collisionneur de roue basé sur raycast avec suspension et adhérence basée sur le glissement ; de nombreuses articulations et contraintes (rotule, charnière, angle de charnière, angle fixe, limite de cône, limite de distance, angle de torsion, prismatique, universelle, point sur ligne, point sur plan, moteurs angulaires et linéaires) ; un contrôleur de personnage ; des volumes de déclenchement ; des couches de collision et filtrage LayerMask ; et des API de raycasting et de requête de formes. L'audio utilise MiniAudio avec audio spatial 3D incluant atténuation et effet Doppler, prise en charge WAV/MP3/OGG/FLAC, une chaîne d'effets (retard, distorsion, filtre biquad, réverbération, phaser) et des implémentations IAudioEffect personnalisées. Autres systèmes : sérialisation via Prowl.Echo ; balises et couches ; scènes avec brouillard et éclairage ambiant ; prefabs avec imbrication, appliquer/rétablir/rompre l'instance et suivi des remplacements ; paramètres de projet ; compilation de scripts via dotnet build ; un système d'actions d'entrée avec composites et processeurs, actifs .inputactions et un éditeur dédié, phases d'action et liaisons clavier/souris/manette ; interface utilisateur basée sur GameObject incluant UI dans l'espace mondial avec disposition pilotée par RectTransform, boutons, curseurs, groupes de disposition et gestionnaires de glisser-déposer ; Prowl Actions pour les callbacks persistants configurables dans l'inspecteur ; et une bibliothèque mathématique avec matrices (Float4x4), quaternions, Transform2D et formes telles que AABB, limites, frustum, cône, rayon, plan, segment de ligne et rectangle. Le pipeline d'actifs utilise des références basées sur GUID avec fichiers meta, cache d'importation et surveillance de fichiers pour la réimportation automatique, importateurs personnalisés via attributs, sous-actifs avec GUID déterministes, suivi des dépendances avant et arrière et chargement threadé. Les formats pris en charge incluent les modèles GLTF, GLB, OBJ et FBX ; les textures PNG, JPG, BMP, TGA, PSD, HDR, DDS et EXR ; et l'audio WAV, MP3, OGG et FLAC. Le système de build exporte des applications autonomes avec fichiers d'actifs .prowlpak compressés, exportant uniquement les actifs utilisés, des profils de build par plateforme et prise en charge de Windows, Mac et Linux. La base de code est testée avec plus de 450 tests unitaires couvrant le runtime et l'éditeur. Pour commencer, .NET 10 est requis. Des versions précompilées 1.0-preview sont disponibles, ou le dépôt peut être cloné et la solution ouverte dans Visual Studio 17.8+, VS Code ou Rider. Le projet est multiplateforme pour l'éditeur et les builds exportés, et le support communautaire est disponible via un serveur Discord.