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:45 (14 anni fa)] Vincenzo Gervasi |
lpr-a:progetto [26/01/2010 alle 18:26 (14 anni fa)] (versione attuale) Vincenzo Gervasi Ancora FAQ |
||
---|---|---|---|
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, |