Documentation Index
Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
Use this file to discover all available pages before exploring further.
Why This Matters
Local testing should match production behavior as closely as possible. In Crafty, a published game runs on:- the same Summer/Godot runtime,
- the same Crafty SDK APIs,
- server-authoritative networking.
Default Local Workflow
Use the starter template test runner:test_runner.gdlaunches a headless server process.- It waits for startup.
- It launches/loads the client flow and connects to
localhost:7777.
What Happens Under The Hood
When you run the test runner:- The runner detects your game slug from
manifest.json. - It starts Summer/Godot in headless mode with server args:
--server--game-id <slug>--port 7777
- It waits for the server to begin listening.
- It starts the client path and quick-connects to
localhost:7777. - On stop/exit, it kills the spawned server process.
Project Requirements
To make local testing reliable:- Keep
manifest.jsonvalid and present. - Ensure
entry_scenepoints to a real scene. - Set
player_sceneand keep it in sync with your player scene path (CraftyCharacter3Dfor 3D templates, or your ownCraftyPlayersubclass for other genres). - Keep server-authoritative logic in server paths (
Crafty.is_server()checks where needed).
Multiplayer Testing (2+ Players)
You have two practical options:Option A: First client via test runner, additional clients from editor
- Start the first instance with test runner (starts server + client).
- Launch another editor instance.
- Run the client scene and connect to
localhost:7777using your quick-connect flow.
Option B: Team testing on same network
- One teammate runs the test runner (hosts local server).
- Share host IP and port.
- Other teammates run client mode and connect to that host.
Fast Local QA Checklist
Before exporting:- Game starts without script errors.
- Players spawn correctly.
- Movement and game rules are server-authoritative.
- Scoring/round end/win conditions trigger correctly.
- Reconnect/disconnect behavior is stable.
- Match can run for at least 10+ minutes without critical errors.
Common Local Testing Problems
Server starts, but game scene does not load
Usually one of:manifest.jsonmissing or invalid.entry_scenepath wrong.- scene root does not extend
CraftyGame.
Player spawns fail
Usually one of:player_scenepath wrong.- player scene does not use
CraftyPlayer. - game scene missing expected spawn/player nodes.
Local behavior differs from expected production behavior
Check:- your game rules are not accidentally client-side,
- no editor-only assumptions in gameplay code,
- no banned/blocked APIs used by generated code.

