Agilidade
nada vem de fora, então nada trava
Não há CDN: o three.js e as fontes estão no pacote, e o service worker guarda tudo na primeira visita. Um jogo que precisa de rede para desenhar a mesa é um jogo que não funciona no ônibus — e é justamente onde ele costuma ser aberto.
IA assistida
nenhuma: a CPU joga por regra, e dá para conferir
O adversário não é um modelo: é código de mira e escolha de tacada, no mesmo arquivo de regras, testável fora do navegador. Isso importa mais do que parece num jogo — CPU que erra de um jeito explicável é CPU com quem dá para aprender; um modelo que erra sem motivo só frustra.
Responsividade
o celular deitado é um layout, não um acidente
Há três desenhos de tela: mesa de trabalho, celular em pé e celular deitado. Junto vêm som sintetizado, vibração e wake lock — porque a tela apagar no meio da mira é o defeito mais irritante que um jogo de celular pode ter.
Responsabilidade
a regra da WPA é a regra, inclusive quando incomoda
Mesa aberta, falta, bola na mão, caçapa chamada na 8: o jogo segue o regulamento em vez da versão de bar que cada um lembra. É menos permissivo e é o que faz a partida valer — regra que o jogo dobra a seu favor deixa de ser jogo.
Organização
física, regras e progresso, cada um no seu arquivo
O motor de física e de regras não conhece a tela, e o de carreira e campeonato não conhece nenhum dos dois. Dá para rodar uma partida inteira no Node, sem navegador, para saber se uma mudança na física quebrou uma regra — que é como este jogo é testado.