user-gearAñadiendo Lógica del Jugador

En All Out, el jugador es un objeto de juego de primera clase. Tu Player :: class : Player_Base es donde colocas estado por jugador (salud, configuraciones de equipo, tiempos de reutilización, conmutadores de UI, progresión, etc.).

circle-exclamation

Estado por jugador

Almacena el estado de juego en el jugador u objetos propiedad del jugador.

Player :: class : Player_Base {
    health: int;
    inventory_open: bool;
}

Servidor + cliente: ¿qué se ejecuta dónde?

All Out sincroniza automáticamente el estado de juego desde el servidor hacia los clientes. Aún debes decidir qué código debe ejecutarse en el servidor vs qué puede ser solo local.

Dos comprobaciones comunes:

  • is_local_or_server(): UI de juego + manejo de entrada (se ejecuta en servidor + cliente local)

  • is_local(): UI/efectos puramente cosméticos (se ejecuta solo en el cliente local)

Player :: class : Player_Base {
    ao_late_update :: method(dt: float) {
        // UI de juego + manejo de entrada (servidor + cliente local)
        if is_local_or_server() {
            // draw_ability_button(this, Shoot_Ability, 0);
            // Manejar toques/press que cambian el estado del juego
        }

        // Solo UI cosmética (solo cliente local)
        if is_local() {
            // UI.text(..., "Esperando al anfitrión...");
            // Partículas, sacudida de pantalla, etc.
        }
    }
}
circle-info

Si algo afecta al mundo (daño, recompensas, spawn, condiciones de victoria), trátalo como con autoridad del servidor. Si es solo presentación (UI/partículas), mantenlo local.

Identidad del jugador y datos de perfil

Player_Base expone campos de identidad que usarás a menudo:

  • p->get_username() -> string

  • p->get_user_id() -> string

  • p.avatar_color

  • p.device_kind (.PHONE, .TABLET, .PC)

Persistencia: dónde almacenar el progreso del jugador

  • Economy: monedas (monedas/gemas/xp) con persistencia automática + edición desde el portal de creadores Ver Economy.

  • Guardado: persistencia general clave/valor (ajustes, estado de misiones, listas de desbloqueos, etc) Ver Sistema de Guardado.

  • Inventario: pilas/instancias de ítems en un inventario de jugador (opcionalmente guardado automáticamente) Ver Inventario.

Patrón común: cargar valores guardados en ao_start

Mejores prácticas

  • Mantén el estado por jugador en Player. Evita los globales para cualquier cosa específica del jugador.

  • Separa jugabilidad vs cosméticos. Usa is_local_or_server() para entrada/UI de juego, is_local() para visuales solo locales.

  • Prefiere las API de persistencia incorporadas en lugar de crear las tuyas (Economy/Save/Inventory).

Referencia Player_Base

Ver reference/player-base.md para campos y métodos de uso común.

Última actualización