Skip to main content

Why This Exists

Fresh AI sessions must be able to generate code that:
  • conforms to the Summer SDK runtime contract,
  • passes static analysis + submission checks,
  • stays server-authoritative,
  • does not assume 3D template-only architecture.
This page is the strict output contract. It does not claim that player-facing playback, hosted servers, matchmaking, or the production runtime sandbox is live. See platform capability status.
This page is the output contract (what generated code must look like). The end-to-end instruction set — build, validate, export, and publish through the live API — is the canonical agent prompt at /agent-setup, raw at https://docs.summerengine.com/agent-setup/prompt.md. Point agents there first.

Platform-First Rule

Treat Summercraft as a platform layer:
  • Build Summer game logic in Summer Engine.
  • Integrate SummerGame lifecycle + player synced state.
  • Use templates only when they fit the genre.
Never frame the SDK as “3D framework required.”

Required Output (Minimum Valid Pack)

Generate these files:
  • manifest.json
  • main.gd (extends SummerGame)
  • main.tscn (entry_scene)
  • player.tscn (player root script)
If any file is missing, output is invalid.

Player Model Decision (Required)

Pick one path explicitly:
  1. 3D template path: player root script is SummerCharacter3D
  2. Custom path: player root script extends SummerPlayer and defines custom synced game model
Do not mix assumptions from both paths.

Required manifest.json Keys

manifest.json must contain:
  • id (string)
  • name (string)
  • version (string)
  • summer_sdk (string, for now "1.0")
  • entry_scene (string, for example "main.tscn")
  • min_players (number)
  • max_players (number)
Strongly recommended:
  • player_scene (string, for example "player.tscn")
If player_scene is present, it must point to a real scene in the project.

Scene + Script Contract

main.gd must:
  • extend SummerGame
  • implement:
    • _game_init()
    • _game_start()
    • _game_end()
    • _player_joined(player)
    • _player_left(player)
  • run authority logic server-side (if not Summer.is_server(): return in _process when needed)
main.tscn should include:
  • a SpawnPoints node with at least 2 child spawn nodes for multiplayer testing
  • a Players node (recommended)
player.tscn should:
  • use either:
    • res://sdk/summer_character_3d.gd, or
    • your own script that extends SummerPlayer
  • include collision + visible mesh so test runs are obvious

Allowed vs Blocked APIs

Allowed (use these)

  • Summer SDK systems (Summer, SummerGame, SummerPlayer, score/teams/data/economy APIs)
  • normal gameplay node logic (Node, Node3D, movement, physics, animation, signals)

Blocked (never generate these in game scripts)

  • OS.execute
  • OS.shell_open
  • OS.create_process
  • FileAccess
  • DirAccess
  • HTTPRequest
  • HTTPClient
  • JavaScriptBridge
  • ClassDB.instantiate
  • Thread.new
Reason: submission scanner blocks these patterns and upload fails. For the complete and current blocked-pattern set, see:

Definition Of Done (AI Output)

An AI-generated game is “done” only if all checks pass:
  1. manifest.json has all required fields and valid types.
  2. entry_scene exists and loads.
  3. player_scene exists (if present) and loads.
  4. Main script extends SummerGame.
  5. Player path chosen explicitly (3D template or custom SummerPlayer subclass).
  6. No blocked APIs appear in any .gd file.
  7. Server-authoritative gameplay logic is on server paths.
  8. Game can be exported to .pck and submitted through the release API (release reaches pending_review).

Safe Starter Prompt (for AI systems)

The canonical, always-current agent prompt — including a verified project template, local validation steps, and the live publish calls — is served raw at:
Use /agent-setup to hand it to any agent. If you only need the generation rules inline: