Al momento, ho un sistema in atto in cui registro uno stato di gamepad in una struttura e lo memorizzo in una lista di stati per registrare l'input per la durata di un videogioco. Lo stato completo del pad occupa 192 bit per frame, ma questo è un po 'dispendioso. Ad esempio, se i trigger analogici sul pad non vengono premuti, continuano a essere caricati fino a 32 bit ciascuno. Quindi ovviamente sto cercando di risparmiare un po 'di spazio.Un modo per evitare sprechi di memoria
Avevo provato a impostarlo su NULL ma sembra che non abbia alcun effetto sulla dimensione del file binario che il sistema salva alla fine della partita.
Quali alternative sono disponibili in una situazione in cui è necessario registrare o salvare determinati valori ma mantenere l'integrità di una struttura dati?
EDIT:
Credo di aver trovato una soluzione; di sorta. In precedenza ho provato a impostare valori su NULL sostituendo il float standard con System.Nullable nella struct. La mia idea è che l'impostazione su un valore NULL nella struct sarà serializzata molto più piccola. Ho l'impressione che NULL sia registrato come 4 bit. Potrebbe essere di più, probabilmente lo è. Ad ogni modo, il codice che ho avuto in precedenza ha avuto un errore piuttosto evidente, quindi sono tornato indietro e l'ho riparato di nuovo. Ora sto ottenendo ripetizioni molto più piccole e la precisione sembra essere altrettanto buona, quindi presumo che l'inganno NULL stia facendo qualcosa di appropriato.
Il problema che ho avuto con la scrittura periodica è che sto salvando un file binario. Posso usare la modalità Append per scrivere sul file ma non viene riprodotto correttamente; si ferma nel punto in cui si verifica la prima scrittura e successivamente non riproduce nulla. Inoltre, ho trovato che il file allegato era enorme. Questo è ancora molto lavoro in corso; Sto solo cercando di appianare i nodi uno alla volta. –
Qualcosa come la funzionalità di replay è un lavoro noioso, perché gli errori più semplici mettono a posto tutto il resto. Se hai problemi con lo stream e scrivi cose su disco, interlaccia il tuo flusso di dati con informazioni sui metadati e di debug, sarà molto utile per rilevare i problemi. Se sei molto desideroso di quello che metti in quel flusso, la quantità di dati si accumulerà molto rapidamente, sono 60 FPS ma hai bisogno di eseguire il tuo loop di input di gioco anche a quella velocità? Spesso un approccio input bufferizzato con una frequenza inferiore produce risultati altrettanto buoni ma a un costo inferiore. –
Il sistema che sto facendo al momento è in realtà una prova di concetto che sto mettendo insieme per la mia tesi. Il metodo di registrazione che ho al momento funziona bene, ma ovviamente ci sono miglioramenti che potrebbero essere fatti e discussi sull'argomento. Sfortunatamente, la registrazione di input per i replay, almeno da una prospettiva di gioco, sono pochi e distanti tra loro e quello che ho trovato è stato piuttosto vago, quindi sono stato pugnalato selvaggiamente nell'oscurità. Avrò un'occhiata riducendo la velocità dell'aggiornamento del gioco; grazie per l'idea –