Logo
Comenzar

Módulo de Juego

Infraestructura de "Headless Game Backend" para juegos modernos basados en web.

El Módulo de Juego (apps/game-starter) ofrece características críticas para juegos multijugador, como tablas de clasificación, gestión de lobbies en tiempo real y economías virtuales. RapidCore actúa como un puente potente entre tu motor de juego (Unity, Phaser, vb.) y el mundo web.

Integración con Motores de Juego (Unity & Phaser)

RapidCore funciona como un Headless Game Backend para tu juego. Puedes comunicarte con el servidor desde tu juego usando la API REST o WebSockets.

Solicitudes de API

Puedes obtener los datos de un jugador desde el juego de la siguiente manera:

// Ejemplo de Unity (C#)
IEnumerator GetPlayerData(string playerId) {
    using (UnityWebRequest webRequest = UnityWebRequest.Get("https://api.rapidcore.io/game/player/" + playerId)) {
        yield return webRequest.SendWebRequest();
        if (webRequest.result == UnityWebRequest.Result.Success) {
            Debug.Log("Datos Recibidos: " + webRequest.downloadHandler.text);
        }
    }
}
Rendimiento

Evita realizar solicitudes de API en cada frame dentro del motor de juego. Mantén los datos en una caché local y solo envíalos al servidor en momentos críticos (Final de nivel, compra).

Lobbies en Tiempo Real y Sincronización

Usamos los canales de Supabase Realtime para la experiencia multijugador. Esto permite a los jugadores ver el estado de los demás al instante.

Configuración del Lobby

Usa la siguiente estructura en apps/game-starter/src/lib/lobby.ts para seguir el estado del lobby:

const lobbyChannel = supabase.channel('lobby-01')
  .on('presence', { event: 'sync' }, () => {
    const state = lobbyChannel.presenceState();
    console.log('Jugadores Activos:', state);
  })
  .subscribe();

Economía Virtual y Control de Inventario

Un sistema económico seguro es esencial para la sostenibilidad de tu juego.

  • Billetera Segura: El oro y las gemas del jugador nunca se actualizan sin validación en el lado del servidor.
  • Flujo de Compra: El proceso de añadir paquetes comprados a través de Stripe al inventario se muestra en el siguiente esquema:
graph TD
    A[Jugador] -->|Stripe Checkout| B(Confirmación de Pago);
    B -->|Webhook| C{Verificación del Servidor};
    C -->|Éxito| D[Añadir al Inventario];
    C -->|Error| E[Log y Cancelar];
    D -->|Realtime| F[Actualización de HUD];

Seguridad con Edge Functions (Anti-Cheat)

Para evitar trampas, las puntuaciones y recompensas nunca deben calcularse en el lado del cliente.

¿Por qué Edge Functions?

Vercel Edge Functions procesan las solicitudes en el punto más cercano al usuario, reduciendo la latencia y proporcionando seguridad en el servidor.

Ejemplo de Verificación de Puntuación

// apps/game-starter/api/verify-score.ts
export default async function handler(req: Request) {
  const { score, hash } = await req.json();
  const isValid = verifySignature(score, hash); // Verificación con clave de servidor
  
  if (!isValid) return new Response("Hampa detectada!", { status: 403 });
  
  await db.leaderboard.update(score);
  return new Response("Puntuación grabada.");
}

Componentes de UI Específicos para Juegos

Puedes crear HUDs y tablas de clasificación específicos para tu juego usando Tailwind v4.

  • HUD: Componentes como barras de salud e indicadores de munición están disponibles en packages/ui.
  • Ranuras de Inventario: Usa la clase inventory-slot para ranuras de glassmorphism modernas:
<div class="inventory-slot hover:border-pink-500 transition-all">
  <img src="/sword.png" alt="Espada" />
</div>
Consejo de Diseño

Mantén los componentes del HUD en una posición fixed con el z-index más alto para que siempre sean visibles sobre la escena del juego.