Pular para os jogos
Hadukis

Blog

No celular, nosso jogo feito para mouse não respondia a nada

· 4 min de leitura

A maioria das pessoas que abre um jogo de navegador faz isso no celular. Sabíamos disso, e mesmo assim Salt & Stone (um jogo de construir cidade numa ilha de rocha nua, comerciando por um mar interior) foi feito para mouse. A câmera, posicionar um prédio e selecionar um dependiam todos de eventos de mouse.

No celular, o resultado não era "meio chato de usar". Nada se mexia. Não dava para arrastar o mapa, não dava para posicionar nada, não dava para selecionar nada. Um jogo de gestão não dá nenhuma pista de como é controlado, então um jogador que não consegue mover o mapa simplesmente fecha o jogo.

A linha sem a qual nada mais funciona

O jogo agora usa pointer events, um caminho único para mouse, caneta e dedo. Só isso não muda nada no celular, por causa do navegador.

Por padrão, o navegador guarda para si o arrasto com um dedo, como rolagem da página, e o arrasto com dois dedos, como zoom da página. O canvas do jogo recebe só um aviso de que o gesto foi cancelado e mais nada. A correção é uma linha de CSS no canvas, dizendo ao navegador que os toques ali pertencem à página: touch-action: none. Ela precisa estar na folha de estilos, não ser definida por script depois.

Três coisas que um dedo não tem

Cada uma delas precisa da sua própria resposta. Mapeá-las uma a uma em ações de mouse não funciona.

Não tem hover. Com mouse, um "fantasma" do prédio segue o ponteiro antes do clique, mostrando se o lugar é válido. Um dedo não está em lugar nenhum até tocar. Então, com um prédio selecionado, você arrasta o fantasma e solta para posicionar: você vê o prédio, e se ele cabe, antes de confirmar. É o mais perto de hover que existe numa tela de vidro.

Um dedo não consegue arrastar o mapa e mirar ao mesmo tempo. Um mouse move o ponteiro e o mapa separadamente. Com um prédio na mão, um dedo mira e dois dedos arrastam e dão zoom com pinça. Sem nada na mão, um dedo move o mapa, que é o que as pessoas tentam primeiro.

Não tem roda nem botão direito. Eles serviam para girar o prédio e para largá-lo. No toque, viraram dois botões de 56 pixels que só aparecem enquanto você está segurando alguma coisa, para não poluir a tela no resto do tempo.

Pergunte o que o aparelho é, não qual a largura dele

Os botões também precisavam crescer. O jeito comum de fazer isso é uma media query pela largura da tela, e aqui ela inverte os dois casos: um tablet tem 1024 pixels de largura e precisa de controles do tamanho de um dedo, enquanto uma janela estreita de navegador num desktop não precisa.

Então a troca de tamanho pergunta se o ponteiro principal é grosso (um dedo) em vez de perguntar a largura da janela. Num aparelho de toque, os botões da barra passam de 28 para 46 pixels e os cartões de prédio, de 56 para 84.

Mais uma regra específica de celular: deitado, um celular é baixo. Se a tela tem menos de 520 pixels de altura, a bandeja de prédios não abre sozinha, porque aberta ela cobre mais da metade da tela — inclusive a parte da cidade em que você está tentando escolher um lugar.

A mesma lição num jogo de ação

Husktide tinha outro problema. Ele se desenhava numa caixa fixa de 16:9 e escalava essa caixa para caber na tela. Num celular em pé, isso deixava uma faixa no meio da tela, com preto em cima e embaixo: o jogo usava 26% da tela.

A correção foi escolher o formato da caixa do jogo a partir do formato da tela antes de o jogo começar, mantendo o mesmo número total de pixels, para que todas as medidas de layout continuassem valendo. Num celular em pé, agora ele usa 99,9%.

Isso revelou um segundo problema. Tudo é desenhado nas unidades do próprio jogo e depois reduzido para caber, então um botão de 52 unidades de altura pode chegar a um celular deitado com 27 pixels reais — pequeno demais para acertar com confiança. Todo alvo de toque agora é dimensionado a partir de um único número calculado com a escala real, então sempre sai com pelo menos 44 pixels no vidro.

A lição geral

Não dá para deixar "funciona no celular" para o final. Um esquema de controle construído em torno de um ponteiro que paira, uma roda e um segundo botão precisa ser redesenhado para um dedo; remapear não basta. E o primeiro teste é o mais sem graça: abrir no celular e tentar fazer a primeira coisa que um jogador faria.

Jogue Salt & Stone no que você tiver na mão.