← Todas as novidades

Jogando um card game tático com controle: como funciona o suporte a controle em Ancient Duel

Jogando um card game tático com controle: como funciona o suporte a controle em Ancient Duel

O suporte a controle costuma pertencer a jogos de movimento e mira. Ancient Duel não tem nenhum dos dois. É um card game: você olha para o tabuleiro, pensa um pouco e então faz uma única escolha discreta.

E é justamente por isso que um controle acabou combinando com ele. Toda ação em um duelo se reduz à mesma lista curta. Qual carta. Qual posição. Qual alvo. Confirmar. Voltar. Essa é a língua nativa de um controle, e ela se encaixa mal em um dispositivo cujo grande talento é apontar para pixels arbitrários.

Um controle não deve fingir que é um mouse

O atalho tentador é deixar o analógico empurrar um cursor pela tela. É rápido de construir e desagradável de usar: você acaba guiando um ponteiro por cima do feltro vazio, fazendo trabalho analógico para tomar uma decisão digital.

Ancient Duel move a seleção em vez disso. O analógico ou o direcional pula entre coisas que de fato significam algo — uma carta na mão, uma unidade no campo, um alvo, um botão, uma aba — e Confirmar ativa o que estiver selecionado. Você nunca mira. Você diz “próxima carta”, “essa aqui”, “sim”.

A camada de entrada inteira segue uma regra que estabeleci cedo e nunca quebrei: ela nunca reimplementa uma ação do jogo. Ela move o foco e deixa o botão que já estava lá fazer o seu trabalho. O jogo já podia ser operado por teclado desde um trabalho de acessibilidade em abril, então o suporte a controle não exigiu mexer na lógica do jogo. O inverso também vale: o que é inalcançável pelo teclado é inalcançável pelo controle. Tornar algo navegável significa transformá-lo em uma parada de foco, não escrever código de entrada novo.

O tabuleiro já era uma grade

Um card game ajuda aqui de um jeito que um mundo 3D não ajuda. O campo de batalha de Ancient Duel é uma estrutura fixa e finita: quatro posições de unidade por lado, um espaço de Comandante no meio, uma fileira de estratégia, uma mão, dois cemitérios, uma zona de terreno. Não há espaço contínuo a percorrer.

Então o layout visual pode simplesmente virar a navegação. Esquerda e direita andam ao longo de uma fileira, cima e baixo alternam entre a mão e o campo, e os botões de ombro saltam zonas inteiras de uma vez, em vez de passar por tudo o que há no meio. O analógico direito rola a tela, e Start abre as configurações do controle.

O foco é o cursor

Com um mouse, quem joga sempre sabe para onde está apontando, porque é a própria mão que aponta. Tire o ponteiro e a interface precisa responder a três perguntas o tempo todo: o que está selecionado, o que Confirmar vai fazer com isso e o que Voltar vai desfazer.

Parece óbvio, e foi aí que se concentrou a maior parte do trabalho miúdo. Uma caixa de diálogo que abre com a seleção no botão de fechar é tecnicamente navegável e na prática inútil: o jogo acabou de perguntar qual carta você quer descartar, e o destaque está parado no ✕. Agora as caixas de diálogo abrem na primeira escolha real, e os modos de seleção de alvo colocam a seleção no primeiro alvo válido, em vez de só destacar todos eles — o que funcionava com um ponteiro e virava uma caçada sem ele.

Um bom suporte a controle não é o estado em que todo botão é alcançável. É o estado em que você para de pensar em como alcançá-los.

Nunca confie no índice de um botão

Esta é a parte que eu subestimei feio.

Um controle de PC pode informar que usa o layout padrão e depois numerar seus botões como bem entender o firmware. O controle em que eu testo faz exatamente isso e, para piorar, traz impresso 1 / 2 / 3 / 4 no sentido horário a partir de cima, em vez de A/B/X/Y. Então há três fatos distintos escondidos atrás de cada toque, e só o primeiro pode ser de fato conhecido: a entrada bruta, a posição física daquele botão no plástico e o rótulo impresso ao lado dele. Um jogo que associa Confirmar ao “botão 0” está chutando dois dos três.

Por isso Ancient Duel tem um assistente de calibração, e ele nunca deduz nada a partir de um índice. Ele aprende a posição física com as suas mãos e o rótulo impresso com aquilo que você diz estar escrito no aparelho. Os rótulos são escolhidos de uma lista, não digitados, porque um controle não tem letras — e não são enfeite: se você disser ao jogo que o seu botão de baixo diz “B” e o da direita diz “A”, você está segurando um hardware na convenção da Nintendo, não importa o que o navegador ache, e Confirmar e Voltar trocam de lugar de acordo.

Um comando que você pula fica mudo. Não há recurso a um índice adivinhado, porque um botão de ombro que confirma uma rendição é exatamente a falha que a calibração existe para evitar.

Uma calibração que não pode pedir um mouse

Há um paradoxo enterrado nisso. Quem tem o controle mapeado errado é justamente quem precisa da tela de calibração — e justamente quem não consegue navegar por um menu normal para chegar até ela.

Por isso a regra que todo o design segue é que deve ser possível calibrar, rotular, salvar, reabrir e consertar um controle sem mouse nem teclado. Eles funcionam no desktop por conveniência; nada pode depender deles.

Na prática, isso significa que o assistente abre em “pressione qualquer botão para começar” e aceita qualquer botão bruto de qualquer controle conectado, e esse toque também decide qual controle é o dono da sessão. Confirmar e cancelar vêm em seguida e não podem ser pulados. Da terceira pergunta em diante, o botão que você acabou de nomear como o botão frontal da direita volta um passo, então pressioná-lo vezes suficientes fecha o assistente — a única saída que não precisa de ponteiro. Cada etapa de captura avança sozinha, porque quem acabou de receber a instrução de pressionar o botão frontal de baixo não tem como também pressionar “Avançar”.

