Sobre o projeto
UnityStarter é um projeto base modular de Unity orientado à produção e uma base de framework reutilizável, inspirado na arquitetura da Unreal Engine. Seu GameplayFramework aplica uma organização de gameplay ao estilo Unreal em torno de Actor, Pawn, Controller e GameMode, enquanto Gameplay Abilities e GameplayTags fornecem primitivas de habilidades e tags semelhantes ao GAS para contratos de gameplay explícitos.
Ele é voltado a produções Unity de médio a grande porte com necessidades de iteração de longo prazo: limites de propriedade explícitos, sistemas de runtime atentos a desempenho, camadas centrais agnósticas de engine e infraestrutura de build/ferramentas de propriedade do projeto. Pode ser usado como template de projeto (abra UnityStarter/ na Unity, renomeie com as ferramentas incluídas) ou como pacote UPM movendo pastas para CycloneGames.
Os princípios de arquitetura incluem C# puro em primeiro lugar onde importa (contratos centrais evitam vazar tipos de UnityEngine), Unity como camada de integração, integrações opcionais isoladas (contêineres de DI, engines de tween, serializadores, transportes, backends de hot-update), desempenho como restrição de design (hot paths com zero-GC ou baixo GC, buffers reutilizáveis, limpeza explícita de ciclo de vida), infraestrutura de build de propriedade do projeto e documentação como parte da API.
Destaques do mapa de módulos:
- Gameplay: GameplayFramework (Actor/Pawn/Controller/GameMode, ciclo de vida, câmera e fluxo de cena), GameplayAbilities (habilidades orientadas a dados, atributos, efeitos, custo, cooldown, cues, papéis de autoridade/réplica), Choreography (agendamento de apresentação de ações sem engine), GameplayTags (tags hierárquicas, constantes geradas, helpers de consulta, ferramentas de editor), RPGFoundation, UIFramework (gerenciamento de janelas, fluxo de UI, carregamento com suporte a assets com cache SLRU), Foundation2D.
- IA: BehaviorTree (runtime, suporte de editor, testes) e AIPerception (percepção orientada a Jobs/Burst, consultas de sensores, estruturas espaciais).
- Dados, Assets e Conteúdo: AssetManagement (carregamento interface-first com cache segmentado LRU limitado, políticas de CacheRetention, diagnósticos, fluxos assíncronos), DataTable (pipeline voltado ao designer com Luban opcional, MessagePack e pontes de gestão de assets), GameplayTags.DataTable, pontes de Choreography, Localization (fallback de locale, texto/assets particionados, catálogos transacionais), Audio, FontAssets.
- Infraestrutura de Runtime: Factory (pooling, amigável a DI, variantes ECS/DOD), Logging e Logging Pipeline (contratos sem Unity, processamento limitado, sinks, saída em arquivo), DeterministicMath (matemática de ponto fixo para replay/lockstep), Hash, IO, Persistence (orquestração versionada de registro único com verificações de integridade Record V1) além de SystemIO, codecs VYaml e MessagePack, InputSystem (autoria em YAML, contextos de mapeamento, propriedade de dispositivo por jogador, multiplayer local), DeviceFeedback, Settings e Settings.Persistence, Utility, Cheat.
- Build, Ferramentas e Qualidade: Build (pipeline de build de player de propriedade do projeto, informações de versão, hooks opcionais de hot-update, métodos voltados a CI), Tools (utilitários Go para renomear, enxugar pacotes, limpeza, árvores de arquivos, normalização de áudio, empacotamento de canais de textura, conversão de WebM), Analyzers (mais de 20 regras Roslyn organizadas via Assets/Default.ruleset).
Os módulos de rede (Networking, GameplayFramework.Networking, AIPerception.Networking, BehaviorTree.Networking, rede de movimento/interação/projéteis do RPGFoundation) são descritos como experimentais e exigem validação ponta a ponta antes da adoção em produção.
Build e CI: Assets/Build/ é infraestrutura de propriedade do projeto com configuração BuildData ScriptableObject, metadados de revisão Git ou Perforce, itens de menu do editor e pontos de entrada de linha de comando, integrações opcionais com HybridCLR, Obfuz, YooAsset 3 e Addressables, e um único ponto de entrada de CI Build.Pipeline.Editor.BuildEntryPoints.RunCommandLine. Builds em modo batch e de release exigem metadados de controle de versão; apenas builds Development interativos podem usar o fallback LocalDevelopment.
Primeiros passos: clone o repositório, abra UnityStarter/ no Unity Hub, abra Scene_Launch.unity, leia os READMEs de GameplayFramework e Build, e execute rename_project.exe ao derivar um novo projeto. Módulos individuais podem ser copiados de Assets/ThirdParty/CycloneGames/ após inspecionar seus package.json, arquivos asmdef e dependências.
Exemplos de stack tecnológica incluem UniTask, R3, VitalRouter, VYaml, Burst, Collections, Mathematics, Input System, Cinemachine, URP, TextMeshPro, UGUI, Splines, Scriptable Build Pipeline, NuGetForUnity e opcionalmente VContainer, PrimeTween, Navigathena, Luban, MessagePack, HybridCLR, YooAsset, Addressables, Obfuz, Mirror e Mirage. O projeto é licenciado sob MIT e documentado bilíngue em inglês e chinês simplificado.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.