Sto facendo un gioco multiplayer. Ora sto cercando di scegliere la tecnologia per connettere i dispositivi Android al server. I client funzionano su Android e il gioco è MMORPG. Mi piacerebbe scrivere il server in java. In questo momento ho solo 3 idee per questo:
1) creazione di un ambiente di multithreading con java e socket semplici. In questo modo sarà più semplice eseguire una connessione full-duplex tra il client di gioco e il server. Ma ho le seguenti preoccupazioni:
1.1) Il gioco è MMORPG con un gran numero di oggetti, e non sono sicuro di come tali soluzioni siano ridimensionate se ci sono ad esempio 5000 persone che giocano nello stesso momento. Quanti thread potrò eseguire su java Machine? Come posso calcolare approssimativamente questo? Nel caso in cui 1 thread stia leggendo per ogni socket e 1 thread sta scrivendo sul socket (quindi 2 thread per 1 player).
1.2) Quando il numero di giocatori cresce, come sarò in grado di scalare il mio archivio jar auto-scritto per distribuirlo su diversi server? Forse c'è qualche trucco speciale per farlo?
1.3) Molte API di overhead di programmazione sono piuttosto di basso livello.
2) Creazione di un'interfaccia servlet per servire le richieste HTTP.
2.1) Sessione di controllo facile (e autorizzazione) a condizione che ogni giocatore abbia la propria sessione.
2.2) può connettersi a EJB java di java o qualsiasi altra cosa - molte complicazioni con la programmazione a livello di sistema vengono eliminate. Quindi posso concentrarmi sulla scrittura della logica di business.
2.3) Può servire tutti i tipi di client con HTTP - dispositivi mobili + browser.
2.4) Alta velocità - anche 1 contenitore di servlet può servire qualche migliaio di richieste al secondo, quindi sarà molto veloce.
2.4) Ma questo approccio non può fornire una comunicazione full duplex. Dovrò inviare richieste ogni 1 secondo per verificare gli aggiornamenti. 1 secondo di ritardo non fa molta differenza per il gioco in quanto è a turni, ma genera comunque molto traffico. È fattibile quando ci sono molti giocatori che giocano? Ho sentito parlare della tecnologia COMET, ma sembra che se il server debba inviare molti messaggi in fila, dovrò comunque inviare richieste ogni volta + questa tecnologia non è ancora ben stabilita.
3) Creazione di socket e collegamento tramite JMS al server EE java.
3.1) Cool perché consente la comunicazione full duplex tra client e server + offre tutte le funzionalità interessanti di java EE. Più tardi può essere esteso al browser tramite l'interfaccia servlet.
3.2) Sembra una specie di overengineering. E 'davvero come la gente lo farebbe? Voglio dire è anche il modo corretto? Uno sviluppatore sane lo farebbe così?
Vorrei che mi aiutassi con la scelta, per favore. Non ho molta esperienza nel fare un lavoro del genere. E vorrebbe attenersi alle migliori pratiche.