Precisa de ajuda para escolher a abordagem / plataforma de rede certa para um RTS

7

Estou pensando há algum tempo em fazer um jogo online 2D semelhante ao RTS. (2-6 jogadores em uma partida, até 50-60 unidades, sem IA). A principal coisa aqui é que eu quero que o jogo seja jogável em um navegador, por isso terá que ser um applet flash ou java, ambos usando soquetes TCP. No começo, eu estava totalmente focado no flash por causa de uma maior penetração e acessibilidade no mercado. No entanto, depois de revisar diferentes abordagens de rede, não consigo fazer uma escolha.

Eu realmente gostei da abordagem de simulação de bloqueio em que servidor e cada cliente executam exatamente a mesma simulação, até que percebi que seria difícil (se não impossível) implementar exatamente a mesma lógica em dois idiomas diferentes, um deles sendo actionscript. É aqui que entra o java. Com o cliente e o servidor java, é possível compartilhar o código relacionado à simulação - o que também pode reduzir o tempo de desenvolvimento pela metade.

Mas há outra abordagem, na qual os clientes tentam simular (ou melhor, extrapolar) o estado do jogo corretamente pelo maior tempo possível, mas não precisam fazer o que é certo - em algum momento eles receberão o instantâneo de estado completo ajuste de acordo. O Flash parece uma opção viável novamente, mas ainda assim, a simulação de etapa de bloqueio parece muito mais direta, pois não há parte de "ajuste".

Então, minhas suposições estão corretas? O que você sugeriria?

xmmm
fonte

Respostas:

5

Todo RTS que eu conheço usa simulação de etapa de bloqueio para seu modelo de rede, mais ou menos pelos mesmos motivos:

Com o lock-step, você só precisa trocar entradas, o que reduz drasticamente a quantidade de largura de banda necessária. Se você usar a abordagem de interpolação / extrapolação, com 60 unidades x 6 jogadores no estado x 6 jogadores para enviar para quem estiver hospedando, precisará de muita largura de banda upstream.

Além disso, com o lock-step, você garante que todos vejam exatamente as mesmas coisas, o que é muito importante para um RTS se sentir justo e ser estratégico. No caso de extrapolação, você pode ver na tela que está vencendo uma batalha apenas para descobrir ao receber um novo instantâneo que realmente perdeu. E o pior caso é que você poderia ter vencido essa batalha se soubesse que a estava perdendo.

Um benefício final, a etapa de bloqueio torna a trapaça mais difícil, pois qualquer coisa obscura que você faça localmente causará uma dessincronização. Você teria que enganar a simulação de todos, não apenas a sua.

Andrew Wang
fonte
Super velha pergunta, mas eu teria que discordar de "lock-step torna a trapaça mais difícil". Embora um pouco verdadeiro, como no seu exemplo. Abre outras formas de trapaça. Imagine que você tem FOW, mas como precisa de TODAS as informações do player (para se manter sincronizado com outros jogadores), pode facilmente contornar o FOW, porque tecnicamente você tem todas as informações necessárias. Isso vale para qualquer ofuscação de informações e não apenas para o FOW.
Storm Muller