O Milagre Matemático do Multiplayer de Age of Empires: Como a Ensemble Fez 8 Jogadores Rodarem em Modems de 28.8k
Em 1997, sincronizar 8 jogadores com mil soldados em modems discados de 28.8k era considerado impossível. A Ensemble Studios provou o contrário transmitindo apenas cliques de mouse.
Em meados de 1997, a indústria de computadores vivia uma revolução silenciosa. Enquanto os consoles de quinta geração brigavam pela consolidação do 3D nas salas de estar, os computadores pessoais começavam a explorar as águas misteriosas da internet discada comercial. Foi nesse ambiente hostil de conexões lentas e instáveis que um pequeno estúdio de Dallas, a Ensemble Studios, decidiu criar algo audacioso: Age of Empires.
No entanto, a ambição da equipe de design liderada por Bruce Shelley (co-criador do lendário Civilization com Sid Meier) esbarrava em um muro de física e matemática: fazer oito jogadores humanos disputarem uma partida em tempo real, com exércitos somados de quase mil unidades, usando conexões discadas de 28.8 kbps e latências que ultrapassavam facilmente os 500 milissegundos.
O Abismo dos Dados em 28.8k
No modelo tradicional de rede de jogos de ação (como nos primórdios dos jogos de tiro), o servidor calcula a física do mundo e envia continuamente as coordenadas de cada personagem e projétil para todos os clientes. No caso de Age of Empires, esse modelo era uma sentença de morte instantânea.
“Se transmitíssemos a coordenada X e Y, a vida e a direção de cada legionário, barco e camponês a cada fração de segundo, a banda de um modem discado de 28k seria estourada antes mesmo do primeiro exército ser treinado”, relembrou o programador-chefe Matt Pritchard em seu clássico post-mortem técnico.
A Sacada Genial: O Modelo Determinístico Lockstep
Foi então que Pritchard e o arquiteto de rede Mark Terrano implementaram uma das soluções de engenharia mais elegantes da história dos computadores: o modelo determinístico Lockstep.
Em vez de transmitir soldados ou flechas, a rede de Age of Empires transmitia estritamente os comandos dos jogadores (os cliques de mouse e teclas de atalho). O pulo do gato residia na matemática: cada computador no mundo executava uma simulação idêntica e paralela do jogo.
Se o jogador 1 mandava seu aldeão cortar uma árvore aos 3 minutos e 12 segundos, todos os outros sete computadores recebiam apenas essa instrução. Como as fórmulas matemáticas de movimento, dano e colisão eram 100% determinísticas, todos os PCs chegavam exatamente ao mesmo resultado no mesmo quadro de animação.
O Preço da Perfeição: O Temido “Out of Sync”
Essa arquitetura brilhante tinha um calcanhar de Aquiles impiedoso. Em um sistema determinístico, se um único processador arredondasse uma fração de cálculo de maneira ligeiramente diferente de outro (por exemplo, devido a diferenças entre processadores Intel e AMD da época), a linha do tempo se rompia: o famoso erro “Out of Sync” (Fora de Sincronia).
Pritchard passou meses caçando variáveis de números aleatórios não inicializadas e garantindo que todas as contas de física e pontaria operassem com precisão inteira rigorosa. O resultado desse esforço monumental tornou Age of Empires um dos maiores sucessos de multiplayer da história da Microsoft e da zone.com nos anos 90, pavimentando o caminho para o lendário Age of Empires II: The Age of Kings.