PlayDrop logoPlayDrop Studio
CriarTroca de partidasGanharAprenderConectoresRecursosComunidadeAjuda
PlayDrop logoPlayDrop Studio
CriarTroca de partidasGanharAprenderConectoresRecursosComunidadeAjuda
Entrar
Grupos locais e controles
Documentação

Comece aqui

Visão geralSeu primeiro jogoJogos do PlayDropPerguntas frequentes

Crie com o Cloud

Criação com CloudPlanos e gerações

Conecte seu app de IA

Todos os conectoresClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publique e compartilhe

Publicar pelo seu app de IAJogos em HTML simplesEmpacotamento e .playPublicação e importaçãoArquivos do jogoVisibilidade e alcanceArte e vídeo da listagemGêneros e tagsLocalizaçãoJogos instantâneos

Experiência de jogo

Carregamento, pausa e áudioTela cheia e áreas segurasSalvamentos na nuvemGrupos locais e controles

Jogue junto

Compartilhamento, amigos e convitesPlacaresConquistasGrupos online e vozServidores em tempo real

Ganhe

MonetizaçãoCréditos e recompensas

Assets

Assets de jogoGeração de assets com IAFormatos personalizados e criações dos jogadores

Referência

SDK de clienteSDK de servidorcatalogue.jsonErros e recuperaçãoSolução de problemas
DocumentaçãoGrupos locais e controles
Experiência de jogo

Grupos locais, controles físicos e controles de celular no PlayDrop

Leia controles físicos e de celular do PlayDrop com sdk.device, acompanhe as posições dos jogadores locais e declare suporte a controles e tamanhos de grupo.

Um grupo local é formado por várias pessoas jogando em uma só tela, cada uma com um controle: um controle físico ou um celular que o PlayDrop transforma em controle quando alguém escaneia um código. Seu jogo lê todos os controles do mesmo jeito pelo SDK, no site e nos apps.

Declare os controles e os tamanhos de grupo

json
{
  "types": ["solo", "party"],
  "party": { "local": [1, 2, 3, 4] },
  "controller": { "support": "optional", "type": "simpler" }
}
  • controller.support é off, optional ou required. Declare-o em todo jogo, inclusive com off.
  • controller.type indica os controles mínimos de que o jogo precisa: any (direções, Confirmar e Cancelar), simpler (um analógico, quatro botões frontais e Menu; os controles de celular se enquadram) ou standard (direcional, dois analógicos clicáveis, quatro botões frontais, dois botões de ombro, dois gatilhos e Menu).
  • party.local lista os números exatos de jogadores em uma só tela; um 1 exige o tipo solo. Com o suporte a controles ativado, todo número listado precisa ser jogável com controles.

Leia os controles

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();
  • Chame enableControllerInput() uma vez depois de init(). A chamada é rejeitada com controller_input_unavailable ou controller_input_timeout quando o host não consegue fornecer a entrada; o jogo continua rodando.
  • gamepad(playerIndex) retorna um snapshot no layout padrão do navegador: axes (x/y esquerdo e x/y direito, de -1 a 1), dezessete buttons, source (physical ou virtual) e id. O playerIndex 0 é o jogador 1.
  • Os botões têm nomes por posição, como south e east. pad.label("south") informa o nome do botão a mostrar: "A", "Cross" ou "B", conforme o controle. pad.has("dpad") diz se o controle tem determinado comando.
  • Menu e Home pertencem ao PlayDrop e sempre aparecem como não pressionados.
  • Nunca chame navigator.getGamepads(): os controles de celular só chegam aos jogos pelo SDK, e o PlayDrop registra um aviso.

Posições dos jogadores locais

sdk.device.localPlayers lista as posições que os jogadores escolheram, { playerIndex, gamepadKey }, e onLocalPlayersChange(callback) informa as mudanças. Um controle desconectado mantém sua posição. Quando a lista de jogadores mudar ou ficar vazia, volte para um menu adequado em vez de travar. Um controle sozinho é uma entrada comum, não um grupo.

A partir de um botão, sdk.social.openParty({ mode: "local" }) abre a janela de pareamento do PlayDrop, com o QR code para os celulares e os controles físicos conectados. Ofereça só os modos que você declarou.

Local ou online, nunca os dois

O host inicia um jogo como grupo local ou como grupo online, nunca os dois: jogadores locais não podem entrar em salas online. Para jogar online com amigos, veja grupos online e voz.

Pense no sofá

Mostre a cor de cada jogador e o nome dos botões do controle dele, deixe qualquer pessoa entrar apertando um botão e mantenha o HUD legível do sofá. Mantenha os controles por toque e por teclado para o modo solo.

Guias relacionados

  • Grupos online e vozAmigos jogam juntos online: declare tamanhos de grupo, abra a janela de grupo do PlayDrop, entre em salas reservadas com sdk.multiplayer.join e controle a voz.
  • Tela cheia e áreas segurasFaça o jogo ocupar a tela toda, com o HUD dentro das áreas seguras do CSS e longe dos controles do host, usando os reservedCorners medidos pelo SDK.
  • catalogue.jsonOs campos do catalogue.json que os jogos do PlayDrop usam: identidade, listagem, modos de jogo, superfícies, login, Instantâneo, pré-carregamento, mídia, traduções, pontuações e servidores.
AnteriorSalvamentos na nuvem para jogos do PlayDropPróximoCompartilhamento, amigos e convites em jogos do PlayDrop
Ver Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Nesta página

Declare os controles e os tamanhos de grupoLeia os controlesPosições dos jogadores locaisLocal ou online, nunca os doisPense no sofá
Ver Markdown