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.
What Is CraftyPlayer?
CraftyPlayer is the minimal platform contract for a connected player.
It is intentionally game-agnostic:
- no required 3D movement model,
- no required health model,
- no required scene structure.
Core Contract (Signatures)
Identity
Player identity fields are assigned by the platform during connection:peer_id: intplayer_id: Stringdisplay_name: Stringavatar: Dictionary
Custom Synced Variables
set_synced and get_synced are the core data sync mechanism.
Use them for any gameplay data your clients need:
- card hand summaries,
- turn state,
- unit stats,
- score,
- custom RPG state.
set_synced(key: String, value: Variant) -> voidget_synced(key: String) -> Variant
Input (Read On Server)
Each connected player has an input proxy you read on the server:player.input.movement -> Vector2player.input.look_direction -> Vector2player.input.is_action_pressed(action: String) -> boolplayer.input.is_action_just_pressed(action: String) -> bool
CraftyCharacter3D (Optional 3D Template)
For 3D action games, use CraftyCharacter3D in your player.tscn.
It includes:
CharacterBody3Dmovement-compatible node type,- health fields (
health,max_health,is_alive), - helpers (
respawn,damage,heal,kill,teleport), - same synced API (
set_synced/get_synced).
Practical Rule
If your game needs built-in 3D character behavior, useCraftyCharacter3D.
If your game is not a 3D character game, extend CraftyPlayer directly and sync your own state model.
