Come faccio a creare un semplice server di gioco RPG? [chiuso]


8

Sto lavorando a un gioco Sprite Kit. Vorrei trasformarlo in un vero gioco multiplayer, con il quale intendo dire che ogni persona che si unisce al gioco ha la propria videocamera. Ho visto tutorial su giochi multiplayer in cui i giocatori condividono la stessa schermata di gioco, ma non è quello che voglio.

Capisco che ci deve essere un server a cui i giocatori si connettono, il che significa che il "mondo" a cui i giocatori si connettono dovrebbe essere in esecuzione sul server. È corretto?

Come posso avere un server che esegue il "mondo" per questo gioco? Deve essere un tipo specifico di server o posso usare Node.js o qualunque altra cosa io voglia?

Risposte:


17

Sei sulla strada giusta.

L'essenza del modello di rete client-server è che un server è un punto centrale di conoscenza a cui i client si connettono. Un server di gioco in genere contiene

  • una rappresentazione del mondo in memoria ,
  • un elenco di giocatori collegati ,
  • un loop di gioco (ad es. gestore del controllo del giocatore, un motore fisico e un'intelligenza artificiale).

Avrai anche bisogno di un canale di comunicazione tra il tuo server e i client, in modo che i client possano trasmettere le azioni del giocatore e il server possa trasmettere lo stato del gioco.

Configurazioni client-server più avanzate potrebbero comportare

Inizia semplice. È meglio aggiungere complessità solo se necessario . Questa tana di coniglio è profonda.


Hai menzionato Node.js : ho scritto alcuni server per piccoli giochi ed è stato bello. Ma puoi scrivere un server e client in qualsiasi cosa ti piaccia. Eve Online è in gran parte in Erlang , Minecraft in Java, praticamente tutto di Valve è in C ++, eccetera.


Grazie per la risposta dettagliata! una cosa che mi confonde ancora è: dal momento che il gioco è scritto usando il kit sprite per iPhone, il server deve saperlo? Sono solo confuso perché continuo a pensare, il gioco è in kit sprite, quindi anche il mondo fornito dal server dovrebbe essere sprite-kit. Quali sono i tuoi pensieri
duxfox--

@AbdulAhmad No, puoi creare il server con la lingua o le librerie che desideri. Tieni presente che il tuo server è e dovrebbe essere completamente separato. Stai creando due diverse applicazioni e dovresti pensarci in questo modo. Uno per il client e uno per il server. La parte che li unisce è il protocollo di comunicazione tra le due applicazioni. Mentre ci saranno altri dettagli che devono essere coordinati tra loro (come lo stato del gioco), in sostanza sono totalmente indipendenti. Non avresti nemmeno molto da usare per Sprite Kit sul lato server.
Fuzzy Logic,

@FuzzyLogic quindi, cercando di capirlo meglio. Se il server fornisce il "mondo" (immagini, fisica, ecc.), I client (iPhone) non dovrebbero avere nulla del genere, perché il client è solo la "vista" per questo ambiente. è corretto? Quindi userei semplicemente sprite-kit sul lato client per dare un livello visivo ai dati provenienti dal server? In altre parole, il gioco dovrebbe essere costruito principalmente sul lato server (tutta la logica, ecc.) E il client è solo il mio punto di vista, e dove posso inviare eventi / comandi al server. Questo significa che non ho bisogno di alcun motore fisico / logica di gioco nel kit sprite
duxfox--

@AbdulAhmad Yep! Un client che esegue l'elaborazione minima possibile è chiamato thin client . È un ottimo punto di partenza.
Anko,

3
@AbdulAhmad Sì e no. Questo è un buon modo di pensarci, ma principalmente per motivi di efficienza, il client di solito duplica molte cose invece di chiedere al server ogni dettaglio, altrimenti probabilmente avrai problemi di prestazioni. Come ha detto anko, sarebbe un buon punto di partenza. Questo è un argomento importante, ci sono molti modi, molte considerazioni e molte parti, quindi è difficile spiegare del tutto come dovrebbe funzionare tutto. Tuttavia, la sua complessità dipende dai dettagli del tuo gioco. Ad essere onesti, in base alle tue domande, non ti consiglio di provare a farlo ancora.
Fuzzy Logic,
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.