# Tutorials

Hands-on onboarding for game packages. Sample project: `hikari-games/example/`. Deep behaviour lives in [systems/](/docs/systems.md); authoring how-to in [guides/](/docs/guides.md).

## Editing without code

Start with [Working in the editor](/docs/guides/editor-workflow.md). Continue with [Play, Edit, and scenes](/docs/tutorials/play-edit-and-scenes.md#play-versus-edit) and steps 1–3 of [First UI document](/docs/tutorials/first-ui-document.md). The programming tutorials below assume you are changing a game module.

## Prerequisites

- Build and run the sample (editor or game): see [Build and packaging](/docs/guides/build-and-packaging.md).
- Prefer `bin/kaji/kaji editor --workspace="$PWD" --project=../hikari-games/example --type=dynamic --config=debug --run` so Play/Edit and scene authoring are available.
- Game code uses the `hikari_game` SDK and `hikari_std`, without importing engine internals ([Architecture](/docs/systems/architecture.md)).

## Learning path

### Core

| # | Tutorial | You will |
|---|---|---|
| 1 | [First project](/docs/tutorials/first-project.md) | Lay out a game package and `ProjectConfig` |
| 2 | [First entity](/docs/tutorials/first-entity.md) | Author Zig, Kawa, and mixed actors; place them in a scene |
| 3 | [First user_data](/docs/tutorials/first-user-data.md) | Inspector properties, transient fields, `onChanged` |
| 4 | [First mesh and material](/docs/tutorials/first-mesh-material.md) | `asset://` / `AssetRef` render binds and soft placeholders |
| 4b | [Game-facing refs](/docs/systems/refs.md) | `AssetRef` / `ContentRef` / `PrefabRef` / `ActorRef` + sample `scenes/refs_demo.json` |
| 5 | [First physics](/docs/tutorials/first-physics.md) | Dynamic bodies, triggers, `onCollision` |
| 6 | [First character controller](/docs/tutorials/first-character-controller.md) | Capsule CCT, desired velocity, grounded |
| 7 | [First session services](/docs/tutorials/first-session-services.md) | Cross-scene state and HUD (not a “global entity”) |
| 8 | [First UI](/docs/tutorials/first-ui.md) | Immediate UI from a scene entity or the session |
| 8b | [First UI document](/docs/tutorials/first-ui-document.md) | A HUD authored in the editor, bound from code through slots and events |
| 9 | [First input action](/docs/tutorials/first-input.md) | Bind a key and read it from Zig or Kawa |
| 10 | [First messages](/docs/tutorials/first-messaging.md) | `hi.actors` / `Actors.*` — send / emit between Zig and Kawa |
| 11 | [Play, Edit, and scenes](/docs/tutorials/play-edit-and-scenes.md) | Mode rules, replace/additive load, Stop restores the document |

### Next

| # | Tutorial | You will |
|---|---|---|
| 12 | [First runtime spawn](/docs/tutorials/first-runtime-spawn.md) | `hi.world().spawn` / `SpawnDesc`, Global hierarchy group |
| 12b | [Data, JSON, and modding](/docs/guides/data-and-modding.md#sample-json-spawner) | Loose `resources/` table → spawn cubes (sample scene `scenes/runtime_spawn_showcase`) |
| 13 | [First motion](/docs/tutorials/first-motion.md) | `Tween` / `motion.wave` on entity or HUD state |
| 13b | [First skeletal animation](/docs/tutorials/first-skeletal-animation.md) | Skinned glTF cook → `ComponentAnimation` → clip or animation graph |
| 14 | [Assets in Play](/docs/tutorials/assets-in-play.md) | Soft refs and deferred hot reload during Play |
| 15 | [Dynamic editor recompile](/docs/tutorials/dynamic-recompile.md) | When Recompile is enough vs full editor rebuild |

## Where tutorials stop

Tutorials stay narrow: one seam, one working path. For contracts and edge cases, follow the “See also” links on each page (scenes, session services, UI authoring, messaging, scripting, assets).
