DocsMigration Guide

Migration Guide

Migrate from separate SDKs to the unified ShardKit-generated SDK.


From Separate SDK Repositories

If you were using the old separate SDKs (multiplayer_sdk, recording_sdk, error_tracking_sdk):

Step 1: Remove Old Addon Folders

rm -rf addons/multiplayer_sdk
rm -rf addons/recording_sdk
rm -rf addons/error_tracking_sdk
rm -rf addons/sentinel_sdk

Step 2: Initialize with ShardKit

npx @shard-dev/shardkit init

Follow the prompts to select your game name, Godot version, game type, and features.

Step 3: Update Code References

The unified SDK uses ShardSDK as the main singleton with feature-specific sub-objects:

OldNew
RecordingSDK.start_recording()ShardSDK.recording.start_recording()
RecordingSDK.stop_recording()ShardSDK.recording.stop_recording()
SentinelSDK.report_error()ShardSDK.errors.report_error()
SentinelSDK.add_breadcrumb()ShardSDK.errors.add_breadcrumb()
MultiplayerSDK.connect_to_server()ShardSDK.multiplayer.connect_to_server()
MultiplayerSDK.create_lobby()ShardSDK.multiplayer.create_lobby()

Step 4: Update Signal Connections

Godot 4:

# Old
RecordingSDK.recording_started.connect(_on_recording_started)
 
# New
ShardSDK.recording.recording_started.connect(_on_recording_started)

Godot 3:

# Old
RecordingSDK.connect("recording_started", self, "_on_recording_started")
 
# New
ShardSDK.recording.connect("recording_started", self, "_on_recording_started")

From shard.recording.json

If you have an existing shard.recording.json file from an older version:

  1. Run shardkit init - it will detect your existing events
  2. Your events will be migrated to the new shard.config.json format
  3. The old shard.recording.json can be deleted after migration

Configuration Changes

Old: Separate Config Files

your-project/
├── shard.recording.json
├── sentinel.config.json
└── multiplayer.config.json

New: Unified Config

your-project/
└── shard.config.json

The unified config contains all feature settings:

{
  "$schema": "https://shard.gg/schemas/shard-config.json",
  "gameName": "My Game",
  "godotVersion": "4.x",
  "gameType": "singleplayer",
  "features": {
    "recording": true,
    "errorTracking": true,
    "multiplayer": false
  },
  "recording": {
    "events": [...]
  }
}

Project Settings Changes

Old: Separate Prefixes

recording_sdk/server_url
sentinel_sdk/server_url
multiplayer_sdk/server_host

New: Unified Prefix

shard_sdk/recording/server_url
shard_sdk/errors/server_url
shard_sdk/multiplayer/server_host

Plugin Changes

Old: Multiple Plugins

Project → Project Settings → Plugins
  ☑ Recording SDK
  ☑ Sentinel SDK
  ☑ Multiplayer SDK

New: Single Plugin

Project → Project Settings → Plugins
  ☑ Shard SDK

Quick Reference

Recording

# Old
var id = yield(RecordingSDK.start_recording("event_id"), "completed")
yield(RecordingSDK.stop_recording(id, 3.0), "completed")
 
# New (Godot 3)
var id = yield(ShardSDK.recording.start_recording("event_id"), "completed")
yield(ShardSDK.recording.stop_recording(id, 3.0), "completed")
 
# New (Godot 4)
var id = await ShardSDK.recording.start_recording("event_id")
await ShardSDK.recording.stop_recording(id, 3.0)

Error Tracking

# Old
SentinelSDK.report_error("type", "message", {})
SentinelSDK.add_breadcrumb("message", "category")
 
# New
ShardSDK.errors.report_error("type", "message", {})
ShardSDK.errors.add_breadcrumb("message", "category")

Multiplayer

# Old
MultiplayerSDK.connect_to_server(token)
MultiplayerSDK.create_lobby()
MultiplayerSDK.send_input(input)
 
# New
ShardSDK.multiplayer.connect_to_server(token)
ShardSDK.multiplayer.create_lobby()
ShardSDK.multiplayer.send_input(input)

Need Help?

If you encounter issues during migration:

  1. Check the ShardKit CLI Reference for command options
  2. Review feature-specific documentation:
  3. Ensure your Godot version matches what you selected during shardkit init