La migliore soluzione per il gioco multiplayer in tempo reale per Android [chiuso]


11

Ho in programma di creare un gioco multiplayer in tempo reale per Android (2-8 giocatori) e ritengo quale soluzione per l'organizzazione multiplayer sia la migliore:

  1. Crea server su PC e client su dispositivo mobile, tutte le comunicazioni passano attraverso il server (ClientA -> PC SERVER -> Tutti i client)

  2. Usa il bluetooth, non l'ho ancora usato, e non so se è difficile realizzare il multiplayer su bluetooth

  3. Rendi il server su uno dei dispositivi e altri dispositivi collegati (attraverso la rete, ma non so se è difficile risolvere il problema con i dispositivi tramite NAT?)

  4. Altra soluzione?


3
Stai pensando che questo sia un gioco solo locale o vuoi che le persone possano giocare con le persone su Internet? Stai ospitando macchine per giochi?
Tetrad

Scelgo il gioco multiplayer su piccola scala, ho intenzione di creare un gioco in cui le persone si incontrano nella stanza e posso giocare allo stesso gioco (questo è l'argomento della mia tesi: multiplayer su piattaforma mobile). Ma se qualcuno ha una soluzione interessante per giocare su Internet, sono anche interessato.
piotrek,

Risposte:


2

Esclusione di responsabilità; Non ho fatto molto con Java e la piattaforma Android.

Tuttavia, la mia esperienza più ampia con le lingue ".net" sulle piattaforme Windows Mobile, insieme alla piattaforma Windows, è che viene mantenuto un buon 75-90% di tutto il codice necessario per creare e mantenere una connessione dati Bluetooth o di rete / supportato con il sistema operativo o le librerie che sarebbero necessarie per accedere all'hardware.

Finora questo sembra vero anche con Android, con il sistema operativo che espone metodi per creare connessioni dati tramite Bluetooth o Internet, oltre a abilitare / disabilitare il rispettivo hardware.

Immagino che il Bluetooth sia il metodo di connessione preferito, poiché sarebbe il meno costoso da implementare (nessun server). E consentire un incontro / gioco più locale. Il Bluetooth è abbastanza facile da usare. funziona in modo simile alle normali prese di rete dopo aver saputo a quale dispositivo si desidera connettersi.

Gli altri sono corretti in quanto Bluetooth v2.0 / v2.1 non è attualmente in grado di supportare grandi carichi di dati. Questo cambierà con l'eventuale diffusione di v3.0 e successive. e ci sono modi per aggirare questa limitazione.

Per ora, però, esiste un concetto semplice, ma una soluzione complessa, che potresti voler provare. Lo uso da un po ', è simile al peer to peer, ma implica che il gioco sia ospitato su tutti i dispositivi contemporaneamente. In questo modo se una connessione viene temporaneamente persa, rallentata o un giocatore viene abbandonato per qualsiasi motivo, gli altri giocatori non saranno interessati. Ciò consente agli utenti che sono stati abbandonati di ricongiungersi al gioco in corso con un'interruzione minima o nulla per gli altri giocatori o il proprio gioco.

CON: Ogni giocatore avrebbe effettivamente giocato la propria istanza in qualche modo unica del gioco, che sarebbe stata collegata con gli altri giocatori per evitare che i giochi si allontanassero troppo dalla sincronizzazione tra loro.

CON: Il codice di supporto può essere esteso / complesso e difficile da avvolgere la testa a seconda di ciò che si desidera ottenere.

PRO: nessun server centrale o dispositivo richiesto! Nessun mantenimento della manutenzione richiesto.

PRO: un intenso scambio di dati si verificherebbe solo quando un giocatore (ri) si unisse o una partita fosse inizializzata. - Anche questo può essere ridotto assicurando che tutti i giochi vengano generati e procedano allo stesso modo da tutti i giocatori. POTENZIALMENTE ridurre il consumo di energia dovuto all'utilizzo intenso della rete.

PRO: i dati diventano meno sensibili al tempo, poiché i dispositivi dispongono già di tutti i dati necessari per far funzionare un gioco senza gli altri giocatori. Ti consente di concentrarti maggiormente sull'esperienza di gioco effettiva per i singoli utenti, piuttosto che su un gruppo di giocatori.

Mi è mancato il tempo per implementare un motore di gioco completo e approfondito che lo utilizza. I giochi che ho realizzato sono stati limitati a ricreare giochi simili a Monopoli e Uno, che sembravano funzionare molto bene.

Il più semplice era quello che emulava Uno. Ho essenzialmente impilato i mazzi dei perdenti dopo che un giocatore ha vinto per assicurarsi che quel giocatore avesse vinto tutte le partite. Più del 95% delle volte non sapevo che non stavo giocando lo stesso identico gioco di tutti gli altri.

Ho iniziato a costruire un gioco simile a Master of Orion II, ma il gioco stesso è stato un po 'troppo per me da intraprendere da solo.


9

Dipende fortemente dal gioco, ma alcuni amici e io stavamo pensando agli stessi problemi solo un paio di mesi fa, ed ecco cosa abbiamo deciso. Sono di nuovo in vena di pro e contro.

Server basato su computer

Professionisti

  • Provato e vero
  • scalabile

Contro

  • È necessario scrivere un "multi-server" in grado di ospitare più giochi contemporaneamente. Questo probabilmente utilizzerà una tecnologia leggermente diversa rispetto al tuo telefono Android. Puoi ancora usare java, ma puoi ancora usare i pacchetti Android?
  • Può essere costoso da eseguire e mantenere
  • Potresti potenzialmente abbatterlo un giorno per una serie di ragioni. I fan potrebbero non essere contenti se il server si arresta solo un paio di mesi dopo l'acquisto del gioco.

Peer To Peer con uno di loro in controllo

Professionisti

  • Server ad hoc in cui gli amici possono unirsi ad altri amici quando vogliono
  • Poco o nessun costo di gestione da parte tua
  • Il codice server verrà mischiato con il codice client, non è necessario scrivere un'applicazione server separata.

Contro

  • È necessario scrivere un semplice peer-finder centralizzato. (Ho fatto il mio in php + mysql in un paio di centinaia di righe facili)
  • I server sono in esecuzione sui telefoni. I telefoni possono essere lenti. Tutti i telefoni target saranno in grado di ospitare un gioco?
  • Cosa succede se il telefono del server viene disconnesso?
  • Più facile del client-server per gli hacker di entrare

Per quanto riguarda il bluetooth, mi aspetto che sia simile al metodo peer to peer sopra. Inoltre, non penso che dovresti avere problemi con NAT.

EDIT : dipende anche fortemente dalla tua esperienza. Comincerei con la scrittura di alcuni giochi client / server relativamente piccoli per ottenere prima il blocco della rete. È un argomento difficile che è facile sbagliare la prima volta. Ho ottenuto il mio proprio al terzo tentativo. Segui schemi noti e non cercare di inventarti qualcosa da solo.


Non credo che potrebbe essere fatto tramite bluetooth, dubito che supporti le trasmissioni: AFAIK collega solo un singolo host a un altro, ha un numero massimo di connessioni molto basso ed è lento.
o0 '.

4

Una delle maggiori considerazioni da fare è l'affidabilità. I telefoni non sono molto affidabili; in effetti, probabilmente dovresti presumere che in una partita a 8 giocatori qualcuno probabilmente si disconnetterà (chiamata in arrivo, cattiva ricezione, uscita del giocatore ...)

Tenendo presente questo, capire che è necessario ridurre al minimo l'impatto di un utente disconnesso. Nella tua seconda opzione, hai essenzialmente reso un telefono il server. Se quel telefono diventa MIA, il gioco è effettivamente finito per tutti i giocatori.

John ha trattato i pro e i contro di una tradizionale architettura client <-> client. Questo è probabilmente il modo più resistente per offrire un'esperienza multiplayer affidabile per tutti.

Potresti anche prendere in considerazione una tecnica sulla falsariga di una simulazione a passo di blocco. Questo può essere implementato in modo puramente peer-to-peer. L'idea generale è che si prevede che ogni client invii il suo aggiornamento (serie di comandi o mancanza di questi) ad ogni passaggio della simulazione. In una successiva fase di simulazione, i comandi di ciascun giocatore vengono applicati alla logica di gioco. Molti giochi RTS utilizzano questo tipo di schema di rete.

La tecnica può essere difficile da implementare e può essere molto difficile eseguire il debug. È certamente più difficile che avere un'architettura client-server più tradizionale. Implica anche un ritardo tra l'input di un giocatore e quando il gioco risponde all'input. Tuttavia, se un giocatore dovesse abbandonare, i giocatori rimanenti potrebbero semplicemente escluderlo dal gioco e continuare. Può anche potenzialmente ridurre il traffico di rete rispetto ad altri schemi.

Se vuoi saperne di più su questa tecnica, inizia con questo eccellente articolo sull'argomento. Altrimenti, scoraggerei fortemente uno schema di rete in cui un singolo telefono è responsabile di una sessione multiplayer e suggerirei un'architettura client <-> client più semplice.

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.