Skip to main content

Overview

Every Crafty game must include a manifest.json file in the game pack. The submission API validates required keys and types before a game can enter review.

Required Fields

These fields are required by submission validation:
FieldTypeRequiredDescription
idstringYesStable game identifier. Used for slug generation and updates.
namestringYesDisplay name shown in platform surfaces.
versionstringYesSemantic or creator-defined version string (for example 1.0.0).
crafty_sdkstringYesSDK version your game targets (for example 1.0).
entry_scenestringYesMain scene path/name loaded by the runtime.
min_playersnumberYesMinimum players required before start flow.
max_playersnumberYesMaximum concurrent players for a match.

Optional Fields

FieldTypeRequiredDescription
player_scenestringNoPlayer scene path/name used by server/client spawning logic.
descriptionstringNoShort game description.
tagsstring[]NoCategory/search tags.
genrestringNoPrimary genre label.
tick_ratenumberNoServer sync tick hint (if supported by runtime config).
previewstringNoPreview asset path/name for discovery UI.
input_actionsobjectNoInput action metadata for UX/docs tooling.

Minimal Valid Example

{
  "id": "coin-collector",
  "name": "Coin Collector",
  "version": "1.0.0",
  "crafty_sdk": "1.0",
  "entry_scene": "coin_collector.tscn",
  "min_players": 1,
  "max_players": 8
}

Full Example

{
  "id": "quest-arena",
  "name": "Quest Arena",
  "version": "1.2.0",
  "crafty_sdk": "1.0",
  "entry_scene": "quest_arena.tscn",
  "player_scene": "player.tscn",
  "min_players": 1,
  "max_players": 12,
  "tick_rate": 60,
  "description": "Persistent multiplayer quests and progression.",
  "preview": "preview.png",
  "genre": "rpg",
  "tags": ["rpg", "quest", "persistence"],
  "input_actions": {
    "quest_complete": {"keyboard": "Q", "gamepad": "Y"},
    "buy_potion": {"keyboard": "B", "gamepad": "X"}
  }
}

Validation Rules That Cause Rejection

  • Missing any required key
  • Wrong type for required string fields
  • min_players or max_players not numeric
  • Invalid JSON

Versioning and Updates

When you submit a new .pck:
  • Keep the same id for the same game
  • Increase version
  • Re-submit through the submission endpoint
The platform stores versions and routes review/publishing from your newest submission.