Cosa comporta un semplice gioco UDP?


17

Una volta ho provato a scrivere un semplice gioco con UDP in una settimana come test usa e getta. È andato orribilmente.

L'ho buttato via presto. Il problema principale che ho avuto è stato ripristinare lo stato di gioco di tutti i giocatori / nemici / oggetti a un vecchio stato e far avanzare rapidamente il gioco fino al momento in cui il giocatore sta giocando (cioè mezzo secondo prima di un salto. Un po 'presto o tardi può far perdere il salto al giocatore)

Forse questo metodo non è il modo più semplice? sospetto che lo sia, ma l'ho progettato male dall'inizio e realizzato alla fine del 2 ° giorno. (quindi non ho imparato troppo o ho perso così tanto tempo)

Per me e gli altri, cosa comporta un semplice gioco UDP e come posso scriverne uno? O come posso risolvere il problema di previsione ripristinando lo stato corretto.

Lo segnerò come CW aC, so che ci saranno molte risposte utili.

Risposte:


9

Glenn Fiedler ha scritto un eccellente set di articoli su questo, che copre praticamente tutti i concetti di base.


L'articolo sul determinismo in virgola mobile mi ha fatto esplodere la testa. Lo stato di sincronizzazione non è corretto perché non è quello che volevo leggere. Sebbene il determinismo in virgola mobile risponda a molte domande.

Nessuno di quegli articoli approfondisce la sincronizzazione dello stato, che è quello che sta chiedendo
BlueRaja - Danny Pflughoeft,

3

Avere il tuo personale può essere educativo, ma spesso fai di più se riesci a sfruttare un'implementazione esistente (o almeno a partire da lì).

Ho usato sia ENet che Raknet . Ho usato Enet solo in un gioco semplice ma ha fatto quello che mi serviva. Enet utilizza un'API di livello inferiore rispetto a Raknet. Raknet è stato utilizzato in un progetto più ampio. Raknet è estremamente potente, ma vuole farti strutturare il tuo gioco attorno al framework di Raknet.

Enet:

  • Gestione della connessione
  • sequencing
  • canali
  • Affidabilità
  • Frammentazione e rimontaggio
  • Aggregazione
  • Adattabilità
  • portabilità
  • La libertà

Raknet:

  • Replica degli oggetti
  • AutoPatcher
  • Connessioni sicure
  • Robusto livello di comunicazione (sostanzialmente tutte le funzionalità di Enets raggruppate in un unico elemento)
  • Chiamate di procedura remote
  • Comunicazione vocale
  • Punchthrough NAT

+1 per ENet, lo uso da un po 'di tempo per i clienti e a loro piace.
Len Holgate,

Sta chiedendo la sincronizzazione dello stato - questa risposta non ha nulla a che fare con questo
BlueRaja - Danny Pflughoeft,

-1, stessa ragione di BlueRaja
Jonathan Dickinson,


0

Se vai a casa (come ho fatto io) imparerai tonnellate - anche su cose che non volevi sapere. Come NAT traversal. Secondo caspin, Enet non se ne accorge, ma potresti sempre trovare del codice STUN open source che funziona nella maggior parte delle situazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.