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.