Use case

Games

Define enemies, items, levels, dialogue as schemas. Generate Unity-ready C# models. Hot-reload content without rebuilding.

The shape of game content

Most games end up reinventing a content pipeline: an Excel sheet of stats, a folder of sprites, a JSON file describing levels, a custom inspector for dialogue trees. Jaina collapses all of these into a single typed system.

Schemas you'll define

  • Enemy — name, HP, attack, sprite, AI tag, drops (array of references to Item).
  • Item — name, icon, rarity, effects (json).
  • Level — name, layout (json), spawn list (array of references to Enemy), background music (audio).
  • DialogueLine — speaker (reference to NPC), text (richtext), conditions (json), next (array of references to DialogueLine).

Each one becomes a fully editable form in the GUI, plus a typed C# class via jaina codegen.

Unity integration

jaina codegen my-game --lang csharp --output ./Assets/Scripts/Models/

Generates strongly-typed POCOs you can use directly:

var enemies = await client.Records.ListAsync<Enemy>("my-game", "enemy");
foreach (var e in enemies.Items)
{
    SpawnEnemy(e.Name, e.Hp, e.SpriteUrl);
}

For offline builds, export model.json at build time:

jaina export my-game --format json --output ./Assets/StreamingAssets/

Why teams pick Jaina for games

  • Designers edit content without engineering involvement; the GUI is built from the schema.
  • The export is canonical — no separate "shipping format" to maintain.
  • AI fits naturally — Claude can generate enemies that match your existing rarity curve because it can see the existing records via MCP.
  • Hot-reload during development — the SDK has a watch mode that re-fetches packages on change.

What we don't do

We're not a game engine. We don't ship physics, rendering, scripting, or input. We ship the data layer. Everything else stays in Unity, Godot, Unreal, or your custom engine.