Compilar a partir do código-fonte
Para colaboradores e desenvolvedores que querem trabalhar no próprio motor.
Requisitos
- SDK do .NET 10
glslcpara compilar shaders — parte do Vulkan SDK, ousudo apt install glslc- Um driver de GPU com suporte a Vulkan 1.3
- Linux ou Windows
Clonar e compilar
git clone https://github.com/MASS4ORG/Turian.git
cd Turian
./build.sh compile # restaura, compila os shaders para SPIR-V e compila todos os projetos
No Windows, use build.cmd ou build.ps1. A compilação é orquestrada pelo NUKE; um dotnet build simples também funciona depois que os shaders forem compilados.
Executar o Studio e a CLI a partir do código-fonte
# Studio, abrindo um projeto
dotnet run --project Turian/Editor/Studio -- --project ../turian-examples/example-01
# CLI
dotnet run --project Turian/Editor/CLI -- new /tmp/MeuJogo
dotnet run --project Turian/Editor/CLI -- export /tmp/MeuJogo
dotnet run --project Turian/Editor/CLI -- screenshot ../turian-examples/example-01 --out shot.png
Os projetos de exemplo ficam no repositório separado turian-examples; clone-o ao lado de Turian.
Organização do repositório
Gaya/ a plataforma de plugins sobre a qual o Studio roda (Gaya.Sdk, Gaya.Host); sem referências ao Turian
Turian/
Engine/
Attributes/ atributos compartilhados por motor, editor e seus scripts ([Range], [Button], [TypeId]…)
Core/ renderizador Vulkan, grafo de cena, componentes, assets, entrada, localização, serialização
UI/ interface de jogo .ui / .uss sobre o Guinevere
Editor/
Core/ lógica do editor independente de UI: compilação, importação de assets, inspetor, play mode
Gaya.Plugin/ o próprio Turian Studio — um plugin Gaya (painéis, comandos, viewports)
Studio/ o executável desktop que hospeda o Gaya e o plugin
CLI/ turian-cli
Bootstrap/ os lançadores turian-cli / turian-studio dos pacotes de release
CSharp/ geradores de código e analisadores Roslyn
Turian.Tests/ testes do motor e do editor
.nuke/ alvos de compilação, empacotamento e release
O Studio é apenas a casca de interface: a lógica fica em Editor/Core ou no motor, onde a CLI e os testes também podem usá-la.
Adicionando um componente embutido
Os componentes embutidos ficam em Turian/Engine/Core. Todo tipo serializado precisa de um [TypeId] estável e único — gere um GUID novo uma vez e nunca o altere, porque os arquivos de cena o armazenam:
namespace Turian.Engine.Core;
/// <summary>Faz um nó subir e descer.</summary>
[ComponentContextMenu("Motion/Bobber")]
[TypeId("0b8d9c3e-6f3a-4a52-9d1e-2f5c7a1b8e40")]
public class BobberComponent : Component
{
/// <summary>Altura do movimento em metros.</summary>
public float Amplitude { get; set; } = 0.25f;
/// <inheritdoc />
public override void OnUpdate(float deltaTime) { /* … */ }
}
[ComponentContextMenu] o coloca no menu Add Component do Inspector.
Rodando os testes
dotnet run --project Turian.Tests/Turian.Tests.csproj
Use dotnet run, e não dotnet test: a suíte roda sobre a Microsoft.Testing.Platform. A CI roda os mesmos testes com ./build.sh Restore Compile TestReport.
Empacotamento
./build.sh Pack --configuration Release --runtime-identifier linux-x64 # arquivo zip
./build.sh Pack DebianPackage --configuration Release --runtime-identifier linux-x64
./build.sh Pack --configuration Release --runtime-identifier win-x64 # zip + instalador NSIS
Os artefatos vão para artifacts/. O instalador do Windows precisa do makensis (NSIS), que também roda no Linux.
CI/CD
O GitHub Actions roda os testes a cada push (ci.yml). Uma tarefa diária cria uma release quando há commits novos e publica os pacotes para Windows e Linux, a release no GitHub e a imagem de contêiner ghcr.io/mass4org/turian-cli.
Contribuindo
Leia as diretrizes de contribuição: Conventional Commits, pull requests contra main e nenhum aviso novo de compilação.