Sviluppare un motore di gioco
Sto programmando un gioco per computer e il suo motore. Ci sarà un mondo tridimensionale con visuale in prima persona e per ora sarà giocatore singolo. Il linguaggio di programmazione è C ++ e utilizza OpenGL.
Decisione di progettazione centrata sui dati
La mia decisione di progettazione è quella di utilizzare un'architettura centrata sui dati in cui sono presenti un gestore eventi globale e un gestore dati globale . Esistono molti componenti come fisica, input, suono, renderer, ai, ... Ogni componente può attivare e ascoltare eventi . Inoltre, ogni componente può leggere, modificare, creare e rimuovere dati .
La domanda riguarda il gestore dei dati.
Se utilizzare un database relazionale
Dovrei usare un database SQL, ad esempio SQLite o MySQL, per archiviare i dati di gioco? Questo contiene praticamente tutti i contenuti di gioco come oggetti, personaggi, inventari, ... Tranne mesh e trame che sono ancora più legate alle prestazioni, quindi le terrò in memoria.
Un database SQL è abbastanza veloce da usarlo per leggere e scrivere in tempo reale informazioni sul gioco, come la posizione di un personaggio in movimento? Devo anche preoccuparmi della compatibilità multipiattaforma. Oltre a tenere tutto in memoria, quali alternative ho?
I vantaggi sarebbero
I vantaggi dell'utilizzo di un database relazionale come MySQL sarebbero la struttura orientata ai dati che consente un calcolo rapido. Non avrei bisogno di oggetti per rappresentare entità. Potrei facilmente interrogare i dati degli oggetti vicino al lettore necessari per il rendering. E non devo occuparmi dei dati degli oggetti lontani. Inoltre, non è necessario utilizzare i salvataggi in quanto lo stato della buca viene salvato nel database. Ultimo ma non meno importante, espandere il gioco in un gioco online sarebbe relativamente semplice perché esiste già un luogo in cui è memorizzato lo stato del gioco a buche.