Sto progettando un gioco a turni. L'idea è quella di far girare l'applicativo sia su dispositivi mobili che fissi. Al momento sto gettando le basi, e vorrei concentrarmi sull'aspetto connettivo.
Dovrebbe funzionare così:
Un giocatore A si connette al server di gioco autenticandosi. Scorre la lista giocatori registrati ed invia una richiesta ad un giocatore B. Quando B si autenticherà (in un secondo momento) troverà una richiesta di sfida. Una volta accettata, la partita comincia. Una cosa importante è non obbligare i giocatori a terminare la partita in una sola sessione, ma a turni scambieranno mosse e potranno anche disconnettersi o chiudere l'applicativo, lasciando la sessione di sfida aperta. (Un po' come funziona Quiz Duello per smartphone).
Senza scendere nei dettagli delle meccaniche di gioco inutilmente, ho immaginato l'azione del giocatore A verso il giocatore B come l'invio di un oggetto (inteso come istanza di una classe) che il giocatore B riceve ed elabora. (Sto sviluppando in Java)
Non avendo mai progettato software di rete non sono molto esperto. Ho qualche rudimento sui socket ed ho sviluppato qualche applicativo per esercizio che scambiava pacchetti udp e tcp.
E' proprio questo il mio problema: devo usare tcp o udp? O magari tcp per l'autenticazione e udp per la partita? Il contrario? So che udp è ovviamente non affidabile, quindi in tal caso dovrei implementare dei meccanismi per l'affidabilità direttamente in software. Insomma come devo strutturare i meccanismi connettivi? Sono pieno di dubbi.![]()