À propos du projet
UnityStarter est un projet de fondation Unity modulaire orienté production et une base de framework réutilisable, inspiré de l'architecture d'Unreal Engine. Son GameplayFramework applique une organisation du gameplay de type Unreal autour d'Actor, Pawn, Controller et GameMode, tandis que Gameplay Abilities et GameplayTags fournissent des primitives d'abilités et de tags de type GAS pour des contrats de gameplay explicites.
Il cible les productions Unity de moyenne à grande envergure avec des besoins d'itération à long terme : limites de propriété explicites, systèmes d'exécution soucieux des performances, couches cœur indépendantes du moteur et infrastructure de build/outillage appartenant au projet. Il peut être utilisé comme modèle de projet (ouvrir UnityStarter/ dans Unity, renommer avec les outils fournis) ou comme package UPM en déplaçant les dossiers sous CycloneGames.
Les principes d'architecture incluent le C# pur d'abord là où cela compte (les contrats cœur évitent de laisser fuir les types UnityEngine), Unity comme couche d'intégration, des intégrations optionnelles isolées (conteneurs DI, moteurs de tween, sérialiseurs, transports, backends de mise à jour à chaud), la performance comme contrainte de conception (chemins chauds zéro-GC ou faible GC, tampons réutilisables, nettoyage explicite du cycle de vie), une infrastructure de build appartenant au projet et la documentation comme partie intégrante de l'API.
Points clés de la carte des modules :
- Gameplay : GameplayFramework (Actor/Pawn/Controller/GameMode, cycle de vie, caméra et flux de scène), GameplayAbilities (abilités pilotées par les données, attributs, effets, coût, temps de recharge, indices, rôles d'autorité/réplique), Choreography (planification de présentation d'actions sans moteur), GameplayTags (tags hiérarchiques, constantes générées, aides aux requêtes, outillage éditeur), RPGFoundation, UIFramework (gestion de fenêtres, flux UI, chargement adossé aux assets avec cache SLRU), Foundation2D.
- IA : BehaviorTree (exécution, support éditeur, tests) et AIPerception (perception orientée Jobs/Burst, requêtes de capteurs, structures spatiales).
- Données, Assets et Contenu : AssetManagement (chargement orienté interface avec cache segmenté LRU borné, politiques CacheRetention, diagnostics, flux asynchrones), DataTable (pipeline orienté concepteur avec Luban optionnel, ponts MessagePack et gestion d'assets), GameplayTags.DataTable, ponts Choreography, Localization (repli de locale, textes/assets partitionnés, catalogues transactionnels), Audio, FontAssets.
- Infrastructure d'exécution : Factory (pooling, compatible DI, variantes ECS/DOD), Logging et Logging Pipeline (contrats sans Unity, traitement borné, sinks, sortie fichier), DeterministicMath (mathématiques en virgule fixe pour replay/lockstep), Hash, IO, Persistence (orchestration versionnée à enregistrement unique avec contrôles d'intégrité Record V1) ainsi que les codecs SystemIO, VYaml et MessagePack, InputSystem (création YAML, contextes de mapping, propriété des périphériques par joueur, multijoueur local), DeviceFeedback, Settings et Settings.Persistence, Utility, Cheat.
- Build, Outils et Qualité : Build (pipeline de build de joueur appartenant au projet, informations de version, hooks optionnels de mise à jour à chaud, méthodes orientées CI), Tools (utilitaires Go pour le renommage, l'élagage de packages, le nettoyage, les arborescences de fichiers, la normalisation audio, le compactage de canaux de texture, la conversion WebM), Analyzers (plus de 20 règles Roslyn échelonnées via Assets/Default.ruleset).
Les modules de mise en réseau (Networking, GameplayFramework.Networking, AIPerception.Networking, BehaviorTree.Networking, mise en réseau de mouvement/interaction/projectile de RPGFoundation) sont décrits comme expérimentaux et nécessitent une validation de bout en bout avant adoption en production.
Build et CI : Assets/Build/ est une infrastructure appartenant au projet avec configuration BuildData ScriptableObject, métadonnées de révision Git ou Perforce, éléments de menu éditeur et points d'entrée en ligne de commande, intégrations optionnelles HybridCLR, Obfuz, YooAsset 3 et Addressables, et un point d'entrée CI unique Build.Pipeline.Editor.BuildEntryPoints.RunCommandLine. Les builds en mode batch et de release nécessitent des métadonnées de contrôle de version ; seuls les builds Development interactifs peuvent utiliser le repli LocalDevelopment.
Pour démarrer : cloner le dépôt, ouvrir UnityStarter/ dans Unity Hub, ouvrir Scene_Launch.unity, lire les README de GameplayFramework et Build, et exécuter rename_project.exe lors de la dérivation d'un nouveau projet. Les modules individuels peuvent être copiés depuis Assets/ThirdParty/CycloneGames/ après inspection de leurs package.json, fichiers asmdef et dépendances.
Les exemples de pile technologique incluent UniTask, R3, VitalRouter, VYaml, Burst, Collections, Mathematics, Input System, Cinemachine, URP, TextMeshPro, UGUI, Splines, Scriptable Build Pipeline, NuGetForUnity, et en option VContainer, PrimeTween, Navigathena, Luban, MessagePack, HybridCLR, YooAsset, Addressables, Obfuz, Mirror et Mirage. Le projet est sous licence MIT et documenté de manière bilingue en anglais et en chinois simplifié.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.