Progettazione del motore di gioco: server multiplayer e di ascolto [chiuso]


10

Il mio motore di gioco in questo momento consiste in una parte singleplayer funzionante. Ora sto iniziando a pensare a come fare la parte multiplayer.

Ho scoperto che molti giochi in realtà non hanno una modalità singleplayer reale, ma quando giochi da solo stai effettivamente ospitando anche un server locale e quasi tutto funziona come se fossi in multiplayer (tranne che i pacchetti di dati possono essere passati su un percorso alternativo per prestazioni migliori)

Il mio motore avrebbe bisogno di un grande refactoring per adattarsi a questo modello. Ci sarebbero tre possibili modalità: client dedicato, server dedicato e client-server (modalità di ascolto)

  • Con quale frequenza viene utilizzato il modello di server di ascolto nel settore dei giochi?
  • Quali sono i (dis) vantaggi di esso?
  • Quali altre opzioni ho?

4
La prima domanda è piuttosto irrilevante. Perché dovrebbe importare come fa l'industria? Non fanno tutto nel modo migliore.
Il comunista Duck il

Risposte:


11

Vedrò se posso rispondere al meglio che posso:

Con quale frequenza viene utilizzato il modello di server di ascolto nel settore dei giochi?

Quando si tratta della maggior parte dei giochi online, scoprirai che la maggior parte dei giochi utilizza un'architettura client-server, sebbene non sempre nel modo in cui pensi. Prendi qualsiasi gioco Source, ad esempio. La maggior parte utilizzerà un client-server standard con un'architettura server master (per elencare i giochi disponibili), in quanto una persona ospiterà un server dedicato e chiunque disponga di un client può unirsi a esso.

Tuttavia, hai alcuni giochi e servizi, ad esempio Left 4 Dead, League of Legends e alcuni giochi XBox Live, che adottano un approccio leggermente diverso. Tutti utilizzano un'architettura client-server con un server di controllo. L'idea principale qui è che qualcuno crea un server dedicato che non "esegue" alcun gioco. Il server di controllo creerà una sorta di "lobby" e, quando il gioco viene avviato, il server di controllo li aggiungerà a una coda e, quando è il turno di quella lobby, selezionerà un server dedicato corrispondente (in termini di posizione / velocità, disponibilità, numerosi fattori) e assegnare i giocatori a quel server. Solo allora il server "eseguirà" il gioco. È la stessa idea, ma un po 'semplificata, poiché il client non ha bisogno di "scegliere" un server,

Naturalmente, il più grande modello client-server è il modello MMO, in cui uno o più server eseguono un mondo persistente che gestisce quasi tutti i dati e la logica. Alcuni dei giochi più famosi che usano questo modello sono World of Warcraft, Everquest, qualcosa del genere.

Allora, dove si inserisce un server di ascolto? Ad essere sincero, non molto bene, tuttavia, troverai comunque molti giochi che lo utilizzano. Ad esempio, la maggior parte dei giochi Source consente di creare server di ascolto, e molti giochi XBox Live lo fanno (è passato un po 'di tempo, ma credo che Counter Strike lo abbia fatto, così come Quake 4 e molti altri). In generale, tuttavia, sembrano essere disapprovati a causa dei vantaggi del modello client-server, che ci porta al punto successivo.

Quali sono i (dis) vantaggi di esso?

Innanzitutto: prestazioni. In un modello client-server, il client gestirà le modifiche locali (come input, grafica, suoni, ecc.) Su ogni ciclo del gioco. Alla fine del ciclo, impacchetterà i dati rilevanti (come, ad esempio, il giocatore si è mosso? Se sì, dove? Dove sta guardando adesso? Velocità? Hanno sparato? Se sì, informazioni sul proiettile. Ecc.) E inviarlo al server per l'elaborazione. Il server prenderà questi dati e determinerà se ogni cosa è valida, ad esempio se l'utente si sta muovendo in un modo che indica l'hacking (ne parleremo più avanti), la mossa è valida (qualcosa sulla strada?), Ha fatto il proiettile dal giocatore 1 giocatore colpito 2 ?, e altro ancora. Quindi il server lo impacchetta e lo invia ai client, che quindi aggiornano tutto ciò che è necessario, come ad esempio regolare la salute se il giocatore è stato colpito, calciare il giocatore se viene determinato che stanno hackerando, ecc.

Un server di ascolto, tuttavia, deve gestire tutto questo contemporaneamente. Dato che presumo che tu abbia familiarità con la programmazione, probabilmente ti rendi conto di quanta potenza un gioco può rubare da un computer, specialmente se progettato male. Aggiungendo l'elaborazione di rete, l'elaborazione di sicurezza e altro , oltre al gioco del client, è possibile vedere dove le prestazioni avrebbero un impatto notevole, almeno per quanto riguarda solo l'elaborazione standard. Inoltre, la maggior parte dei server funziona su reti veloci e sono server progettati per resistere al traffico di rete. Se la rete di un server di ascolto è lenta, l'intero gioco ne risentirà.

La seconda sicurezza , come affermato in precedenza, una delle cose principali che un server farà è determinare se un giocatore sta sfruttando il gioco. Potresti averli visti come Punkbuster, VAC, ecc. Esistono un insieme di regole molto complicate che eseguono questi programmi, ad esempio, determinando la differenza tra un hacker e un ottimo giocatore. Sarebbe molto male per il tuo gioco se non fossi in grado di catturare gli hacker, ma peggio ancora se eseguissi un'azione contro un falso accusato.

Un server di ascolto non sarà generalmente in grado di gestire il gioco del client, l'elaborazione del server e il rilevamento degli hack e, nella maggior parte dei casi, rilevatori come Punkbuster sono molto difficili, se non impossibili da eseguire su un server di ascolto, perché è è difficile che funzioni correttamente senza la potenza di elaborazione necessaria, poiché in genere la logica di gioco ha la priorità sulla sicurezza e se il rivelatore non è autorizzato a elaborare per un frame, potrebbe perdere i dati necessari per condannare qualcuno.

Infine, il gameplay . La cosa più importante dei server è che sono persistenti, il che significa che anche se tutti lasciano, il server continuerà a funzionare. Questo è utile se hai un server popolare che non ha molta attività durante la notte, le persone possono ancora unirsi quando sono pronte per giocare e non devono aspettare che venga riportato in linea.

In un server di ascolto, il principale svantaggio è che non appena il client che ospita il server di ascolto lascia il gioco, il gioco deve essere trasferito su un altro giocatore (creando un gioco nel gioco che può durare minuti in alcuni casi), oppure deve terminare completamente . Questo non è preferibile su un server di grandi dimensioni, in quanto l'host deve rimanere online (sprecando uno slot nel server e la potenza del suo computer, che potrebbe anche rallentare il gioco) o terminare il gioco per tutti.

Tuttavia, nonostante questi problemi, i server di ascolto presentano alcuni vantaggi.

Facile da configurare : la maggior parte dei server di ascolto non sono altro che premere "Nuovo gioco" e consentire alle persone di unirsi. Questo è facile per le persone che vogliono solo giocare con i loro amici e non desiderano provare a trovare un server dedicato vuoto o giocare con altre persone.

Buono per i test : se si possiede un server dedicato e si desidera modificarne la configurazione, è generalmente un'idea migliore da testareprima la configurazione. L'utente dovrebbe o creare un backup del server dedicato e andare alla cieca nelle modifiche, con l'unica opzione di tornare indietro se qualcosa va storto, creare un nuovo server dedicato per testarli, semplicemente creare un semplice server di ascolto per testali. E con il punto 1, questi sono generalmente più facili da avviare e configurare. Ciò è particolarmente vero, poiché la maggior parte dei server dedicati non è all'interno dell'accesso immediato degli amministratori (la maggior parte dei server dedicati sono noleggiati da una posizione remota). Richiede molto più tempo per inviare le modifiche alla configurazione, nonché i comandi per il riavvio, ecc., In una posizione remota rispetto a un computer su cui si trova attualmente l'amministratore.

Meno risorse : nella maggior parte dei server dedicati, un utente con lo stesso IP non può connettersi al server dedicato (il che significa che il client deve ospitare il server o giocare, non può fare entrambi). Se il client desidera giocare sul proprio server, di solito avrà bisogno di una seconda macchina per ospitare il server o acquistare o noleggiare un server dedicato in modo che possano effettivamente giocare su di esso. Un server di ascolto richiede solo una macchina, che può essere l'unica cosa che il client può usare.

In entrambi i casi, entrambi presentano vantaggi e svantaggi e devi valutarli con ciò che sei disposto a progettare e implementare. Dalla mia esperienza, credo che se tu dovessi implementare un server di ascolto, questo verrebbe utilizzato, se non altro per alcuni utenti che desiderano giocare con gli amici o testare le impostazioni.

Da ultimo:

Quali altre opzioni ho?

Questa è una lattina industriale di vermi. In realtà, qualsiasi tipo di architettura di rete può essere applicata ai videogiochi. Tuttavia, da quello che ho visto, come la maggior parte delle comunicazioni su Internet, la maggior parte si riduce a qualche forma di modello client-server.

Per favore fatemi sapere se non ho risposto alla vostra domanda o se avete bisogno di qualcosa di ampliato e vedrò cosa posso fare.


"Nella maggior parte dei server dedicati, un utente con lo stesso IP non può connettersi al server dedicato (il che significa che il client deve ospitare il server o giocare, non può fare entrambi)". WAT? Dove? Perché? Se alcuni server hanno questa limitazione arbitraria apparentemente insensata, ciò non significa che sarebbe costretto a fare lo stesso quando ne scrive uno ...
o0 '.

È un artefatto di giochi più vecchi, da quando i computer non sono stati in grado di gestire contemporaneamente algoritmi di server, calcoli grafici e logica di gioco. Molti modelli di server dedicati impedirebbero a un client che ha tentato di connettersi dalla stessa macchina di connettersi correttamente e questa pratica è ancora applicata in alcuni giochi oggi. Non ho mai detto che questo vale per tutti i modelli, né ho detto che doveva modellare il suo su questo particolare paradigma. Tuttavia, tecnicamente, consentire connessioni con lo stesso host vanifica lo scopo del server dedicato e l'unico vantaggio è lasciare il server attivo al momento della disconnessione.
shmeeps
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.