|
|
|
![]() |
|
Strumenti |
![]() |
#41 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Meglio andare sulla leggibilità
![]()
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
![]() |
![]() |
#42 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Vabbè...in ogni caso niente vieta di salvare anche il random seed ed usare quello per riprodurre la sequenza... Scrivere le gemme generate ci può anche stare, ma sicuramente leggerle da lì per poi riprodurre la sequenza è diversi ordini più complicato che usare il random seed
![]() |
![]() |
![]() |
#43 | |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
Certo nulla vieta di mettere anche il seed all'inizio(cosa che si puo aggiungere in caso si voglia fare riprodurre il log a Diamonds) |
|
![]() |
![]() |
#44 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Allora, se questo ci dà dei vantaggi in termini di riproducibilità, nella prima riga salveremo il seed.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
![]() |
![]() |
#45 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Potrebbe servirci per controllare se la lista delle gemme è corretta. Se vogliamo un po' di leggibilità in più basta fare cosi:
Codice:
seed 234518458724 ![]() |
![]() |
![]() |
#46 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() |
|
![]() |
![]() |
#47 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Basterebbe poter inserire manualmente il seed in modalita` debug... Con la lista dei comandi si riproduce...
|
![]() |
![]() |
#48 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
#49 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
#50 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
#51 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
IL gameturn non lo trovo una semplificazione ma una informazione superflua visto che abbiamo il timer. Con soli 20 millisecondi tra un gameturn e l'altro l'unico modo per far avvenire due eventi nello stesso è riuscire a premere più di 50 tasti nello stesso istante che è semplicemente inumano. In sostanza il file sarebbe composto da: Codice:
gameturn evento gameturn evento Anche le stringhe leggibili sono superflue. Lo sviluppatore non andrà mai a leggere direttamente il file di log per confermare la presenza del bug o fare del debugging. Come hai detto tu stesso sarà dato in pasto ai test o ad una versione per il debug del gioco quindi preferisco avere una versione più scarna ma facile da leggere. In pratica qualcosa di simile a questo: Codice:
4532184645513 00021232 left 00021245 up 00021325 mirror 00032099 clockwise ![]() ciao ![]() |
|
![]() |
![]() |
#52 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No...VICIUS...a questo punto sono contrario al timestamp... Seguite il mio discorso:
Teniamo un contatore che conta le volte che viene chiamata InputReactor.reactToInput (quindi viene incrementato una volta ogni 60ms circa)... Ora sappiamo che verrà fatta la gestione degli eventi (e qui è di fatto come se gli eventi avvenissiro tutti al momento della chiamata di reactToInput)...quindi memorizzando il contatore e gli eventi (anche le ripetizioni) riusciremo a riprodurre la sequenza esatta degli eventi... Manca solo una cosa...la GridController.update e la GridController.reactToInput non sono sincronizzate fra loro o meglio lo sono ma non strettamente... Questo potrebbe provocare sfasamenti nell'applicazione della gravità fra la sequenza riprodotta e quella originale... Basta sincronizzare strettamente GridController.update e GridController.reactToInput (ad esempio eseguendo la seconda ogni 6 volte che viene eseguita la prima)... Ecco ora abbiamo la garanzia che sia la caduta verticale che i movimenti saranno sincronizzati esattamente e la sequenza potrà essere riprodotta senza problemi... Ultima modifica di cionci : 10-02-2006 alle 19:42. |
![]() |
![]() |
#53 |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
e spostare il gameturn nell processInput()?
è qua che viene controller.reactToInput(timer)(viene fatto un update sulla keyboard è ne viene preso lo stato e in base a questo stato vengono sparati gli handler dei vari tasti); è qua che avviene effettivamente l'azione utente, percui il timestamp (imho) non serve. Serve sapere l'ennesimo ciclo di lettura degli input in cui abbiamo trovato il tasto z premuto. come ottimizzazione del traffico, si potrebbe stabilire la regola che logga il gameturn di quando il tasto viene premuto e il gameturn in cui viene rilasciato.(anche se sarebbe meglio l'evento...) per cui la struttura sarebbe [code<gameturn> <evento1 stato='i'> <evento2 stato='e'> </gameturn> [/code] ho usatlo l'xml per chiarezza ![]() |
![]() |
![]() |
#54 |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
chiamate contatore che conta le volte che viene chiamata InputReactor.reactToInput come gameturn, e io e cionci diciamo piu o meno la stessa cosa
![]() Ultima modifica di thebol : 10-02-2006 alle 19:47. |
![]() |
![]() |
#55 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
thebol: sì, ho fatto una modifica...boh...
Quote:
Direi comunque che quello che dobbiamo memorizzare siano gli eventi eseguiti (AbstractKeyEventHandler.execute)... |
|
![]() |
![]() |
#56 | |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
Codice:
public void update() { keyboard.update(); } ![]() ho solo saltato un passaggio in teoria si potrebbe modificare la reactToInput di gridController per ritornare un lista degli eventi processati a quel giro |
|
![]() |
![]() |
#57 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Come dicevo, basterebbe andare a scrivere gli eventi al momento dell'esecuzione, sarebbe la cosa più semplice...
|
![]() |
![]() |
#58 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ho spostato qualche post nella discussione sul netcode...
|
![]() |
![]() |
#59 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
#60 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sicuramente... Come dicevo basta eseguire una reactToInput ogni TOT (pari al rapporto fra InputRate e UpdateRate) update... Di fatto la reactToInput avverrà sempre prima (o dopo) dello stesso (se si contasse) update che ha generato l'input...
Faccio un esempio: Codice:
int numeroDiUpdateFraDueReactToInput = 6; if(timeStampUltimoUpdate + UpdateRate <= timeStamp) { timeStampUltimoUpdate += UpdateRate; if(timeStampUltimoReactToInput + UpdateRate * 6 <= timeStamp) { timeStampUltimoReactToInput += UpdateRate * 6; controller.reactToInput(); } controller.update(); } Ad esempio questa è la sequenza delle chiamate: Update1 Update2 Update3 Update4 Update5 ReactToInput1 -> eseguo MOVE_LEFT e scrivo nel log #1 MOVE_LEFT Update6 Update7 Update8 Update9 Update10 Update11 ReactToInput2 -> eseguo ROTATE_CCW e scrivo nel log #2 ROTATE_CCW Update12 Nella riproduezione: Update1 Update2 Update3 Update4 Update5 ReactToInput1 -> nel turno #1 devo eseguire MOVE_LEFT Update6 Update7 Update8 Update9 Update10 Update11 ReactToInput2 -> nel turno #2 devo eseguire ROTATE_CCW Update12 |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:19.