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_sdkStep 2: Initialize with ShardKit
npx @shard-dev/shardkit initFollow 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:
| Old | New |
|---|---|
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:
- Run
shardkit init- it will detect your existing events - Your events will be migrated to the new
shard.config.jsonformat - The old
shard.recording.jsoncan be deleted after migration
Configuration Changes
Old: Separate Config Files
your-project/
├── shard.recording.json
├── sentinel.config.json
└── multiplayer.config.jsonNew: Unified Config
your-project/
└── shard.config.jsonThe 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_hostNew: Unified Prefix
shard_sdk/recording/server_url
shard_sdk/errors/server_url
shard_sdk/multiplayer/server_hostPlugin Changes
Old: Multiple Plugins
Project → Project Settings → Plugins
☑ Recording SDK
☑ Sentinel SDK
☑ Multiplayer SDKNew: Single Plugin
Project → Project Settings → Plugins
☑ Shard SDKQuick 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:
- Check the ShardKit CLI Reference for command options
- Review feature-specific documentation:
- Ensure your Godot version matches what you selected during
shardkit init