Component-based · C#/.NET · MPL 2

Build games in C#.

C# components, hot reload Vulkan 1.3 · Silk.NET Self-contained publish
Spinner.cs — Assets/Scripts/
namespace Usercode;

public class Spinner : Component
{
    /// Rotation speed in degrees per second — editable in the inspector.
    public float speed = 90f;

    public override void OnUpdate(float deltaTime)
    {
        Node.Transform.SetRotationX(Node.Transform.Rotation.X + speed * deltaTime);
    }
}
terminal
$ turian-cli compile ./my-game
$ turian-cli export ./my-game --standalone
→ cooked 12 assets · compiled game · 1 standalone binary ✓
.NETmanaged runtime
1language, top to bottom
1GPU backend
1self-contained ship
MPL 2no seats, no fees
Everything in one window

A real editor, without the runtime tax

Turian pairs a Unity-style visual workflow with the power of C# and .NET 10. One language from editor to gameplay — no VM boundary, no hidden scripting bridges.

Visual editor

Scene hierarchy, inspector, asset browser and a live 3D viewport — all in a single window built on the Gaya platform.

Component system

Inherit from Component in any C# class and it appears in the Add Component menu with full field inspection.

Live script discovery

Drop a .cs file into Assets/Scripts and your component shows up immediately — compiled and refreshed while the editor runs.

Asset pipeline

Loads glTF 2.0 / GLB, OBJ, PNG, JPG and more, with GUID-stable references that survive moves and renames.

Headless CLI

turian-cli compile builds your game without opening the GUI — the same pipeline your editor produces, ideal for CI.

Built on .NET 10

A single language from scripts to engine internals: C# on .NET 10, with a Vulkan 1.3 renderer and Guinevere immediate-mode UI.

Scripting

Components are just C# classes

Subclass Component and the editor picks it up. Public fields become inspector controls; lifecycle hooks are plain overrides you implement only when you need them.

  • Code-driven discovery — the editor compiles real C#, with full .NET diagnostics and breakpoint debugging in the studio.
  • Typed inspector fields — floats, ints, bools, vectors, and object/asset references render automatically.
  • Familiar lifecycle — awake, enable, start, update, disable, destroy.

Read the tutorial →

Follower.cs — Assets/Scripts/
namespace Usercode;

public class Follower : Component
{
    /// Drag a GameObject from the Hierarchy onto this field.
    public NodeRef target = new();
    public float speed = 4f;

    public override void OnStart()
    {
        var node = target.Resolve();
        if (node is not null)
            Console.WriteLine($"following '{node.Name}'");
    }
}
From zero to a shipped build

Script. Arrange. Ship.

Scaffold

Add a Scripts folder with a component class, and the studio previews live in the scene tree as you type.

Script & arrange

Open Turian Studio, drop in components, wire up the scene, and tweak fields live in the inspector.

Build & share

turian-cli compile cooks assets and builds the project; export emits a self-contained executable you can hand to anyone.

Open source · open doors

Join the community

Ask questions, share your work, and help shape the engine — everyone is welcome.

Keep the lights on

Support Turian's development

Turian is built by volunteers. Your support funds ongoing work and keeps the engine free and open.

Ready to build something?

Clone the repo, build the studio for .NET 10.0, and ship your first scene in minutes.