¿Qué implica un simple juego UDP?


17

Una vez intenté escribir un juego simple con UDP en una semana como prueba de usar y tirar. Fue horrible.

Lo tiré temprano. El principal problema que tuve fue restaurar el estado del juego de todos los jugadores / enemigos / objetos a un estado anterior y avanzar rápidamente el juego hasta el punto en que el jugador está jugando (es decir, medio segundo antes de un salto. hacer que el jugador pierda el salto)

¿Quizás este método no es la forma más fácil? Sospecho que es así, pero lo diseñé mal desde el principio y me di cuenta al final del segundo día. (así que no aprendí demasiado o perdí tanto tiempo)

Para mí y para otros, ¿qué implica un juego UDP simple y cómo escribo uno? ¿O cómo resuelvo el problema de predicción restaurando el estado correctamente?

Marcaré esto como CW bc. Sé que habrá muchas respuestas útiles.

Respuestas:


9

Glenn Fiedler ha escrito un excelente conjunto de artículos sobre esto, que cubre casi todos los conceptos básicos.


El artículo sobre el determinismo de coma flotante me dejó boquiabierto. Su mal estado de sincronización no se hace porque ese es el que quería leer. Aunque el determinismo de coma flotante responde muchas preguntas.

Ninguno de esos artículos profundiza sobre la sincronización de estado, que es lo que está pidiendo.
BlueRaja - Danny Pflughoeft

3

Desarrollar el suyo puede ser educativo, pero a menudo puede hacer más si puede aprovechar una implementación existente (o al menos comenzar desde allí).

He usado tanto ENet como Raknet . Solo usé Enet en un juego simple pero hizo lo que necesitaba. Enet usa una API de nivel inferior que Raknet. Raknet fue utilizado en un proyecto más grande. Raknet es extremadamente poderoso, pero quiere hacerte estructurar tu juego alrededor del marco de Raknet.

Enet:

  • Gestión de la conexión
  • Secuencia
  • Canales
  • Fiabilidad
  • Fragmentación y reensamblaje
  • Agregación
  • Adaptabilidad
  • Portabilidad
  • Libertad

Raknet:

  • Replicación de objetos
  • Autopatcher
  • Conexiones seguras
  • Capa de comunicación robusta (básicamente todas las características de Enets acumuladas en un solo elemento)
  • Llamadas a procedimiento remoto
  • Comunicación de voz
  • Perforación NAT

+1 para ENet, lo he estado usando durante un tiempo para clientes y les gusta.
Len Holgate

Él está preguntando sobre la sincronización de estado: esta respuesta no tiene nada que ver con eso
BlueRaja: Danny Pflughoeft

-1, la misma razón que BlueRaja
Jonathan Dickinson


0

Si te vuelves casero (como lo hice yo) aprenderás toneladas, también sobre cosas que no querías saber. Como el NAT transversal. Según caspin, Enet se está perdiendo eso, pero siempre puedes encontrar algún código STUN de código abierto que funcione en la mayoría de las situaciones.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.