Mi serviva un qualcosa per leggere i dati di gioco (tempi, distacchi, nomi dei piloti, etc...) da poter salvare su un file e dare in pasto all'app dello streaming live e.... l'ho trovato (seppur un po' complicato).
Poi, visto che poteva tornare utile anche ad altri, magari al telecronista oppure a qualche pilota oppure a qualcuno che lo vuole modificare per farsi il suo HUD di gioco personale, ho deciso di dargli un aspetto decente e di condividerlo.
Il foglio EXCEL che vi presento (
in allegato sotto) legge i dati via UDP dalla PS4 (ma anche da XBOX o PC immagino, non ho provato) mediante una connessione di rete. Se avete un PC portatile basta abilitare su questo il wireless, se avete un PC fisso... no so, forse connettendolo allo stesso router della PS4 funziona... da provare.
CARATTERISTICHE:
C'è un foglio chiamato RACE, che è quello nell'immagine sopra, e c'è un foglio chiamato DEBUG per chi volesse vedere che dati arrivano dal gioco.
-) Per iniziare a vedere i dati premete START; potete farlo quando vi pare durante una sessione di gioco ma sappiate che
se non siete in una sessione di gioco allora EXCEL si pianta aspettando dati... non ho modo al momento di evitare questo
-) Quando date START vedrete un solo piccolo contatore tra i due pulsanti con scritto "PACKET nn": questo è dovuto al fatto che il gioco spedisce 3 tipi di pacchetti, uno con i dati di telemetria (la frequenza si imposta dal gioco e va da un minimo di una a 60 volte al secondo), uno più raramente con i nomi dei primi 16 piloti e uno ancora più raro con i nomi dei piloti successivi fino a 54. Io ho limitato il numero gestibile dal foglio a 32.
-) Quando il foglio Excel riceve finalmente i dati dei primi 16 piloti (e questo avviene più spesso all'inizio di una sessione e all'inizio di un nuovo giro del primo in classifica), allora il contatore scompare e appaiono i dati. Quando Excel riceverà anche il terzo tipo di pacchetto allora la lista di nomi dei piloti sarà completa ma già intanto i dati di telemetria arrivano.
-) il gioco fornisce alcune informazioni e altre no. Ad esempio da la distanza in metri percorsa nel giro (quindi si può calcolare il distacco in metri tra i piloti) ma non il distacco in secondi. Questo calcolo l'ho impostato io ma è approssimativo, ci sono grosse variazioni di settore in settore. Ci sarebbe un modo per averlo preciso ma bisognerebbe inserire un sacco di timer oppure essere certi che chi usa il foglio lo faccia dall'inizio della sessione di gara... per ora la cosa non mi interessa vista la complessità.
-) Il gioco fornisce i tempi dei singoli settori ma non il tempo dell'ultimo giro... e se un pilota va ai box viene fuori un calcolo un po' farlocco, dipende dalla pista.
-) Il gioco fornisce il dato del miglior giro ma solo per i primi 16 piloti e solo ogni tanto. Quello che vedete è frutto di calcoli interni che, quando è possibile, vengono confrontati con i dati forniti dal gioco.
-) in ogni caso la posizione in classifica è data dal gioco, qualsiasi sia la sessione di gioco, test qualifiche o gara.
-) il timer del tempo rimanente è preciso e non vale per la gara... ma anche lui si azzera quando mancano 30 secondi... vai a capire perchè.
-) i dati si azzerano automaticamente quando passate da una sessione di gioco alla successiva. Ad esempio in qualifica vedete i tempi ma non i distacchi in metri, poi in gara si azzera tutto e vedrete anche i distacchi
-) il campo (+/-) è la differenza di tempo sul giro rispetto al pilota che precede: in qualifica si basa sul miglior giro (tempo di qualifica) mentre in gara si basa sull'ultimo giro effettuato... tanto per capire se uno si avvicina o si allontana.
-) il campo BOX si attiva quando la posizione in pista del pilota è costante. Questo può accadere solo se siete ai box mentre se fate un incidente comunque un minimo vi muovete
-) con il mio PC e con la mia rete wireless io riesco a leggere all'incirca1-2 info al secondo, mentre nella fase iniziale di ricerca del pacchetto con i nomi dei piloti anche 3-4 quindi direi che bisogna settare l'UDP della PS4 almeno a 8 (ovvero un pacchetto ogni 200ms, 5 al secondo)
NOTA BENE
Quando chiudete il foglio excel i dati di GARA sono cambiati e quindi Excel vi chiederà se volete salvare. Fate come vi pare tanto le funzionalità del foglio non cambiano... in ogni caso la tavola dei dati verrà resettata quando partirà una nuova sessione di gara la prossima volta che usate il foglio.
NOTA BENE
Non ho eseguito prove online e quelle offline le ho fatte solo su 2 circuiti quindi potrebbe darsi che su certi circuiti dia qualche errore come puo' darsi che online ci siano problemi come ad esempio quando un giocatore esce dalla stanza durante una sessione di gioco.
Sono tutte cose che dovrei sperimentare ma non l'ho fatto per ora.
Avere dei feedback sarebbe una manna
STRA-NOTA BENE
Ovviamente dovete abilitare su Project CARS la trasmissione dei dati UDP.
Non sapete come farlo? eh no dai... ora basta
L'installazione è un po' rognosa perchè il foglio Excel non riesce a fare tutto da solo (o meglio io non sono riuscito a farglielo fare) e si appoggia a una .DLL esterna che va installata sul PC... UNA VOLTA SOLA.
Procedura di installazione della DLL:
1) estraete dal file ZIP i due file
ClassTest4Excel.dll e
ClassTest4Excel.tlb
2) create una nuova cartella in C: (non createla all'interno di altre cartelle speciali tipo quelle di WINDOWS), diciamo
C:\BAX
3) copiate i due file estratti nella cartella BAX
4) verificate che sulla vostra versione di WINDOWS ci sia la cartella
C:\Windows\Microsoft.Net\Framework\v4.0.30319\. Se non c'è questa versione del Framework annotatevi quale versione avete perchè nel comando che specifico dopo dovrete usare il nome della cartella con il numero più alto (cioè la versione più recente installata sul vostro PC).
5) aprite la schermata di PROMPT DEI COMANDI (quella nera in cui si scrive in DOS) con i privilegi di amministratore del PC (cliccate il tasto destro del mouse sull'icona del COMMAND PROMPT e vi sarà offerta la scelta "ESEGUI COME AMMINISTRATORE", a meno che non siate già loggati come amministratore)
6) nella schermata di PROMPT DEI COMANDI scrivete:
CD C:\BAX\ e premete ENTER
7) a questo punto l'ultima riga dovrebbe riportare una scritta tipo C:\BAX\ o qualcosa di simile... avete semplicemente Cambiato Directory (cartella)
8) ora dovete registrare la DLL scrivendo il comando:
C:\Windows\Microsoft.Net\Framework\v4.0.30319\RegAsm ClassTest4Excel.dll /tlb:ClassTest4Excel.tlb /registered /codebase e premete ENTER
9) se non si hanno messaggi di errore allora potete chiudere la schermata di PROMPT DEI COMANDI
10)... metà del lavoro è fatto
11) estraete dal file ZIP il file EXCEL e mettetelo dove vi pare, anche nella stessa cartella
C:\BAX creata prima
12) aprite il foglio EXCEL e abilitate le macro (ve lo chiede con un pulsante in alto)
13) ora dobbiamo dire ad EXCEL che utilizzi la DLL e quindi dobbiamo aggiungerla alla lista delle sue REFERENCES ...scusatemi ma ho EXCEL in lingua inglese
14) bisogna entrare nell'editor del VBA. Se non sapete come farlo ecco i passaggi:
15) nella riga di menu in alto scegliete VIEW
16) a destra c'è un pulsante MACRO. Lo premete e scegliete la prima voce in alto VIEW MACROS, poi cliccate su una macro a caso e cliccate su EDIT (MODIFICA)
17) dovrebbe essersi aperta una seconda finestra con sfondo bianco e dentro il codice VBA... non toccatelo... se non sapete cosa fare.
18) nella riga di menu in alto scegliete TOOLS e poi la prima voce in alto REFERENCES
19) vi si apre una lista di DLL in cui alcune voci sono spuntate e molte altre no. Cercate la voce
ClassTest4Excel e spuntatela. Premete OK e chiudete la finestra del codice VBA
20) fatto... non lo dovrete fare mai più... nemmeno se il foglio EXCEL verrà aggiornate