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:45 (16 anni fa)] – Vincenzo Gervasi | lpr-a:progetto [26/01/2010 alle 18:26 (16 anni fa)] (versione attuale) – Ancora FAQ Vincenzo Gervasi | ||
|---|---|---|---|
| Linea 54: | 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 60: | 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 67: | 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 77: | 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 90: | 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 ===== | ===== Requisiti generali e modalità di consegna ===== | ||
| Linea 119: | Linea 115: | ||
| verranno ammessi, e lo studente dovrà svolgere un nuovo progetto che verrà pubblicato successivamente. | verranno ammessi, e lo studente dovrà svolgere un nuovo progetto che verrà pubblicato successivamente. | ||
| - | I progetti sottomessi verranno testati durante un evento pubblico | + | I progetti sottomessi verranno testati durante un evento pubblico |
| - | mese di gennaio | + | |
| - | con tutti gli altri (eventualmente, | + | |
| ===== Suggerimenti finali ===== | ===== Suggerimenti finali ===== | ||
| Linea 128: | 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 ===== | ===== FAQ ===== | ||
| - | (In questa sezione verranno raccolte le risposte alle domande | + | **È 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 | ||
| + | \\ | ||
| + | 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 | ||
| + | \\ | ||
| + | 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.1261151136.txt.gz · Ultima modifica: 18/12/2009 alle 15:45 (16 anni fa) da Vincenzo Gervasi
