Oppure

Loading
12/07/12 1:43
DanieleL
Devo sviluppare un Gioco di Ruolo composto dai seguenti elementi :
- Personaggi: client che si connettono al Server e dopo l'autenticazione sono in grado di giocare muovendosi in varie stanze, chattando con i presenti, uccidendo mostri e accumulando punti esperienza
- Mappa: struttura che ho ipotizzato per gestire il gioco, contiene tutte le informazioni riguardanti le stanze
- Stanze: stanze nelle quali i giocatori interagiscono, possono contenere mostri e oggetti
- Mostri: se attaccati rispondono all'attacco, rilasciano oggetti e punti esperienza
- Oggetti: possono essere raccolti dai giocatori per avere alterazioni di stato

A grandi linee gli step compiuti dal Server dovrebbero essere questi:
- Instanziare un oggetto Mappa (si occuperà delle informazioni riguardanti le stanze contenute in un file di testo)
- Attivare il servizio ad una determinata porta (Socket)
- Creare i Thread per la gestione dei differenti Client (gestendofile di Log)
- Gestire il gioco (controllo del login, stop del servizio, espulsione di un giocatore..)
Quelli del Client invece:
- Richiedere il collegamento sul Server
- Effettuare il login
- Permettere all'utente di giocare (dare Input e ricevere Output dal Server)

Tra le varie particolaretà del gioco deve essere possibile l'attivazione di stanze su macchine remote , cioè una stanza che non sia sul Server principale alla quale i Client devono connettersi e giocare.
Le informazioni saranno salvate al momanto del logout (attivabile solo in una determinata stanza) su file presenti nel Server principale per cui non è necessario che vi sia una comunicazione tra i Server.
Io ho già lavorato con una struttura Client-Server Multithread basata sui Socket ma volevo capire meglio il funzionamento della java RMI.Ho guardato su vari tutorial e gli esempi sulla documentazione ma ho ancora qualche dubbio sul funzionameno del comando Naming.bind:
- sarebbe possibile allocare direttamente dal Server principale un oggetto stanza su un determinato indirizzo? Risolverei i problema dei giocatori allocati nella stanza sulla macchina remota se con il comando Naming.lookup di quell'oggetto attivato sui vari Client potessi ottenere la stanza.
- sarebbe più funzionale fare anche il .bind della mappa?

Pensavo altrimenti di gestire la comunicazione tra Client e Server attraverso i Socket e uno specifico protocollo di comunicazione (una semplice classe protocol con switch-case per ogni comando dell'utente). Rimane però il problema della possibilità di avere stanze su macchine remote.
aaa