Atualmente, estou trabalhando em um jogo voltado para a física para um jogador, onde gostaria que a física fosse simulada no servidor. Isso porque o jogo terá tabelas de líderes, progressão persistente de jogadores, etc. e eu quero evitar qualquer tipo de trapaça - basicamente uma arquitetura pura de cliente-servidor, o cliente é "burro" e exibe apenas o que o servidor deseja que você exiba.
O problema, porém, é que o jogo provavelmente será jogado por centenas (talvez milhares) de pessoas ao mesmo tempo. Isso me preocupa, pois provavelmente matará o poder de processamento do servidor se eu tiver que fazer e manter centenas de estados ao mesmo tempo.
Eu não teria problemas para mover todas as simulações de física para o lado do cliente, mas precisaria realmente de uma maneira de validar se o resultado de uma simulação de cliente é válido. No entanto, não consigo descobrir como.
Pensei em executar a simulação do lado do servidor de vez em quando para validar se o cliente ainda está jogando limpo, mas realmente quero que o servidor tenha o menor esforço possível.
A física se tornará tão complexa quanto a demonstração da GDC 2011 de Glenn Fiedler , talvez até mais simples. No entanto, muito mais corpos rígidos sempre em colisão estarão em uma única cena e todos serão visíveis ao mesmo tempo.
Tenho dificuldade em obter uma resposta para esse caso em particular, pois a maioria dos recursos da Web - novamente, o site de Glenn Fiedlers é ótimo - fala sobre física em rede em pequena escala (por exemplo, um FPS com 30 jogadores, como o Halo).
Qualquer conselho, sites, documentos ou similares sobre o assunto será muito apreciado.
Uma recapitulação das perguntas às quais gostaria de responder:
- Quão viável é um modelo cliente-servidor? A minha preocupação com o poder de processamento do servidor é legítima e fundamentada?
- É possível validar com segurança uma simulação física executada pelo cliente no servidor? Se sim, como?