Juegos de un jugador
Arcade, puzles, carreras, mesa… con guardado de progreso y rankings de siempre, de la semana y de amigos.
Un archivo HTML y nuestro SDK. La gente lo abre desde megapok.com y desde las apps de iPhone y Android con su cuenta de MegaPok: sin registros nuevos, sin servidores tuyos y con guardado, rankings, salas multijugador y cobro por suscripción ya resueltos.
<script src="https://medallovip.com/webapps/megapok-sdk.js"></script>
<script>
MegaPok.listo().then(({ yo }) => {
saludar('Hola, ' + yo.nombre);
});
async function finDePartida(puntos) {
await MegaPok.puntuacion.guardar(puntos);
const { filas } = await MegaPok.puntuacion
.top({ periodo: 'semana', n: 10 });
pintarRanking(filas);
}
</script>
Juegos y apps web (HTML5) que corren dentro de MegaPok. Puedes usar canvas, WebGL, Phaser, Three.js o JavaScript puro.
Arcade, puzles, carreras, mesa… con guardado de progreso y rankings de siempre, de la semana y de amigos.
Salas con código de hasta 16 personas, estado compartido, eventos, tiempo real (~0,1 s), voz y retos con notificación.
Utilidad, productividad, social, entretenimiento, crear, herramientas, educación y servicios: las mismas categorías de la tienda.
Describe tu juego en el portal y la IA lo escribe; otra IA lo prueba y corrige. Ves el precio en créditos antes de confirmar, lo editas con vista previa, lo descargas (.html o .zip) y lo envías a la misma revisión.



