Como fazer dois jogadores verem o mesmo mundo ao mesmo tempo?
Um jogo de um jogador é um sistema fechado: o jogador aperta, o motor responde, o estado é verdadeiro porque só existe uma cópia. Adicione um segundo jogador em outro dispositivo e essa garantia evapora. Agora há duas cópias, um fio de 80 ms de latência em cada direção entre elas, e um jogador que notará o instante em que está "errado". O multijogador em tempo real não é uma função que você acrescenta; é um redesenho do que significa "verdade". Aqui está a parte que os times subestimam.
Q: Por que a sincronização em um mini-jogo é uma ordem de magnitude mais difícil que em um jogador só?
Porque a "verdade" vira uma negociação. Em um jogador só o motor é o juiz. Em multijogador, o juiz é a rede, e a rede é lenta, perde pacotes e às vezes mente. Agora cada ação tem uma ida e volta: sua entrada sai do seu dispositivo, chega ao outro lado, é reconciliada e volta como estado — e durante essa viagem o outro jogador já se moveu. A restrição do mini-jogo piora tudo: você faz isso em um celular via dados móveis, não em um PC com fio, então seu orçamento de latência é mais apertado e sua taxa de queda, mais alta. A maioria dos times orça "vamos adicionar multijogador depois" e descobre que esse "depois" é uma reescrita, não um acréscimo.
Q: Autoridade, lockstep, predição — como você escolhe, de fato?
Três arquiteturas, três concessões honestas. Autoridade do servidor significa que uma máquina detém a verdade e os clientes são terminais bobos; é o único modelo que impede a trapaça, mas adiciona uma ida e volta a tudo e parece lento se você não combiná-lo com predição. Lockstep faz cada cliente rodar a mesma simulação determinística e trocar apenas entradas; é barato em largura de banda, mas um peer lento paralisa a partida toda, e qualquer não determinismo dessincroniza todos. A predição do cliente com reconciliação do servidor deixa o jogador local sentir instantaneidade enquanto o servidor o corrige em silêncio — o padrão para shooters e corridas, e o código mais difícil de acertar. Para um mini-jogo casual, a pergunta real é se você precisa de tempo real: por turnos ou assíncrono elimina 90% dessa dor.
Q: Interpolação, rollback, compensação — como a latência é realmente "escondida"?
Você não elimina a latência; você a mente de forma convincente. A interpolação renderiza os outros jogadores alguns quadros no passado para que o movimento deles seja suave em vez de teletransportar entre atualizações de rede — o custo é que todos parecem levemente atrasados, o que os jogadores aceitam. O rollback (usado em jogos de luta) assume, em vez disso, que a entrada do outro jogador chegou, simula para a frente e, se não, retrocede e reproduz — parece instantâneo, mas exige um estado totalmente determinístico e snapshot-able. A compensação de rede como lag shielding falsifica o último movimento de um jogador caído para que ele não congele. A arte está em escolher qual mentira o seu gênero consegue sobreviver: suave e um pouco atrasada, ou instantânea e com rollback.
Q: Como decidir se o seu jogo deveria ser em tempo real?
Faça primeiro o teste de honestidade. Se o seu jogo é um quebra-cabeça, uma batalha de cartas ou qualquer coisa onde um atraso de 200 ms não muda o resultado, você quase certamente quer assíncrono ou por turnos e deve gastar seu orçamento em matchmaking, não em netcode. O tempo real só justifica seu custo quando a simultaneidade é a diversão — corridas, tiros, esquivar em cooperativo. E um runtime compartilhado ajuda aqui mais do que os times esperam: uma camada de rede coerente sobre todos os mini-jogos significa que você escreve o código de sincronização difícil uma vez, não por título. A tabela é a porta que a maioria pula.
| Se o seu gênero é… | Modelo de sincronização | Por que | O que ele cobra de você |
|---|---|---|---|
| Quebra-cabeça / cartas / turnos | Assíncrono ou por turnos | O atraso não muda o resultado | Quase nada de netcode |
| Corridas / tiros / co-op | Predição cliente + autoridade servidor | A simultaneidade é a diversão | Código de predição + reconciliação |
| Estratégia determinística | Lockstep | Barato em largura de banda, justo | Um peer lento paralisa tudo |
| Casual, incerto | Comece assíncrono, meça | Tempo real pode ser uma armadilha | Refazer se errar |
O multijogador em tempo real é um imposto a cada quadro. Cobre-o só onde a diversão é a simultaneidade.