lpr-a:progetto
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
| lpr-a:progetto [18/12/2009 alle 15:40 (16 anni fa)] – Vincenzo Gervasi | lpr-a:progetto [26/01/2010 alle 18:26 (16 anni fa)] (versione attuale) – Ancora FAQ Vincenzo Gervasi | ||
|---|---|---|---|
| Linea 1: | Linea 1: | ||
| ====== Progetto ====== | ====== Progetto ====== | ||
| - | + | ||
| - | **__Pagina provvisoria__** | + | Questa pagina descrive il **I Progetto di LPR 2009/ |
| ===== Descrizione del gioco ===== | ===== Descrizione del gioco ===== | ||
| 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, | ||
lpr-a/progetto.1261150840.txt.gz · Ultima modifica: 18/12/2009 alle 15:40 (16 anni fa) da Vincenzo Gervasi
