PlayDrop logoPlayDrop Studio
CrearIntercambio de partidasGanarAprenderConectoresRecursosComunidadAyuda
PlayDrop logoPlayDrop Studio
CrearIntercambio de partidasGanarAprenderConectoresRecursosComunidadAyuda
Iniciar sesión
Grupos locales y mandos
Documentación

Empieza aquí

ResumenTu primer juegoJuegos de PlayDropPreguntas frecuentes

Crea con Cloud

Creación con CloudPlanes y generaciones

Conecta tu app de IA

Todos los conectoresClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publica y comparte

Publicar desde tu app de IAJuegos HTML simplesEmpaquetado y .playPublicar e importarArchivos del juegoVisibilidad y alcanceImágenes y vídeo de la fichaGéneros y etiquetasLocalizaciónJuegos instantáneos

Experiencia de juego

Carga, pausa y audioPantalla completa y zonas segurasPartidas guardadas en la nubeGrupos locales y mandos

Juega en grupo

Compartir, amigos e invitacionesClasificacionesLogrosGrupos en línea y vozServidores en tiempo real

Gana

MonetizaciónCréditos y recompensas

Recursos

Recursos de juegoGeneración de recursos con IAFormatos personalizados y creaciones de jugadores

Referencia

SDK de clienteSDK de servidorcatalogue.jsonErrores y recuperaciónSolución de problemas
DocumentaciónGrupos locales y mandos
Experiencia de juego

Grupos locales, mandos y mandos de teléfono en juegos de PlayDrop

Lee mandos físicos y mandos de teléfono de PlayDrop con sdk.device, sigue las posiciones de los jugadores locales y declara mandos y tamaños de grupo local.

Un grupo local son varias personas jugando en una misma pantalla, cada una con un mando: un mando físico o un teléfono que PlayDrop convierte en mando al escanear un código. Tu juego lee todos los mandos de la misma forma a través del SDK, en la web y en las apps.

Declara los mandos y los tamaños de grupo

json
{
  "types": ["solo", "party"],
  "party": { "local": [1, 2, 3, 4] },
  "controller": { "support": "optional", "type": "simpler" }
}
  • controller.support es off, optional o required. Decláralo en todos los juegos, incluido off.
  • controller.type indica los controles mínimos que necesita el juego: any (direcciones, Confirmar y Cancelar), simpler (un joystick, cuatro botones frontales y Menú; los mandos de teléfono cumplen) o standard (cruceta, dos joysticks pulsables, cuatro botones frontales, dos botones laterales, dos gatillos y Menú).
  • party.local enumera el número exacto de jugadores en una misma pantalla; un 1 requiere el tipo solo. Con la compatibilidad con mandos activada, cada número indicado debe poder jugarse con mandos.

Lee los mandos

js
await sdk.device.enableControllerInput().catch(() => { /* keep keyboard and touch */ });

const stop = sdk.device.onButton(({ playerIndex, button, pressed }) => {
  if (button === "south" && pressed) jump(playerIndex);
});

function update() {
  for (const slot of sdk.device.localPlayers) {
    const pad = sdk.device.gamepad(slot.playerIndex);
    if (pad?.connected) move(slot.playerIndex, pad.axes[0], pad.axes[1]);
  }
  requestAnimationFrame(update);
}
update();
  • Llama a enableControllerInput() una vez después de init(). Se rechaza con controller_input_unavailable o controller_input_timeout cuando el host no puede proporcionar la entrada; el juego sigue funcionando.
  • gamepad(playerIndex) devuelve una instantánea con la disposición estándar del navegador: axes (x/y izquierdo y x/y derecho, de -1 a 1), diecisiete buttons, source (physical o virtual) e id. El playerIndex 0 es el jugador 1.
  • Los botones tienen nombres por posición, como south y east. pad.label("south") da la indicación que hay que mostrar: «A», «Cross» o «B» según el mando. pad.has("dpad") indica si un control existe.
  • Menú e Inicio pertenecen a PlayDrop y siempre se leen como no pulsados.
  • No llames nunca a navigator.getGamepads(): los mandos de teléfono solo llegan a los juegos a través del SDK, y PlayDrop registra una advertencia.

Posiciones de los jugadores locales

sdk.device.localPlayers enumera las posiciones que eligieron los jugadores, { playerIndex, gamepadKey }, y onLocalPlayersChange(callback) informa de los cambios. Un mando desconectado conserva su posición. Cuando la lista de jugadores cambie o se quede vacía, vuelve a un menú adecuado en lugar de fallar. Un solo mando es una entrada normal, no un grupo.

Desde un botón, sdk.social.openParty({ mode: "local" }) abre la ventana de emparejamiento de PlayDrop con el código QR para el teléfono y los mandos conectados. Ofrece solo los modos que hayas declarado.

Local o en línea, no ambos

El host inicia un juego como grupo local o como grupo en línea, nunca ambos: los jugadores locales no pueden entrar en salas en línea. Para jugar en línea con amigos, consulta grupos en línea y voz.

Diseña para el sofá

Muestra el color y la indicación del mando de cada jugador, deja que cualquiera se una pulsando un botón y mantén el HUD legible desde el sofá. Conserva los controles táctiles y de teclado para jugar en solitario.

Guías relacionadas

  • Grupos en línea y vozDeja que tus amigos jueguen en línea: declara tamaños de grupo, abre la ventana de grupo, entra en salas reservadas con sdk.multiplayer.join y gestiona la voz.
  • Pantalla completa y zonas segurasHaz que tu juego llene la pantalla y mantén el HUD dentro de las zonas seguras CSS y lejos de los controles del host con las reservedCorners del SDK.
  • catalogue.jsonCampos de catalogue.json que usan los juegos: identidad, ficha, modos, pantallas, sesión, instantáneo, precarga, medios, idiomas, puntuaciones y servidores.
AnteriorPartidas guardadas en la nube para juegos de PlayDropSiguienteCompartir, amigos e invitaciones en juegos de PlayDrop
Ver Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

En esta página

Declara los mandos y los tamaños de grupoLee los mandosPosiciones de los jugadores localesLocal o en línea, no ambosDiseña para el sofá
Ver Markdown