Skip to main content

Platform Framing

You are not building a “Crafty game type.”
You are building a 2D game in Summer/Godot and integrating the Crafty platform layer:
  • multiplayer runtime,
  • server authority,
  • data/economy/teams/score modules.
For 2D games, create your own 2D player class that extends CraftyPlayer.

Server Authority Loop

Client Render Pattern

On clients, render from synced state:

Joining / Leaving

Optional Subsystems

Use only what you need:
  • Crafty.score for score/rank,
  • Crafty.teams for team modes,
  • Crafty.data for persistent inventory/progress,
  • Crafty.economy for currency.

Common Mistakes

  • Running movement authority on clients.
  • Mutating score/economy from client paths.
  • Treating set_synced as client-owned state.

Production Checklist (2D)

  • Crafty.is_server() gates all authoritative state updates.
  • 2D state is synced via set_synced.
  • Client only renders synced values.
  • Required manifest fields valid.
  • Local test runner flow passes.