?megapok_demo=1 al final de la dirección: el SDK simula una cuenta de prueba y guarda todo en tu navegador.Un solo script expone el objeto global MegaPok. Todas las llamadas devuelven promesas. Dentro de las apps la sesión llega sola; fuera, usa el modo demo.
<script src="https://medallovip.com/webapps/megapok-sdk.js"></script>Recibes el nombre y la foto públicos y un jugadorId propio de tu app (no es el id de MegaPok). En apps de terceros la persona acepta antes qué datos ves. Nunca correo ni teléfono.
const s = await MegaPok.listo();
s.yo; // { jugadorId, nombre, foto, usuario }
s.idioma; // 'es', 'en'…
s.tema; // 'claro' | 'oscuro'
MegaPok.on('cuentaCambio', () => location.reload());En el servidor y por persona: hasta 60 claves de ≤ 16 KB (200 KB en total). guardarEstado recuerda dónde iba para seguir después. El juego corre aislado: no uses localStorage.
await MegaPok.datos.guardar('nivel', 3);
const nivel = await MegaPok.datos.leer('nivel');
MegaPok.on('pausa', () =>
MegaPok.guardarEstado({ nivel: 3, vidas: 2 }));
const antes = await MegaPok.leerEstado();MegaPok arma las tablas (siempre, semana, amigos). Puedes retar a un amigo con notificación y tener un muro de comunidad.
await MegaPok.puntuacion.guardar(1250);
const { filas, mio } = await MegaPok.puntuacion
.top({ periodo: 'amigos', n: 10 });
const amigos = await MegaPok.amigos();
await MegaPok.retar(amigos[0].jugadorId,
{ mensaje: '¿Me ganas?' });Salas de hasta 16 personas que viven 24 h: estado ≤ 32 KB, eventos ≤ 4 KB, tiempo real por Realtime Database y voz de la sala (pide el micrófono desde un toque).
const codigo = await MegaPok.sala.crear({ max: 4 });
const parar = MegaPok.sala.escuchar(codigo,
(sala, eventos) => pintar(sala.estado, eventos));
await MegaPok.sala.enviar(codigo, {
evento: { tipo: 'jugada', datos: { x: 2 } } });
boton.onclick = () => MegaPok.voz.unirse(codigo);El cobro por suscripción no necesita código: lo configuras al enviar y MegaPok muestra su ventana de pago. Para artículos dentro del juego existe una tienda con los créditos de la billetera: el precio lo pone el servidor y la compra nunca cobra dos veces.
const { items, saldo } = await MegaPok.tienda();
const r = await MegaPok.comprar({ item: 'skin_oro' });
if (r.ok) desbloquear(r.item);
else if (r.motivo === 'saldo') avisar('Sin créditos');
// motivo: 'cancelado' | 'saldo' | 'error'Consulta permisos sin preguntar y pide cámara, galería o ubicación solo cuando hagan falta. En las apps lo resuelve el contenedor nativo; en la web, el selector de archivos del navegador. Las notificaciones locales solo funcionan dentro de las apps.
const p = await MegaPok.permisos();
// { ubicacion, camara, galeria, notificaciones }
const foto = await MegaPok.camara.foto();
// { nombre, tipo, base64, url, ancho, alto, bytes }
const [img] = await MegaPok.galeria({ max: 1 });
const { lat, lng } = await MegaPok.ubicacion();Informa el progreso de carga, guarda al pasar a segundo plano, comparte, vibra, gira la vista en horizontal o cierra el juego.
MegaPok.progreso(0.4, 'Cargando mapa');
MegaPok.on('pausa', guardarTodo);
MegaPok.on('reanudar', seguir);
MegaPok.nativo.compartir('¡Hice 1250!', url);
MegaPok.nativo.giro(90);
MegaPok.cerrar();Los errores del servidor traen status (401, 403, 404, 409, 413, 429) y un mensaje legible: 429 es ritmo (espera y reintenta) y 413 es tamaño. Las funciones del dispositivo usan code: cancelado, permiso_denegado, no_disponible, limite, invalido, tiempo.
try {
await MegaPok.camara.foto();
} catch (e) {
if (e.code === 'permiso_denegado') pedirPermiso();
else if (e.code !== 'cancelado') console.warn(e);
}| Archivo | Un HTML UTF-8 de máximo 3 MB, con <!DOCTYPE html> y el SDK. No se aceptan .zip ni varios archivos. |
|---|---|
| Recursos pesados | Imágenes, audio, fuentes, motores u otros .js se cargan desde tus dominios declarados (con CORS abierto). |
| Dominios externos | Máximo 5, solo https, sin IP ni puertos raros. Cualquier otra conexión se bloquea. |
| Ícono | PNG, JPEG o WebP de máximo 300 KB, cuadrado (512 × 512 recomendado). Nunca SVG. |
| Portada | Opcional: PNG, JPEG o WebP 16:9 de máximo 600 KB. |
| Aislamiento | Se sirve desde otro dominio con CSP sandbox (origen opaco): sin cookies, localStorage, ventanas emergentes ni redirecciones. Guarda con el SDK. |
| Pantallas | Debe funcionar en el celular y en el computador. Eliges vertical u horizontal al enviar. |
| Envíos | Hasta 3 en revisión a la vez y 10 por día. |
MegaPok.anuncios().Marca tu app como gratis o «requiere suscripción» con un precio de $1.000 a $200.000 COP al mes y de 0 a 30 días gratis de prueba. Quien juega paga con su billetera de MegaPok.
El reparto se hace en el servidor, en la misma transacción del cobro. Lo ves en «Mis apps» (total y por app) y lo retiras desde la billetera con las reglas de retiro de los creadores.
Publica un video de tu juego y promociónalo con el botón «Jugar», que lleva directo a tu app. Puedes cambiar el precio o pasar a gratis cuando quieras.
La tienda con créditos (MegaPok.comprar) y los anuncios dentro del juego (MegaPok.anuncios()) existen en el SDK, pero el catálogo de artículos lo configura el equipo de MegaPok y el reparto para desarrolladores externos aún no está definido. Si quieres usarlos, escríbenos antes a soporte@medallovip.com.
Al aprobarla entra al catálogo de MegaPok en la web (megapok.com/apps) y en las apps de iPhone y Android. Su ficha muestra tu nombre como desarrollador.
Los juegos van aquí: «Lo más jugado» se ordena solo por uso, y hay filas por categoría (fiesta, mesa…) y «Te pueden gustar».
Las apps van aquí: «Las más usadas», «Top gratis» y «Top pagadas» se arman solos con el uso, más «Sugeridas para ti» y las nuevas con la insignia «Nuevo».
Hoy y los banners son editoriales: los elige el equipo de MegaPok. Si quieres proponer tu juego, escríbenos. Arcade está reservado a los juegos propios de MegaPok.
¿Dudas, alianzas o un juego grande que no cabe en estas reglas? Escríbenos a soporte@medallovip.com con el asunto «Desarrolladores».
Enviar una app no tiene costo. Crear con IA sí cobra créditos, y ves el precio antes de confirmar.
Todavía no. Se publica un solo HTML de hasta 3 MB; lo pesado va en tus dominios declarados.
Sí. Inclúyelos en el HTML o cárgalos desde tu dominio declarado. Unity WebGL suele pesar más de 3 MB: sirve los .data y .wasm desde tu dominio.
El juego corre aislado (origen opaco). Usa MegaPok.datos y MegaPok.guardarEstado.
No. Solo nombre, foto y un jugadorId propio de tu app, después de que la persona acepta.
Depende de la cola. Ves el estado en «Mis apps» y puedes tener 3 envíos en revisión a la vez.
Con ?megapok_demo=1 las salas se simulan en tu navegador. Con personas reales, en la revisión el equipo lo abre con cuentas reales.
El 70 % de cada suscripción entra a tus ganancias de MegaPok; lo retiras desde la billetera con las mismas reglas de retiro de los creadores.