|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
[CICLO 10] Storia 2
Storia: Definizione del gameturn, un intero incrementato di 1 alla fine di ogni loop in Game (ovvero ogni 20 millisecondi). Ogni valore in millisecondi presente nel codice del gioco dovrà essere convertito in gameturn.
Introduzione di un sistema di logging degli eventi, che salvi su file ogni pressione e rilascio dei vari tasti, insieme al relativo gameturn. Punti cardine da tenere a mente durante i lavori: * Mai fare a gara a chi finisce il task per primo, meglio procedere con calma, altrimenti perderemo molto più tempo in seguito * Evitiamo di complicarci la vita, esiste di certo una soluzione più semplice di quella che abbiamo pensato di implementare * MAI aggiungere elementi non richiesti esplicitamente dai task: se mai serviranno, se ne parlerà nelle prossime storie * Comunichiamo il più possibile, se qualcosa non è chiaro discutiamone tutti i dettagli fino ad eliminare ogni dubbio, anche il più insignificante * Postare sempre la test list PRIMA di mettere mano al codice
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Ecco i task, come sempre di Vic:
10.2.1: VICIUS + ??: completato Separare il game loop e la logica del gioco dalla sua inizializazione in una classe esterna di nome GameLoop. Creare dei test per la nuova classe. 10.2.2: cionci + nihil84: completato Aggiungere alla nuova classe un contatore detto gameTurn che deve essere incrementato alla fine di ogni ciclo del loop (quindi ogni 20 ms). 10.2.3: cionci + nihil84: 2 giorni Creare un sistema di logging all'interno di GameLoop che scrive se specificato scrive su un file il valore del contatore gameturn e tutti gli eventi di pressione e rilascio dei tasti. Il formato del file deve essere il piu semplice possibile. COme esempio questo Codice:
seed xxxxx gameturn azione azione ... gameturn azione ... Codice:
seed 234518458724 01 ruby-topaz pair created 02 move left 05 move right rotate clockwise 11 move right mirroring 17 pair dropped diamond-emerald pair created ... Ciao ![]()
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. Ultima modifica di VICIUS : 16-02-2006 alle 21:17. |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
I task 1 e 3 sono da svolgere solo in pair programming.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Il formato del file non mi piace tanto.
A me piacerebbe di più in XML...ma so benissimo che, giustamente, lo boccierete...YANGI Forse conviene una riga con | gameturn | tasto1 (0 o 1) | tasto 2 ( 0 o 1)| ... | tastoN (0 o 1)| Esempio: 0 | 0 | 0 | .... | 0 | 1 | 0 | 1 | .... | 0 | 2 | 1 | 0 | .... | 0 | 3 | 0 | 1 | .... | 1 | .... In questo modo, leggendo riga per riga e separando con un carattere particolare, con uno stringTokenizer in 5 min si legge il Log...e nello stesso tempo si scrive. ![]() Che ne dite?? |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Esatto, i gameturn sono molto brevi ma non istantanei, quindi dobbiamo prevedere la possibilità di più eventi in ognuno.
A questo punto, direi che è molto più pratica la sintassi di Vic. Ovviamente i gameturn in cui non succede nulla (ovvero nessun tasto viene premuto e nessuno dei tasti già premuti da prima viene rilasciato) non devono essere loggati.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Io lo farei in maniera simile a quanto suggerito da Bonfo...ogni riga è un Gameturn...quindi ci rispiarmiamo il conteggio...
CODICE_TASTO TIPO_AZIONE CODICE_TASTO TIPO_AZIONE e così via per tutta la riga relativa a questo Gameturn... Semplice da gestire...basta leggere/scrivere uno \n alla fine del gameturn...e, secondo me, non c'è nemmeno bisogno di contare i gameturn... Se volete aggiungere anche il valore del gameturn (forse ho capito perchè), può essere comunque aggiunto molto semplicemente...tanto i campi sono tutti prefissati: intero|byte ed eventualmente un intero per il gameturn... |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
in teoria uno potrebbe premere e rilasciare un tasto senza che gridController se ne accorga |
|
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
il gameTurn del movimento puo essere utile per ricostruire la "storia" della partita.
|
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() Per i tasti...mi sembra che gli eventi vengano gestiti tutti, anche pressione e rilascio dellos tesso tasto all'interno dello stesso intervallo di tempo... |
|
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Bhè...il problema che volevo risolvere era la presenza della coppi CODICE_TASTO CODICE_AZIONE.
In questo modo bisogna ogni volta "parsare" il CODICE_TASTO. Con la mia proposta per gestire più avvenimenti in uno stesso gameturn si potrebbe anche fare: 3 | 1 | 0 | .... | 0 | 3 | 0 | 0 | .... | 0 | 3 | 1 | 1 | .... | 0 | Con più righe che fanno capo allo stesso gameturn. Forse, però, si complicano un po' le cose così... ![]() In ogni caso ho una domanda. Se 2 avvenimenti avvengono durante lo stesso gameturn...come facciamo poi a riprodurlo?? Ovvero se la nostra "frequenza di campionamento" è troppo bassa perdiamo di risoluzione...ovvero i 2 avvenimenti verranno riprodotti istantaneamente. Questo non può porre problemi in casi estremi?? Esempio D X XX La gemma X sta cadendo...viene premuto ( -> ) dopo che ormai D ha superato la soglia della gemma X e quindi non si muove...nel log viene registrato ( -> ). Cosa accade se tale avvenimento, quando riprodotto "istantaneamente" all'inizio del gameturn, fa si che D si riesca a spostare e si posi sopra la prima X?? (Mi sono spiegato?? ![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Bisogna anche dire che sono solo 20ms...
...però non si sa mai. |
![]() |
![]() |
#13 | ||
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
Quote:
nn zo, sarebbe bello fare un test alzando il rate del loop in Game |
||
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ora che ci penso, non credo sia sufficiente salvare il solo evento... Questo perchè manca un riferimento al timestamp...e potrebbe creare casini nelle ripetizioni... Quindi bisogna anche salvare il timestamp...
Salvando il timestamp è sempre necessario il gameturn ?!!? |
![]() |
![]() |
#15 | ||
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
Quote:
Quindi, avendo il gameturn, non credo serva a molto loggare il timestamp.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
||
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Jocchan: mi ero ftto l'idea che ci potessero essere timestamp diversi all'interno dello stesso gameturn..ora verifico come vengono inizializzati...
|
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì, in effetti possono esistere...anche se io impedirei questa cosa... Ora ci provo...
|
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
A questo punto il timestamp negli eventi mi sembra un ripetizione...
|
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No...confermo che bisgona scrivere/trasmettere anche i timestamp che tra l'altro bisognerebbe uniformare con l'intera applicazione...
Lo stato dei tasti viene letto ogni 2/3 ms...mentre vengono gestiti ogni 60 ms... Quindi bisogna ad ogni costo scrivere anche il timestamp... Ultima modifica di cionci : 08-02-2006 alle 08:56. |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Fatto... Viene usato il timer di Game anche per Input...
|
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:22.