About this project
UnityStarter is a production-oriented, modular Unity foundation project and reusable framework base, informed by Unreal Engine architecture. Its GameplayFramework applies Unreal-style gameplay organization around Actor, Pawn, Controller and GameMode, while Gameplay Abilities and GameplayTags provide GAS-like ability and tagging primitives for explicit gameplay contracts.
It targets medium-to-large Unity productions with long-term iteration needs: explicit ownership boundaries, performance-conscious runtime systems, engine-agnostic core layers, and project-owned build/tooling infrastructure. It can be used as a project template (open UnityStarter/ in Unity, rename with bundled tools) or as a UPM package by moving folders under CycloneGames.
Architecture principles include pure C# first where it matters (core contracts avoid leaking UnityEngine types), Unity as the integration layer, isolated optional integrations (DI containers, tween engines, serializers, transports, hot-update backends), performance as a design constraint (zero-GC or low-GC hot paths, reusable buffers, explicit lifecycle cleanup), project-owned build infrastructure, and documentation as part of the API.
Module map highlights:
- Gameplay: GameplayFramework (Actor/Pawn/Controller/GameMode, lifecycle, camera and scene flow), GameplayAbilities (data-driven abilities, attributes, effects, cost, cooldown, cues, authority/replica roles), Choreography (engine-free action presentation scheduling), GameplayTags (hierarchical tags, generated constants, query helpers, editor tooling), RPGFoundation, UIFramework (window management, UI flow, asset-backed loading with SLRU cache), Foundation2D.
- AI: BehaviorTree (runtime, editor support, tests) and AIPerception (Jobs/Burst-oriented perception, sensor queries, spatial structures).
- Data, Assets and Content: AssetManagement (interface-first loading with bounded segmented-LRU caching, CacheRetention policies, diagnostics, async flows), DataTable (designer-facing pipeline with optional Luban, MessagePack and asset-management bridges), GameplayTags.DataTable, Choreography bridges, Localization (locale fallback, partitioned text/assets, transactional catalogs), Audio, FontAssets.
- Runtime Infrastructure: Factory (pooling, DI-friendly, ECS/DOD variants), Logging and Logging Pipeline (Unity-free contracts, bounded processing, sinks, file output), DeterministicMath (fixed-point math for replay/lockstep), Hash, IO, Persistence (versioned single-record orchestration with Record V1 integrity checks) plus SystemIO, VYaml and MessagePack codecs, InputSystem (YAML authoring, mapping contexts, per-player device ownership, local multiplayer), DeviceFeedback, Settings and Settings.Persistence, Utility, Cheat.
- Build, Tools and Quality: Build (project-owned player build pipeline, version info, optional hot-update hooks, CI-facing methods), Tools (Go utilities for rename, package trimming, cleanup, file trees, audio normalization, texture channel packing, WebM conversion), Analyzers (20+ Roslyn rules staged via Assets/Default.ruleset).
Networking modules (Networking, GameplayFramework.Networking, AIPerception.Networking, BehaviorTree.Networking, RPGFoundation movement/interaction/projectile networking) are described as experimental and require end-to-end validation before production adoption.
Build and CI: Assets/Build/ is project-owned infrastructure with BuildData ScriptableObject configuration, Git or Perforce revision metadata, editor menu items and command-line entry points, optional HybridCLR, Obfuz, YooAsset 3 and Addressables integrations, and a single CI entry point Build.Pipeline.Editor.BuildEntryPoints.RunCommandLine. Batch-mode and release builds require version control metadata; only interactive Development builds may use the LocalDevelopment fallback.
Getting started: clone the repository, open UnityStarter/ in Unity Hub, open Scene_Launch.unity, read the GameplayFramework and Build READMEs, and run rename_project.exe when deriving a new project. Individual modules can be copied from Assets/ThirdParty/CycloneGames/ after inspecting their package.json, asmdef files and dependencies.
Technology stack examples include UniTask, R3, VitalRouter, VYaml, Burst, Collections, Mathematics, Input System, Cinemachine, URP, TextMeshPro, UGUI, Splines, Scriptable Build Pipeline, NuGetForUnity, and optional VContainer, PrimeTween, Navigathena, Luban, MessagePack, HybridCLR, YooAsset, Addressables, Obfuz, Mirror and Mirage. The project is MIT licensed and documented bilingually in English and Simplified Chinese.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.