Why This Exists
Fresh AI sessions must be able to generate code that:- runs in Crafty runtime,
- passes static analysis + submission checks,
- stays server-authoritative,
- does not assume 3D template-only architecture.
Platform-First Rule
Treat Crafty as a platform layer:- Build game logic in Summer/Godot.
- Integrate
CraftyGamelifecycle + player synced state. - Use templates only when they fit the genre.
Required Output (Minimum Valid Pack)
Generate these files:manifest.jsonmain.gd(extends CraftyGame)main.tscn(entry_scene)player.tscn(player root script)
Player Model Decision (Required)
Pick one path explicitly:- 3D template path: player root script is
CraftyCharacter3D - Custom path: player root script extends
CraftyPlayerand defines custom synced game model
Required manifest.json Keys
manifest.json must contain:
id(string)name(string)version(string)crafty_sdk(string, for now"1.0")entry_scene(string, for example"main.tscn")min_players(number)max_players(number)
player_scene(string, for example"player.tscn")
player_scene is present, it must point to a real scene in the project.
Scene + Script Contract
main.gd must:
- extend
CraftyGame - implement:
_game_init()_game_start()_game_end()_player_joined(player)_player_left(player)
- run authority logic server-side (
if not Crafty.is_server(): returnin_processwhen needed)
main.tscn should include:
- a
SpawnPointsnode with at least 2 child spawn nodes for multiplayer testing - a
Playersnode (recommended)
player.tscn should:
- use either:
res://sdk/crafty_character_3d.gd, or- your own script that extends
CraftyPlayer
- include collision + visible mesh so test runs are obvious
Allowed vs Blocked APIs
Allowed (use these)
- Crafty SDK systems (
Crafty,CraftyGame,CraftyPlayer, score/teams/data/economy APIs) - normal gameplay node logic (
Node,Node3D, movement, physics, animation, signals)
Blocked (never generate these in game scripts)
OS.executeOS.shell_openOS.create_processFileAccessDirAccessHTTPRequestHTTPClientJavaScriptBridgeClassDB.instantiateThread.new
Definition Of Done (AI Output)
An AI-generated game is “done” only if all checks pass:manifest.jsonhas all required fields and valid types.entry_sceneexists and loads.player_sceneexists (if present) and loads.- Main script extends
CraftyGame. - Player path chosen explicitly (3D template or custom
CraftyPlayersubclass). - No blocked APIs appear in any
.gdfile. - Server-authoritative gameplay logic is on server paths.
- Game can be exported to
.pckand submitted.

