Atualmente, estou desenvolvendo um shooter de zumbi de cima para baixo, em tempo real. Estou codificando isso em Java, usando o JBox2D como meu mecanismo de física. Eu tenho codificado a rede esta semana e agora estou pronto para a sincronização física.
Estou planejando usar o modelo preditivo de cliente / servidor autoritário, no qual o cliente pode se mudar, desde que o servidor aprove mais tarde. Isso envolve o cliente enviando pacotes contendo dados de movimento para o servidor, e o servidor calculando a latência e simulando novamente o mundo a partir de um estado mais antigo.
Meu problema é que meu atual mecanismo de física, o JBox2D (basicamente uma porta do Box2D), não suporta reverter o mundo e, aparentemente, não é tão fácil serializar os dados do mundo. Eu tenho duas soluções, eu poderia modificar / estender meu mecanismo de física atual ou escrever o meu.
Razões para escrever meu próprio mecanismo de física -
- Eu posso remover recursos desnecessários. Em um jogo de cima para baixo, eu realmente só preciso de mecânica de colisão e forças de manuseio. Nenhuma gravidade está envolvida.
- Eu posso entender melhor o código e [provavelmente] seria mais fácil implementar funções de reversão
Razões para estender / modificar o JBox2D
- Escrever meu próprio mecanismo de física seria uma quantidade significativa de trabalho, o que poderia ser complicado
- JBox2D tem uma comunidade amplamente solidária, que pode me ajudar com meu desenvolvedor
- JBox2D, possui otimizações específicas, para coisas como detecção de colisão, que o tornam útil
- Alguns trabalhos já foram feitos sobre isso, mas pouco código foi compartilhado
Então quais são suas opiniões. Este é o meu primeiro jogo, e eu não sou um desenvolvedor profissional de jogos. Se alguém pudesse fornecer alguns links para o trabalho já realizado na área (de preferência usando JBox2D / Box2D / Java).
strictfp
qualquer lugar, o que afetará seriamente o desempenho. Caso contrário, o servidor e o cliente podem não obter exatamente os mesmos resultados. Eu recomendaria o uso de ponto fixo.