Strumenti Utente

Strumenti Sito


lpr-b:lpr-b-09:progetto

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
lpr-b:lpr-b-09:progetto [18/12/2009 alle 16:41 (15 anni fa)] Andrea Corradinilpr-b:lpr-b-09:progetto [01/02/2010 alle 09:47 (15 anni fa)] (versione attuale) Andrea Corradini
Linea 1: Linea 1:
-====== Progetto ====== 
-  
-**__Pagina provvisoria__** 
- 
-===== Il gioco: fiorellini e formichine ===== 
- 
-In un prato virtuale spuntano dei fiorellini a 
-intervalli di tempo casuali e in posizioni casuali. 
-Ogni giocatore ha a disposizione al massimo cinque formichine,  
-che può far muovere sul prato per raggiungere i fiorellini e  
-raccoglierli. I giocatori operano simultaneamente e in concorrenza. 
-Vince chi raccoglie più fiorellini in un tempo predeterminato. 
- 
-Il prato virtuale è rappresentato da una matrice quadrata di lato 
-512 che è gestita da un server. Il giocatore deve definire un 
-client, rappresentante una singola formichina, che verrà lanciato 
-in cinque istanze al momento del gioco. 
- 
-Il client interagisce con il server tramite TCP e tramite multicast, 
-con il protocollo descritto di seguito. Inoltre le varie istanze del client possono 
-interagire tra di loro, con modalità abitrarie, per realizzare 
-strategie di cooperazione che consentano di ottenere una maggior efficienza. 
- 
- 
-===== File eseguibili ===== 
-Il progetto consiste nella scrittura di un client (giocatore) per un server dato (che gestisce il gioco). Il codice del server è disponibile per essere scaricato; è possibile che vengano rilasciate versioni successive (con modifiche minori, quali fine-tuning di alcuni parametri) in seguito. 
-==== File scaricabili ==== 
- 
-Versione iniziale (17 dicembre 2009): [[http://margot.di.unipi.it/LPR-09/Laprore-Server.jar|Server]] di gioco, [[http://margot.di.unipi.it/LPR-09/Laprore-Client.jar|Client]] di esempio 
- 
-==== Istruzioni ==== 
- 
-I file necessitano di Java Virtual Machine installata sulla macchina. Essi possono essere usati sia da GUI (con un doppio click sull'icona) che da riga di comando. 
-=== Uso da GUI === 
-Aprendo il server si aprirà il pannello che rappresenta il campo di gioco, con tutti i parametri impostati al loro valore di default (vedi la prossima sezione). Il server è ora disponibile ad accettare connessioni dai client; chiudendo la finestra, si termina l'applicazione. Il pannello a destra elenca le squadre registrate; per ciascuna squadra viene riportato il nome (troncato ai primi 8 caratteri), il numero di giocatori attivi, e il punteggio corrente (dato dal numero di unità raccolte). 
-Il client può essere lanciato fino a cinque volte; ad ogni esecuzione, verrà registrato un nuovo giocatore sul server (registrazioni successive verranno rifiutate). Per default, le opzioni del client coincidono con quelle del server, e la squadra ha il nome "Test". Con la chiusura del server, terminano (con un errore) tutti i client collegati fino a quel momento. 
-=== Uso da riga di comando === 
-Il server può essere lanciato con il comando 
- 
-''java -jar Laprore-Server.jar //portaTCP gruppoMC portaMC//'' 
- 
-in cui: 
-  * //portaTCP// è la porta su cui il server si pone in ascolto per le connessioni TCP provenienti dai client (per default: 4000) 
-  * //gruppoMC// è il gruppo multicast su cui il server notificherà l'arrivo di nuovi obiettivi (per default: 226.0.0.0) 
-  * //portaMC// è la porta multicast su cui il server notificherà l'arrivo di nuovi obiettivi (per default: 4001) 
-Il client può essere lanciato con il comando 
- 
-''java -jar Laprore-Client.jar //squadra host portaTCP//'' 
- 
-in cui: 
- 
-  * //squadra// è il nome scelto per la propria squadra (per default: Test) 
-  * //host// è l'indirizzo della macchina su cui gira il server (per default: localhost) 
-  * //portaTCP// è la porta, sull'//host//, su cui il server è in ascolto (per default: 4000) 
- 
-Tutti i parametri (sia del server che del client) sono opzionali, ma se presenti devono essere indicati in ordine. Per esempio, è possibile indicare sul client il nome della squadra, omettendo host e porta. 
- 
-===== Documentazione del protocollo ===== 
- 
-TBC 
- 
 ====== Progetto ====== ====== Progetto ======
  
Linea 69: Linea 8:
 |In un prato virtuale spuntano dei fiorellini a intervalli di tempo casuali e in posizioni casuali. Ogni giocatore ha a disposizione al massimo cinque formichine,  che può far muovere sul prato per raggiungere i fiorellini e raccoglierli. I giocatori operano simultaneamente e in concorrenza. Vince chi raccoglie più fiorellini in un tempo predeterminato.|Nello spazio profondo si è aperto un tunnel iperspaziale, tramite il quale una razza di alieni aggressivi piazza delle mine nel nostro territorio a intervalli di tempo casuali e in posizioni casuali. Ogni giocatore ha a disposizione al massimo cinque astronavi, che può far muovere nello spazio per raggiungere le mine e disinnescarle. I giocatori operano simultaneamente e in concorrenza. Vince chi disinnesca più mine in un tempo predeterminato.| |In un prato virtuale spuntano dei fiorellini a intervalli di tempo casuali e in posizioni casuali. Ogni giocatore ha a disposizione al massimo cinque formichine,  che può far muovere sul prato per raggiungere i fiorellini e raccoglierli. I giocatori operano simultaneamente e in concorrenza. Vince chi raccoglie più fiorellini in un tempo predeterminato.|Nello spazio profondo si è aperto un tunnel iperspaziale, tramite il quale una razza di alieni aggressivi piazza delle mine nel nostro territorio a intervalli di tempo casuali e in posizioni casuali. Ogni giocatore ha a disposizione al massimo cinque astronavi, che può far muovere nello spazio per raggiungere le mine e disinnescarle. I giocatori operano simultaneamente e in concorrenza. Vince chi disinnesca più mine in un tempo predeterminato.|
 |Il campo di gioco è rappresentato da una matrice quadrata di lato 512 unità (a coordinate intere) che è gestita da un server. Il giocatore deve definire un client, rappresentante una singola unità, che verrà lanciato in cinque istanze al momento del gioco. Il client interagisce con il server tramite TCP e tramite multicast, con il protocollo descritto di seguito. Inoltre le varie istanze del client possono interagire tra di loro, con modalità abitrarie, per realizzare strategie di cooperazione che consentano di ottenere una maggior efficienza.|| |Il campo di gioco è rappresentato da una matrice quadrata di lato 512 unità (a coordinate intere) che è gestita da un server. Il giocatore deve definire un client, rappresentante una singola unità, che verrà lanciato in cinque istanze al momento del gioco. Il client interagisce con il server tramite TCP e tramite multicast, con il protocollo descritto di seguito. Inoltre le varie istanze del client possono interagire tra di loro, con modalità abitrarie, per realizzare strategie di cooperazione che consentano di ottenere una maggior efficienza.||
 +
  
  
Linea 103: Linea 43:
  
 Tutti i parametri (sia del server che del client) sono opzionali, ma se presenti devono essere indicati in ordine. Per esempio, è possibile indicare sul client il nome della squadra, omettendo host e porta. Tutti i parametri (sia del server che del client) sono opzionali, ma se presenti devono essere indicati in ordine. Per esempio, è possibile indicare sul client il nome della squadra, omettendo host e porta.
 +
 ===== Documentazione del protocollo ===== ===== Documentazione del protocollo =====
  
Linea 121: Linea 62:
 ^ Comando ^^ Len ^ Dati ^ Descrizione ^ Risposta ^ ^ Comando ^^ Len ^ Dati ^ Descrizione ^ Risposta ^
 ^ Nome ^ Valore ^ ^ ^ ^ ^ ^ Nome ^ Valore ^ ^ ^ ^ ^
-^ REGISTER | 7 | //n// | //n// caratteri (secondo l'encoding usato dalla classe String di Java), nome //squadra// | registra il client presso il server, iscrivendolo alla //squadra// indicata. Se la //squadra// non esiste viene creata; se alla squadra sono già iscritti il numero massimo di giocatori, la registrazione viene rifiutata (vedi il messaggio di risposta). Il cliente **deve** essere validamente registrato prima che possano essere inviati altri comandi. Una volta registrato, ulteriori comandi **REGISTER** sono invalidi. ^ YOURID |+^ REGISTER | 7 | //n// | //n// byte (secondo l'encoding usato dalla classe String di Java), nome //squadra// | registra il client presso il server, iscrivendolo alla //squadra// indicata. Se la //squadra// non esiste viene creata; se alla squadra sono già iscritti il numero massimo di giocatori, la registrazione viene rifiutata (vedi il messaggio di risposta). Il cliente **deve** essere validamente registrato prima che possano essere inviati altri comandi. Una volta registrato, ulteriori comandi **REGISTER** sono invalidi. ^ YOURID |
 ^ PING | 1 | 0 | | Segnala al server la propria presenza. ^ PONG | ^ PING | 1 | 0 | | Segnala al server la propria presenza. ^ PONG |
 ^ MOVE | 2 | 4 | //x//,//y// | Chiede al server si portare il giocatore alle coordinate //x//,//y//; il trasferimento può richiedere un tempo significativo, a seconda della distanza; durante tale tempo è possibile inviare altri comandi (inclusi altri MOVE). Giunto a destinazione, il giocatore si ferma automaticamente (fino a un successivo MOVE). ^ | ^ MOVE | 2 | 4 | //x//,//y// | Chiede al server si portare il giocatore alle coordinate //x//,//y//; il trasferimento può richiedere un tempo significativo, a seconda della distanza; durante tale tempo è possibile inviare altri comandi (inclusi altri MOVE). Giunto a destinazione, il giocatore si ferma automaticamente (fino a un successivo MOVE). ^ |
Linea 141: Linea 82:
 ^ GRABRESULT | 68 | 2 | //k// | Segnala che sono stati raccolti //k// target con l'ultimo GRAB (0=nessuno; è possibile che //k//>1 se esistevano più target alle stesse coordinate). | ^ GRABRESULT | 68 | 2 | //k// | Segnala che sono stati raccolti //k// target con l'ultimo GRAB (0=nessuno; è possibile che //k//>1 se esistevano più target alle stesse coordinate). |
  
-==== Messaggi Multicast UDP dal client al server ====+==== Messaggi Multicast UDP dal server al client ====
  
 | 1 byte || 2 byte | //Len// byte | |  | 1 byte || 2 byte | //Len// byte | | 
Linea 155: Linea 96:
 Se il server riconosce un errore nel comportamento del client, la comunicazione viene interrotta (il giocatore rimane registrato ma viene "espulso" dal gioco). In caso di errori da parte di un client la squadra continua il gioco con i giocatori rimanenti. Se il server riconosce un errore nel comportamento del client, la comunicazione viene interrotta (il giocatore rimane registrato ma viene "espulso" dal gioco). In caso di errori da parte di un client la squadra continua il gioco con i giocatori rimanenti.
 Il gioco non prevede la possibilità di de-registrare un giocatore, né un esplicito "fine partita"; ogni esecuzione del server corrisponde a una partita, che può essere interrotta in qualunque momento interrompendo il server (da tastiera con Ctrl-C o chiudendo la sua finestra). Il gioco non prevede la possibilità di de-registrare un giocatore, né un esplicito "fine partita"; ogni esecuzione del server corrisponde a una partita, che può essere interrotta in qualunque momento interrompendo il server (da tastiera con Ctrl-C o chiudendo la sua finestra).
 +
 ===== Requisiti generali e modalità di consegna ===== ===== Requisiti generali e modalità di consegna =====
  
Linea 183: Linea 125:
 I progetti sottomessi verranno testati durante un "torneo" pubblico (la cui data verrà pubblicata nel  I progetti sottomessi verranno testati durante un "torneo" pubblico (la cui data verrà pubblicata nel 
 mese di gennaio 2010) durante il quale ogni studente lancerà cinque istanze del proprio client che competeranno  mese di gennaio 2010) durante il quale ogni studente lancerà cinque istanze del proprio client che competeranno 
-con tutti gli altri (eventualmente, con un meccanismo a gironi) su di un unico server attivato dai docenti.    +con tutti gli altri (eventualmente, con un meccanismo a gironi) su di un unico server attivato dai docenti.    
 +Naturalmente il codice usato per la gara deve essere conforme a quello consegnato, pena la nullità della prova. 
 + 
  
 ===== Suggerimenti finali ===== ===== Suggerimenti finali =====
Linea 197: Linea 141:
  
 ===== FAQ ===== ===== FAQ =====
-(In questa sezione verranno raccolte le risposte alle domande più frequenti).+ 
 +Per una lista aggiornata delle risposte alle domande più frequenti, clicca  
 +[[lpr-a/progetto#FAQ|qui]].
lpr-b/lpr-b-09/progetto.1261154504.txt.gz · Ultima modifica: 18/12/2009 alle 16:41 (15 anni fa) da Andrea Corradini

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki