Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
lpr-a:progetto [18/12/2009 alle 15:40 (15 anni fa)] Vincenzo Gervasi |
lpr-a:progetto [26/01/2010 alle 18:26 (14 anni fa)] (versione attuale) Vincenzo Gervasi Ancora FAQ |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
====== Progetto ====== | ====== Progetto ====== | ||
- | + | ||
- | **__Pagina provvisoria__** | + | Questa pagina descrive il **I Progetto di LPR 2009/ |
===== Descrizione del gioco ===== | ===== Descrizione del gioco ===== | ||
- | ^ Fiorellini | + | ^ Fiorellini |
|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, | |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, | ||
|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 53: | Linea 54: | ||
=== Fairness === | === Fairness === | ||
Tentativi di sabotare il server o il protocollo sono lodevoli, ma considerati illegali ai fini dell' | Tentativi di sabotare il server o il protocollo sono lodevoli, ma considerati illegali ai fini dell' | ||
- | |||
==== Messaggi TCP dal client al server ==== | ==== Messaggi TCP dal client al server ==== | ||
Linea 59: | Linea 59: | ||
^ Comando ^^ Len ^ Dati ^ Descrizione ^ Risposta ^ | ^ Comando ^^ Len ^ Dati ^ Descrizione ^ Risposta ^ | ||
^ Nome ^ Valore ^ ^ ^ ^ ^ | ^ Nome ^ Valore ^ ^ ^ ^ ^ | ||
- | ^ REGISTER | 7 | //n// | //n// caratteri | + | ^ REGISTER | 7 | //n// | //n// bytes (secondo l' |
^ 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 // | ^ MOVE | 2 | 4 | //x//,//y// | Chiede al server si portare il giocatore alle coordinate // | ||
Linea 66: | Linea 66: | ||
^ LOOK | 5 | 0 | | Chiede al server l' | ^ LOOK | 5 | 0 | | Chiede al server l' | ||
^ LOAD | 6 | 0 | | Chiede al server il carico corrente del giocatore (quanti target ha raccolto finora). ^ YOURLOAD | | ^ LOAD | 6 | 0 | | Chiede al server il carico corrente del giocatore (quanti target ha raccolto finora). ^ YOURLOAD | | ||
- | |||
==== Messaggi TCP dal server al client ==== | ==== Messaggi TCP dal server al client ==== | ||
Linea 76: | Linea 75: | ||
^ LOC | 65 | 4 | //x//,//y// | Fornisce la posizione corrente del giocatore (coordinate //x//,//y// sul campo di gioco). | | ^ LOC | 65 | 4 | //x//,//y// | Fornisce la posizione corrente del giocatore (coordinate //x//,//y// sul campo di gioco). | | ||
^ YOURLOAD | 66 | 2 | //n// | Fornisce il carico corrente del giocatore, ovvero quanti target ha raccolto dal momento della registrazione fino ad ora. | | ^ YOURLOAD | 66 | 2 | //n// | Fornisce il carico corrente del giocatore, ovvero quanti target ha raccolto dal momento della registrazione fino ad ora. | | ||
- | ^ TARGETS | 67 | 4//n// | //x//_1,//y//_1 ... //x_n//,//y_n// | Fornisce le coordinate di tutti i target presenti sul campo di gioco. | | + | ^ TARGETS | 67 | 4//n// | //x//< |
^ GRABRESULT | 68 | 2 | //k// | Segnala che sono stati raccolti //k// target con l' | ^ GRABRESULT | 68 | 2 | //k// | Segnala che sono stati raccolti //k// target con l' | ||
- | + | ==== Messaggi Multicast UDP dal server | |
- | ==== Messaggi Multicast UDP dal client al server ==== | + | |
| 1 byte || 2 byte | //Len// byte | | | | 1 byte || 2 byte | //Len// byte | | | ||
Linea 89: | Linea 87: | ||
==== Comunicazioni intra-client ==== | ==== Comunicazioni intra-client ==== | ||
Il protocollo, i formati, e il tipo di comunicazione (tipicamente: | Il protocollo, i formati, e il tipo di comunicazione (tipicamente: | ||
- | |||
==== Trattamento degli errori e terminazione ==== | ==== Trattamento degli errori e terminazione ==== | ||
- | Se il server riconosce un errore nel comportamento del client, la comunicazione viene interrotta (il giocatore rimane registrato ma viene " | + | Se il server riconosce un errore nel comportamento del client, la comunicazione viene interrotta (il giocatore rimane registrato ma viene " |
Il gioco non prevede la possibilità di de-registrare un giocatore, né un esplicito "fine partita"; | Il gioco non prevede la possibilità di de-registrare un giocatore, né un esplicito "fine partita"; | ||
+ | ===== Requisiti generali e modalità di consegna ===== | ||
- | ===== Modalità | + | Ogni studente che vuole sostenere l' |
+ | progetto svolto al docente del corso di appartenenza (Prof. Gervasi per il Corso A, Prof. Corradini per il Corso B). | ||
+ | Il progetto deve essere sottomesso individualmente, | ||
+ | svolto da un gruppo di due studenti al massimo: in questo caso nel | ||
+ | progetto va indicato esplicitamente il collega con cui si è collaborato. | ||
+ | L' | ||
+ | è responsabile dell' | ||
- | TBC | + | Per poter essere valutato, il codice del client sviluppato nel progetto deve essere in grado di |
+ | interagire senza errori con il server pubblicato in questa pagina, in una o più istanze (fino a 5) | ||
+ | eseguite su host diversi o anche sullo stesso host. Il progetto deve funzionare correttamente sulle | ||
+ | macchine del CLI, dove verrà testato. | ||
+ | |||
+ | Il codice del progetto deve essere ben commentato e deve essere accompagnato da una relazione | ||
+ | di 3-5 pagine che descrive l' | ||
+ | del singolo client e per la collaborazione tra più client, e le politiche di sincronizzazione tra thread | ||
+ | utilizzate. Inoltre occorre produrre un breve manuale d'uso che descrive i comandi necessari per | ||
+ | avviare le varie istanze del client, sia su uno stesso host che su host diversi. | ||
+ | |||
+ | Codice, relazione e manuale d'uso devono essere inviati per posta elettronica al docente del | ||
+ | corso **entro le ore 24 di domenica 31 gennaio 2010**. Progetti inviati dopo tale scadenza non | ||
+ | verranno ammessi, e lo studente dovrà svolgere un nuovo progetto che verrà pubblicato successivamente. | ||
+ | |||
+ | I progetti sottomessi verranno testati durante un evento pubblico il **5 Febbraio 2010 alle 14:00**, durante il quale ogni studente lancerà cinque istanze del proprio client che competeranno con tutti gli altri (eventualmente, | ||
===== Suggerimenti finali ===== | ===== Suggerimenti finali ===== | ||
Linea 103: | Linea 122: | ||
* la correttezza dell' | * la correttezza dell' | ||
* il design e l' | * il design e l' | ||
- | * l' | + | * l' |
* la qualità complessiva di scrittura del codice e della relazione. | * la qualità complessiva di scrittura del codice e della relazione. | ||
Nella parte orale verranno invece verificate le conoscenze teoriche su tutti gli argomenti trattati nel corso. | Nella parte orale verranno invece verificate le conoscenze teoriche su tutti gli argomenti trattati nel corso. | ||
- | Si raccomanda di verificare in anticipo il funzionamento dei client sulle macchine del Centro di Calcolo (Laboratori H-Lab e M-Lab), su cui verrà svolto il " | + | Si raccomanda di verificare in anticipo il funzionamento dei client sulle macchine del Centro di Calcolo (Laboratori H-Lab e M-Lab), su cui verrà svolto il " |
+ | ===== FAQ ===== | ||
+ | **È nota la frequenza con cui il server genera i targets e quindi invia messaggi di tipo TARGETS in multicast? | ||
+ | \\ | ||
+ | No; i target sono comunque generati a intervalli casuali, per cui al limite si potrebbe sapere la frequenza media. Ma quest' | ||
+ | |||
+ | **Il client con un messaggio di tipo MOVE, chiede al server di portare il giocatore alle coordinate, è possibile sapere la velocità di movimento del giocatore (sarebbe utile per fare dei calcoli)? | ||
+ | \\ | ||
+ | Al momento è circa di 8-10 unità/ | ||
+ | Per chi fosse interessato, | ||
+ | |||
+ | **Posso sabotare i miei concorrenti inviando falsi messaggi sul gruppo broadcast del server?** | ||
+ | \\ | ||
+ | Si; allo stesso modo, i docenti provvederanno a sabotare la tua laurea inviando falsi statini in Segreteria con voti sotto il 18. | ||
+ | |||
+ | **Come devo gestire il caso in cui altri giocatori inviino messaggi nel gruppo broadcast che uso per far comunicare fra di loro i miei agenti?** | ||
+ | \\ | ||
+ | Prima della gara procederemo a una fase di "DNS manuale" | ||
+ | |||
+ | **Posso consegnare più eseguibili diversi (uno per ogni giocatore/ | ||
+ | \\ | ||
+ | No; la modalità di consegna prevede un solo eseguibile. Nulla vieta che questo eseguibile abbia poi comportamenti diversi a seconda dei casi (l'ID unico assegnato dal server a ogni giocatore può essere usato per discriminare questi comportamenti). Allo stesso modo, non è possibile mandare in esecuzione altri processi, distinti dall' | ||
+ | |||
+ | **Ma come faccio a essere sicuro che i pacchetti che mando arrivino al server coi tempi " | ||
+ | \\ | ||
+ | Non puoi. È nella natura della programmazione di rete il fatto che, nella maggior parte dei casi, non è possibile dare garanzie statiche sui tempi di consegna dei pacchetti (e anche laddove la rete lo consentirebbe, |