Autotest

Cada versión que subís se prueba en un navegador real antes de poder enviarla. Podés correr la misma prueba antes en tu máquina: gamealia test o la herramienta del MCP gamealia_run_autotest.

Qué hace

  1. Análisis estático de los archivos, antes de ejecutar nada: archivos que faltan, URLs de localhost y http://, exportaciones de motor incompletas, y reglas de seguridad (almacenamiento de otros juegos, cookies, la página del portal, código remoto, hosts no declarados, permisos, service workers, minería, ofuscación).
  2. Dos corridas en el navegador con Chromium headless: escritorio 1280x720 y celular 390x844 con pantalla táctil. Cada corrida carga el juego dentro de una copia del frame del portal, espera hasta 15 s a loadingStop(), saca una captura a los 5 s, hace clic o toca la pantalla, aprieta Espacio y Enter, responde los pedidos de anuncios con anuncios simulados, y mira la consola y la red.
  3. Una auditoría en ejecución durante las dos corridas: cada pedido y WebSocket, popups, intentos de navegar la página de arriba y pedidos de permisos. La prueba siembra datos falsos de "otro juego" en el almacenamiento y una cookie falsa; si alguno sale del juego, el build falla.

El resultado es pass, warn o fail. Si falla un chequeo obligatorio, la versión falla; las advertencias se permiten y el revisor las ve. En tu máquina recibís el reporte y las capturas; en el servidor el reporte aparece en la página de la versión, en gamealia status y en gamealia_get_status.

Chequeos

ChequeoObligatorioQué verifica y cómo arreglarlo
unpacksíEl zip se descomprime. Subí un zip normal de la carpeta del build (la CLI y el MCP lo arman por vos)
sizesíComo máximo 250 MB y 5000 archivos. Sacá assets que no usás; comprimí texturas y audio
entrysíindex.html está en la raíz. Subí la carpeta del build, no la de arriba
missing_assetssíExiste cada archivo que referencian el html, el js y el css. Las rutas distinguen mayúsculas
engine_integritysíLas exportaciones de Unity, Godot y GameMaker tienen todos sus archivos de motor. Subí la exportación completa
localhost_refssíSin URLs de localhost ni 127.0.0.1. Usá URLs relativas
mixed_contentsíSin cargas por http://. Usá https:// o URLs relativas
network_blocklistnoSin pedidos a hosts bloqueados (redes de anuncios, trackers, minería)
no_external_adssíSin código de anuncios que no sea de Gamealia. Usá Gamealia.ad.*
security_minersíSin código de minería de criptomonedas
cross_game_storagesíNo lee ni lista claves de localStorage o IndexedDB de otros juegos. Usá tus claves con prefijo o Gamealia.data
cookie_accesssíSin document.cookie. Usá Gamealia.data
parent_accesssíSin acceso a window.parent ni window.top. Hablá con el portal solo con el SDK
remote_codesíSin eval, new Function ni inyección de scripts con código descargado en ejecución
runtime_exfiltrationsíLos datos falsos sembrados nunca salieron del juego
exfiltrationnoEl código solo habla con hosts declarados. Declarás tus servidores en backendHosts
undeclared_hostsnoEn ejecución el juego solo contactó hosts declarados
permissionsnoSin pedidos de permisos, salvo el micrófono o la cámara que declara la ficha (Permisos del dispositivo)
service_workernoSin registro de service workers
obfuscationnoEl código no está muy ofuscado. Minificado está bien
sdk_loadedsíEl SDK de Gamealia (o un shim) está cargado
sdk_initsíGamealia.init() es la primera llamada al SDK
loading_stopsíGamealia.game.loadingStop() se llama dentro de los 15 s
no_console_errorsnoSin errores no capturados en la consola. gamealia preview los muestra
not_blanksíLa pantalla no está vacía 5 s después de cargar. Dibujá una pantalla de título temprano
input_responsenoUn clic o toque en el centro y Espacio/Enter cambian la pantalla (si no, también se toca el botón visible más grande)
gameplay_startnogameplayStart() se llama después del primer input
ad_handlingnoLas pausas con anuncio que pidió el juego se mostraron y terminaron
purchase_uinoSin pantallas de compra ni botones para "quitar anuncios"
own_loginnoSin login ni sistema de cuentas propio del juego

purchase_ui, own_login y las demás advertencias no bloquean la subida, pero el revisor rechaza un juego que no cumple las políticas.

En tu máquina

gamealia test            # compila y prueba; sale con código 1 si falla un chequeo obligatorio
gamealia test --json     # el reporte completo
gamealia preview --open  # jugalo vos dentro del frame del portal, con anuncios simulados

Las capturas y report.json se guardan en una carpeta temporal que se muestra al final. La prueba local necesita playwright-core y un Chromium headless (Navegador local).

Con el MCP, gamealia_run_autotest devuelve las capturas como imágenes para que tu asistente vea el juego, y gamealia_playtest le permite jugarlo paso a paso.

Cuando el servidor y tu máquina no coinciden

El servidor corre los mismos chequeos, con los permisos, los hosts de backend y el aislamiento que tenía la ficha al momento de subirla. Si cambiás los permisos pedidos, la versión se vuelve a probar antes de que puedas enviarla.