Migrar desde CrazyGames
El shim de CrazyGames expone el SDK HTML5 v3 de CrazyGames (window.CrazyGames.SDK) sobre Gamealia. A la mayoría de los juegos les alcanza con cambiar una etiqueta de script.
1. Cambiá el script
<!-- antes -->
<script src="https://sdk.crazygames.com/crazygames-sdk-v3.js"></script>
<!-- después -->
<script src="https://gamealia.app/sdk/crazygames.js"></script>
gamealia init --write (o gamealia_integrate_sdk) lo hace por vos, y el prompt del MCP migrate-from-crazygames guía a tu asistente por toda la migración. El shim incluye el SDK de Gamealia, así que window.Gamealia también está: podés pasar las llamadas de a una.
Las versiones viejas del SDK (v1, v2) no están cubiertas: pasá esas llamadas a v3 o al SDK de Gamealia (la integración te deja un TODO). Si importás @crazygames/crazygames-sdk desde npm, cargá el shim con una etiqueta de script.
2. Revisá las políticas
CrazyGames permite cosas que Gamealia no: sacá las compras dentro del juego (Xsolla), las ofertas para "quitar anuncios", otras redes de anuncios y tu login propio. Mirá los requisitos del juego.
Equivalencias
| SDK v3 de CrazyGames | En Gamealia |
|---|---|
SDK.init() | Gamealia.init(), y carga los datos guardados para SDK.data |
SDK.environment, getEnvironment() | siempre "crazygames", así tus condiciones existentes siguen andando |
SDK.game.loadingStart() / loadingStop() | Gamealia.game.loadingStart() / loadingStop() |
SDK.game.sdkGameLoadingStart() / sdkGameLoadingStop() | igual que arriba |
SDK.game.gameplayStart() / gameplayStop() | Gamealia.game.gameplayStart() / gameplayStop() |
SDK.game.happytime() | Gamealia.game.happyTime() |
SDK.ad.requestAd("midgame", callbacks) | Gamealia.ad.requestMidgame(); adStarted y después adFinished, o adError con código unfilled |
SDK.ad.requestAd("rewarded", callbacks) | Gamealia.ad.requestRewarded(); adFinished solo si hubo recompensa |
SDK.ad.hasAdblock | siempre false |
SDK.banner.* | no hacen nada e informan éxito (el portal muestra su propio banner) |
SDK.game.inviteLink(params) | el mismo link del portal que Gamealia.room.inviteLink(code) (/game/<slug>?room=<code>). El código es roomId, roomName, room, id o code (si no, el primer parámetro) y debe tener 1-32 de A-Z a-z 0-9 _ -; los demás parámetros no viajan. "" antes de que resuelva init() o con un código inválido |
SDK.game.showInviteButton(params) | Gamealia.room.showInvite(code); devuelve el link |
SDK.game.getInviteParam(key) / inviteParams | para un jugador que entró desde un link: el código de sala en roomId, roomName y room |
SDK.game.settings.muteAudio, addSettingsChangeListener(cb) | sigue el mute / unmute del portal (anuncios, pestaña oculta, botón de silencio); los listeners reciben la configuración nueva |
SDK.game.addJoinRoomListener(cb) | el evento roomJoin, como { roomId } |
SDK.user.getUser() | Gamealia.user.get() como { __dangerousUserId, username, profilePictureUrl } |
SDK.user.getUserToken() | Gamealia.user.getToken() ("" para invitados); verificalo con el JWKS de Gamealia, mirá Cuentas de jugador |
SDK.user.showAuthPrompt() | Gamealia.user.requestLogin() |
SDK.user.addAuthListener(cb) | Gamealia.user.onChange() |
SDK.user.isUserAccountAvailable | true |
SDK.user.getSystemInfo(), systemInfo | idioma y dispositivo de Gamealia; countryCode siempre es "US" |
SDK.data.getItem/setItem/removeItem/clear | Guardado en la nube; los valores se guardan como texto, igual que en localStorage |
SDK.user.listFriends() | una lista vacía |
SDK.user.showAccountLinkPrompt() | { response: "no" } |
SDK.store.isAvailable | false (no hay compras en v1) |
SDK.user.getXsollaUserToken() | null, con un aviso |
SDK.user.submitScore, game.reportGameCompletedPercentage, game.setGameContext, game.clearGameContext, game.updateRoom, game.leftRoom, analytics.trackOrder, game.hideInviteButton | se aceptan y se ignoran (un aviso en la consola cada uno) |
SDK.data.getItem lee de una copia que se carga durante SDK.init(): esperá a init() antes de leer.
Tu backend
Si tu servidor verificaba tokens de CrazyGames, pasalo a los de Gamealia: ES256 con el JWKS de Gamealia y sub como id del jugador. Mirá Cuentas de jugador.