Por que ele nunca pergunta sobre o analógico

Oito perguntas, e todas são sobre botões. Nada direcional é perguntado.

Em parte porque as direções são a parte confiável: em um controle com mapeamento padrão, o analógico esquerdo chega como os dois primeiros eixos, o que torna a entrada direcional muito mais previsível do que botões que um fabricante numerou como quis. Mas principalmente por algo que só entendi depois de ver dar errado. Um botão ou está pressionado ou não está. Um eixo não tem um estado de repouso que signifique alguma coisa — um analógico gasto deriva, o hat de um direcional descansa em 3,29, um gatilho fica em −1 — e qualquer um deles pode responder a uma pergunta que ninguém fez, ou impedir que uma etapa termine por um motivo que nada na tela consegue explicar. Não perguntar eliminou uma categoria inteira de comportamentos inexplicáveis.

Segurar uma direção faz o movimento se repetir, numa velocidade que você pode ajustar, assim como a zona morta, caso o seu analógico tenha drift.

Digitar sem letras

Aí você chega a um campo de texto, e o controle não tem nada a oferecer. Entrar na conta, dar nome a um baralho, pesquisar no acervo de cartas: tudo isso exige caracteres que nenhum controle tem.

Então Confirmar em um campo de texto abre um teclado QWERTY completo na tela. São botões comuns em uma camada comum, o que significa que a mesma navegação percorre o teclado e Voltar o fecha como qualquer outra coisa. Quem tem um teclado de verdade nunca o vê.

Um detalhe que eu não esperava que importasse: o layout usa o escalonamento físico real, os mesmos deslocamentos de um quarto de tecla de um teclado ANSI. A navegação lê a geometria renderizada para decidir para onde vai o “cima”, então é o escalonamento que põe o W sobre o vão entre o A e o S. Números mais redondos falham de fato — um escalonamento de exatamente meia tecla deixa cada tecla equidistante das duas abaixo dela, e o empate fica com a ordem em que o markup por acaso estiver.

O que o controle encontrou no resto do jogo

O mais útil desse trabalho foi o que ele revelou. Um mouse permite disfarçar problemas de interface apontando direto para o que se quer. Um controle não permite, então a interface precisa tornar essas relações explícitas — e vários lugares se revelaram não fazer isso.

Os baralhos salvos não eram paradas de foco, o que significava que nem dava para abrir um baralho sem mouse. Cemitérios e terreno, a mesma coisa. O construtor de baralho reconstruía as duas colunas sempre que você adicionava uma carta, destruindo o botão que você tinha acabado de pressionar e fazendo você perder o lugar; agora ele lembra a carta e a ação e as encontra de novo. As caixas de confirmação e de alerta do próprio navegador ficam totalmente fora do modelo de foco do app, então foram substituídas por caixas na própria página, que abrem na resposta segura.

Nada disso é bug de controle. São bugs de interface que um ponteiro vinha compensando em silêncio, e corrigi-los deixou o jogo melhor para quem nunca vai encostar em um controle.

Steam, sofás e o Deck

O mesmo código roda no navegador, na versão para Windows usada na Steam e na versão para macOS, e as três usam o mesmo sistema de controle e a mesma lógica de configuração — embora as configurações em si fiquem guardadas no dispositivo, e não na sua conta.

O que isso garante é simples: um PC deixa de ser só uma escrivaninha. A mesma versão funciona em um notebook, em uma máquina ligada à televisão e no sofá, com um controle na mão. Um card game se adapta a isso melhor do que a maioria dos gêneros, porque a postura natural para Ancient Duel é recostar-se e pensar, não se inclinar para a frente e clicar.

Para portáteis como o Steam Deck, a posição honesta é que a base está pronta e os testes não. O Steam Input pode expor a entrada do controle por meio de um mapeamento padrão compatível com XInput, então o modelo que já existe é, em princípio, uma base útil, e um jogo que nunca pressupõe um mouse é um pré-requisito importante para essa classe de dispositivo. Não verifiquei Ancient Duel no próprio hardware, então não vou afirmar que ele funciona lá. Há também um modo TV que adiciona uma margem de área segura, porque algumas configurações de televisão ainda aplicam overscan e cortam parte da imagem nas bordas, o que basta para jogar o botão de rendição para fora da tela.

O mesmo raciocínio vale para qualquer plataforma futura. Uma versão para console exigiria muito mais do que trabalho de entrada: SDKs, certificação, serviços da plataforma, empacotamento, aprovação na loja. Mas uma barreira pode ser removida cedo, e é a que toca todas as telas — o jogo não deve pressupor que existe um mouse. Isso não deixa nada pronto para um console. Mantém aberta uma porta que sai caro reabrir depois.

O mouse não foi a lugar nenhum

Nada disso substitui coisa alguma. Mouse e teclado funcionam exatamente como antes e, no desktop, continuam sendo mais rápidos. A ideia nunca foi escolher um dispositivo de entrada no lugar de quem joga.

Um duelo jogado com controle não é um duelo diferente. A mesma carta é selecionada, o mesmo alvo é escolhido, a mesma decisão é tomada e assumida. Só muda o caminho pelo qual a escolha chega ao jogo — e quanto menos Ancient Duel presumir sobre o que está nas suas mãos, em mais lugares esse mesmo duelo poderá ser jogado.

Daniel Rusu
Criador e desenvolvedor de Ancient Duel

Compartilhar Facebook X

Todas as novidades