Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 07-02-2006, 13:23   #1
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
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.
Jocchan è offline  
Old 07-02-2006, 14:01   #2
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
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
...
Giusto per avere un esempio pratico:

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

...
Le azioni per ogni gameTurn sono semplici stringhe.

Ciao
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.

Ultima modifica di VICIUS : 16-02-2006 alle 21:17.
Jocchan è offline  
Old 07-02-2006, 14:01   #3
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
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.
Jocchan è offline  
Old 07-02-2006, 16:58   #4
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
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??
__________________
Software engineer
Bonfo's Blog
Bonfo è offline  
Old 07-02-2006, 17:24   #5
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da Bonfo
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??
Uhm ma in questo modo non puoi rappresentare la pressione e il rilascio di un tasto nello stesso gameturn oppure la ripetizione piu volte dello stesso tasto.

ciao
VICIUS è offline  
Old 07-02-2006, 19:25   #6
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
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.
Jocchan è offline  
Old 07-02-2006, 20:44   #7
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline  
Old 07-02-2006, 21:03   #8
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da VICIUS
Uhm ma in questo modo non puoi rappresentare la pressione e il rilascio di un tasto nello stesso gameturn oppure la ripetizione piu volte dello stesso tasto.

ciao
non penso sia possibile, visto che la Game.processInput() viene eseguita una volta per Game.gameLoop()

in teoria uno potrebbe premere e rilasciare un tasto senza che gridController se ne accorga
thebol è offline  
Old 07-02-2006, 21:06   #9
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
il gameTurn del movimento puo essere utile per ricostruire la "storia" della partita.
thebol è offline  
Old 07-02-2006, 22:18   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da thebol
il gameTurn del movimento puo essere utile per ricostruire la "storia" della partita.
Ma se su ogni riga ho un gameturn è ovvio che il gameturn è l'indice della riga

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...
cionci è offline  
Old 07-02-2006, 23:40   #11
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
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?? )
__________________
Software engineer
Bonfo's Blog
Bonfo è offline  
Old 07-02-2006, 23:41   #12
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Bisogna anche dire che sono solo 20ms...

...però non si sa mai.
__________________
Software engineer
Bonfo's Blog
Bonfo è offline  
Old 08-02-2006, 07:01   #13
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da cionci
Ma se su ogni riga ho un gameturn è ovvio che il gameturn è l'indice della riga
si, ma in questa maniera scrivi anche gameturn in cui nn è successo niente, che si potrebbero nn scrivere(sono cmq 2 soluzioni complementari)


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...
[/quote]

nn zo, sarebbe bello fare un test alzando il rate del loop in Game
thebol è offline  
Old 08-02-2006, 08:04   #14
cionci
Senior Member
 
L'Avatar di cionci
 
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 ?!!?
cionci è offline  
Old 08-02-2006, 08:19   #15
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Quote:
Originariamente inviato da thebol
si, ma in questa maniera scrivi anche gameturn in cui nn è successo niente, che si potrebbero nn scrivere(sono cmq 2 soluzioni complementari)
Esatto. Loggare due timestamp identici tra loro non avrebbe senso, quindi quelli uguali verranno saltati (o avremmo 1000 righe in 20 secondi, un pò troppe per quando si va a caccia di bug).


Quote:
Originariamente inviato da cionci
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 ?!!?
Il gameturn non è altro che un livello di astrazione superiore del timer che usiamo ora. Insomma, possiamo considerarlo come una versione custom del timestamp, in un formato più intellegibile e per noi più utile (indica infatti il numero di loop trascorsi).
Quindi, avendo il gameturn, non credo serva a molto loggare il timestamp.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline  
Old 08-02-2006, 08:22   #16
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline  
Old 08-02-2006, 08:27   #17
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline  
Old 08-02-2006, 08:48   #18
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline  
Old 08-02-2006, 08:53   #19
cionci
Senior Member
 
L'Avatar di cionci
 
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.
cionci è offline  
Old 08-02-2006, 09:05   #20
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline  
 Discussione Chiusa


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Avio si prepara ai test del Dimostratore...
Space Pioneer ha annunciato le cause del...
Anthropic avrebbe nuovi antibiotici cont...
Scoperto un 'moltiplicatore nascosto' ne...
DREO: a IFA 2026 4 novità fra cui...
Slackbot genera dashboard e microsite de...
Idrogeno, nuova cella a combustibile rag...
Con la NASA fuori dai giochi, l'ESA risc...
Una falla di ChatGPT permette di estrapo...
Piano clima, 1,34 miliardi per il bonus ...
Porsche esce definitvamente da Bugatti R...
NVIDIA App aggiunge una delle funzioni p...
Come sarebbe il mondo se la luce viaggia...
Titanio, ceramica e zaffiro per HUAWEI W...
Taglio delle accise sul gasolio prorogat...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v