t1k:cocos:playable:sdk-core
| Field | Value |
|---|---|
| Module | playable |
| Version | 0.5.6 |
| Effort | medium |
| Tools | — |
Keywords: ad network, ads, cocos, CTA, playable, postMessage, sdk, SdkFactory
How to invoke
Section titled “How to invoke”/t1k:cocos:playable:sdk-coreCocos Playable SDK Abstraction
Section titled “Cocos Playable SDK Abstraction”This skill handles SDK integration, adapter creation, and CTA routing for playable ads. Does NOT handle parameter definitions (use t1k-cocos-playable-parameter) or game flow (use t1k-cocos-playable-gameflow).
Architecture
Section titled “Architecture”Ad Dashboard -> postMessage -> window.mainPlayable.onParameterUpdated() -> BaseSdkAdapter hooks intercept -> fireParameterUpdate() to listeners -> PlayableParameterUpdates syncs to PlayableConfig -> onUpdate callbacksSDK selection: CURRENT_SDK constant in PlayableConfig.ts — set at build time.
SDK Types
Section titled “SDK Types”export enum SdkType { VOODOO = 'voodoo', THE_ONE = 'theone' }Core Classes
Section titled “Core Classes”- BaseSdkAdapter (abstract) — Window object hooks, parameter listener pub/sub, polling init
- SdkFactory — Creates adapter + registers window objects by SDK type
- CTAService — Routes CTA clicks: THE_ONE ->
gameEndHandler, VOODOO ->ParameterManager.redirect()
Workflow: Adding a New SDK
Section titled “Workflow: Adding a New SDK”- Add enum value in
GameConfig.ts->SdkType - Create adapter class extending
BaseSdkAdapter(singleton pattern) - Implement
getWindowPlayableName()andgetWindowSdkName() - Register in
SdkFactory.createSdk()andgetSdkInstance()switch cases - Update CTAService with SDK-specific redirect logic
- Set
CURRENT_SDKinPlayableConfig.ts
Parameter Update Flow
Section titled “Parameter Update Flow”- Dashboard edits param -> sends
postMessage - SDK sets
window.mainPlayable.onParameterUpdated(params) - BaseSdkAdapter hook intercepts, calls original + fires to listeners
- PlayableParameterUpdates (listener) syncs values to PlayableConfig
- Each parameter’s
onUpdatecallback fires - ParameterUtils applies changes to scene nodes
- Sync done:
ParametersReadySignal - Async done (sprites, audio):
AllAsyncParametersReadySignal
SDK Interfaces
Section titled “SDK Interfaces”Playable (from dashboard): create(), init(), start(), pause(), resume(), onResize(), onParameterUpdated(params), onAudioVolumeChanged(), onParameterHighlighted(params)
PlayableMainSdk (our API): getAudioVolume(), getParameterValue(key), getScreenSize(), win(), lose(), getUserLanguage(), redirectToInstallPage()
Code Examples
Section titled “Code Examples”See references/sdk-code-examples.md for adapter implementation patterns.
Gotchas
Section titled “Gotchas”- Per-network SDK quirks — AppLovin auto-resizes the canvas; AdMob doesn’t; Meta freezes mid-frame on init. Pin per-network behavior in a network-specific build flag.
- The hosting iframe rules —
window.topis unreachable; storage is per-iframe; user gesture requirements differ per network.