Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
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


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
Il solare diventa la prima fonte di elet...
Google Home si rinnova completamente: ar...
Dense Geometry Format (DGF): novit&agrav...
Gemini for Home arriva a ottobre sui dis...
Amazon Smart Air Quality Monitor: a soli...
Mazzata Raspberry Pi, i prezzi aumentano...
Amazon Seconda Mano - Warehouse: extra s...
Una giornata smart tra lago e montagna: ...
Google lancia le nuove Nest Camera con v...
Sembra Temu ma non è: Amazon sfid...
Svizzera, tassazione dei veicoli elettri...
Una stampante a getto di inchiostro 'lib...
Windows 11 25H2 (2025 Update): ecco la l...
Blink Mini e Outdoor 4 in super offerta:...
Fire TV Stick HD, 4K e 4K Max: streaming...
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: 15:22.


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