Qual é o atual estado da arte para a rede de jogos de estratégia em tempo real?
Lembro-me de que, alguns anos atrás, alguns títulos AAA transmitiam apenas as entradas do jogador (Starcraft 1, Age of Empires). Como isso exige que você mantenha todo o resto totalmente determinístico, isso ainda é uma opção viável? A sincronização de geradores de números aleatórios parece viável, mas e as diferenças sutis nas implementações de FPU etc.?
Ou os jogos de estratégia estão usando algo mais próximo das redes de jogos de ação, onde entidades individuais são transmitidas (com alguma forma de previsão e (delta) compressão)?
Se sim, como são tratados itens voláteis, como projéteis?
E quanto ao cliente / servidor versus ponto a ponto? Suponho que tudo isso esteja fortemente inter-relacionado.
Obrigado pelo seu tempo!
fonte
Respostas:
http://www.gamasutra.com/view/feature/3094/1500_archers_on_a_288_network_.php Ainda é assim que as redes são feitas nos jogos RTS. P2P também é a maneira normal de lidar com conexões. No entanto, o uso de um modelo de bloqueio de timestep resulta em um caso irritante de dessincronização e manipulação de trapaça. Há uma boa maneira de se recuperar quando uma dessincronização acontece e todos os jogos RTS simplesmente dizem "Quit the match". O rastreamento de erros de dessincronização também é um pesadelo.
fonte
Não é para RTS, mas qualquer jogo em ritmo acelerado precisará de interpolação e previsão
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
fonte
Esta é uma ótima leitura e responderá a muitas de suas perguntas:
http://udn.epicgames.com/Three/NetworkingOverview.html
No meu jogo de estratégia / defesa, estou usando um modelo de cliente / servidor e sou capaz de manter tudo determinístico até agora. O cliente envia apenas solicitações do servidor para fazer coisas (mas na verdade nunca faz nada) e envia atualizações, criações e exclusões para os clientes quando as coisas mudam. Embora meu jogo seja determinístico no momento, nunca confio em meus clientes para fazer algo certo, o servidor é o chefe e tem controle total sobre o jogo. O cliente é apenas um terminal burro.
Para tornar tudo realmente simples, estou usando uma combinação de Reflexão e Evento para manter minhas entidades completamente no escuro sobre o lado das redes. Eu também uso o conceito de um ator e uma "força" (em oposição a um ator e peão em um FPS como o Unreal). Isso permite um encapsulamento muito bom e um local para guardar o dinheiro e outras coisas da Força.
fonte