O que está envolvido em um jogo UDP simples?


17

Uma vez tentei escrever um jogo simples com o UDP em uma semana como um teste descartável. Foi horrivelmente.

Joguei fora cedo. O principal problema que tive foi restaurar o estado do jogo de todos os jogadores / inimigos / objetos para um estado antigo e avançar o jogo até o ponto em que o jogador está jogando (ou seja, meio segundo antes de um salto. Um pouco mais cedo ou mais tarde pode faça o jogador errar o salto)

Talvez esse método não seja a maneira mais fácil? Eu suspeito que seja, mas eu o projetei errado desde o início e percebi no final do segundo dia. (então eu não aprendi muito ou perdi muito tempo)

Para mim e para os outros, o que está envolvido em um jogo UDP simples e como eu escrevo um? Ou como eu resolvo o problema de previsão restaurando para indicar corretamente.

Vou marcar isso como CW bc, sei que haverá muitas respostas úteis.

Respostas:


9

Glenn Fiedler escreveu um excelente conjunto de artigos sobre isso, que abrange praticamente todos os conceitos básicos.


O artigo Determinism Floating Point explodiu minha cabeça. Seu estado de sincronização muito ruim não é feito porque é o que eu queria ler. Embora o determinismo do ponto flutuante responda muitas perguntas.

Nenhum desses artigos ir em profundidade sobre o estado-sincronização, que é o que ele está pedindo
BlueRaja - Danny Pflughoeft

3

Fazer o seu próprio desenvolvimento pode ser educativo, mas muitas vezes você faz mais se pode aproveitar uma implementação existente (ou pelo menos começar a partir daí).

Eu usei o ENet e o Raknet . Eu só usei o Enet em um jogo simples, mas ele fez o que eu precisava. A Enet usa uma API de nível inferior ao Raknet. Raknet foi usado em um projeto maior. O Raknet é extremamente poderoso, mas quer fazer você estruturar seu jogo em torno da estrutura do Raknet.

Enet:

  • Gerenciamento de conexões
  • Sequenciamento
  • Canais
  • Confiabilidade
  • Fragmentação e remontagem
  • Agregação
  • Adaptabilidade
  • Portabilidade
  • Liberdade

Raknet:

  • Replicação de objeto
  • Autopatcher
  • Conexões seguras
  • Camada de comunicação robusta (basicamente todos os recursos do Enets agrupados em um item)
  • Chamadas de procedimento remoto
  • Comunicação por voz
  • Avanço NAT

+1 para ENet, já o uso há algum tempo para clientes e eles gostam.
precisa

Ele está perguntando sobre a sincronização de estado - essa resposta não tem nada a ver com isso.
BlueRaja - Danny Pflughoeft

-1, mesmo motivo que BlueRaja
Jonathan Dickinson


0

Se você for homebrew (como eu), vai aprender muito - também sobre coisas que não queria saber. Como NAT atravessado. De acordo com Caspin, a Enet está perdendo isso, mas você sempre pode encontrar algum código STUN de código aberto que funcione na maioria das situações.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.