I database relazionali in questi giorni vengono eliminati per essere inefficienti, ma quando si memorizza il tipo di log di cui si sta parlando, non è davvero necessaria efficienza perché non saranno costantemente accessibili dal gioco o dai suoi utenti - solo il tuo team avrà bisogno per leggere i dati.
Quindi "l'efficienza" non ha molta importanza. Ciò che conta di più è ordinare i dati in modo da rendere semplice la storia di ciò che gli utenti stanno facendo nel gioco. I tuoi sviluppatori dovranno generalmente consumare questi dati e visualizzarli in un'interfaccia che è facile da leggere per gli analisti e gli analisti a volte dovranno interrogare i dati per approfondire il comportamento degli utenti. Ad esempio, se i giocatori acquistano un determinato articolo prima di un aggiornamento, ma smettono di acquistarlo dopo un aggiornamento, un analista trarrà vantaggio scrivendo alcune query che espongono determinati numeri sul comportamento che circonda quell'acquisto per determinare perché gli utenti non lo acquistano più. È meglio se hanno un linguaggio di query standard con cui lavorare è ben documentato. Se devono trasformare queste query in un formato binario personalizzato, i loro lavori diventeranno MOLTO più difficili,
Generalmente gli eventi di gioco sembrano simili a questo (questo è il formato di DeltaDNA in particolare)
{
"eventName":"specific event code – eg. gameStarted",
"userID":"ABCD1-4321a879b185fcb9c6ca27abc5387e914",
"sessionID":"4879bf37-8566-46ce-9f3b-bd18d6ac614e",
"eventTimestamp":"yyyy-mm-dd hh:mm:ss.SSS",
"eventParams":
{
"platform":"WEB",
"param1":"stringParam",
"param2":true,
"param3":1234,
"param4":["a","b","c"]
},
}
L'evento di solito include un nome di evento, un ID utente, un ID di sessione, data e ora e parametri che consentono di registrare tutti i dati che ritieni utili per registrare intorno a quell'evento. E nella mia esperienza, i formati di database relazionali sono i migliori per la registrazione di una tale struttura.