L'host del gioco dovrebbe essere l'autorità o un altro client stupido?


15

Quando si progetta un gioco multiplayer in rete in cui un giocatore ospita e altri si connettono, ci sono due strategie di cui sono a conoscenza:

  • Fai in modo che il gioco del giocatore ospitante sia l'autorità , con tutti gli altri giocatori come clienti stupidi che cercano di raggiungere l'attuale stato del gioco. Nel codice, ci dovranno essere molti casi speciali, a seconda che il giocatore attuale sia l'host o meno.
  • Trasforma l'host in un client stupido come tutti gli altri eseguendo un server dedicato nascosto su un altro thread. Il server dedicato sarà l'autorità e l'host si connetterà ad esso come tutti gli altri (tramite localhost).

Quali sono i vantaggi / gli svantaggi di ciascuno di questi? Quale viene utilizzato più spesso (o varia in base al tipo / dimensione del gioco)?


Il primo caso che stai descrivendo può essere una forma di rete P2P (con un client autorevole) e di solito è molto più complessa e più difficile da implementare e mantenere.
Akaltar

Risposte:


13

L'approccio muto-cliente è il migliore dal punto di vista del design puro: limita fortemente la quantità di codice diverso necessario tra host e client e consente al server di funzionare in modo asincrono. Il rovescio della medaglia è che la macchina dell'host richiede risorse extra, ma immagino lo abbia sempre fatto.


8

Tra queste due opzioni l'approccio muto-cliente è sicuramente il migliore per le ragioni menzionate da DeadMG.

C'è un'altra opzione che rende ogni client un'autorità, ha il vantaggio del muto client che tutti i peer condividono lo stesso codice. L'altro vantaggio è che potrebbe essere molto più giusto se si impostano le regole giuste perché nessuno ha il vantaggio di 0-lag-to-server.

Questo può ovviamente essere piuttosto complicato da implementare a seconda del tipo di gioco. Il tuo protocollo dovrà occuparsi della risoluzione dei conflitti tra pari, probabilmente utilizzando un qualche tipo di schema di proprietà. Lasciando solo i conflitti in cui 2 peer rivendicano la proprietà dello stesso oggetto di gioco.

I protocolli multiplayer di Google Peer-2-Peer potrebbero fornirti ulteriori dettagli su questo approccio.



Interessante. Quel post afferma che questo è il modo in cui "la maggior parte dei titoli di strategia" implementa il networking. È davvero vero? È così come ad es. Command and Conquer e Starcraft funzionano?
BlueRaja - Danny Pflughoeft,

@BlueRaja, ecco come funziona Starcraft, sì. In Starcraft non esiste alcuna autorità. Warcraft III e Starcraft II hanno un modello più centralizzato di scambio di messaggi, ritardo e gestione delle disconnessioni, ma fondamentalmente lo stesso in quanto ogni client ospita il proprio stato di gioco.
Rotsor,

L'altro vantaggio di questo modello di rete è che consente di supportare un grande stato mondiale condiviso coerente con un traffico di sincronizzazione minimo.
Rotsor,

Il più grande svantaggio di questo modello è la sua intrinseca vulnerabilità al "maphacking", che sta rivelando alcuni dati sullo stato del gioco che il giocatore normalmente non può vedere.
Rotsor,
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.