/ / Come organizzare un motore di gioco - c ++, oop, winapi, directx, game-engine

Come organizzare un motore di gioco - c ++, oop, winapi, directx, game-engine

Sto lavorando su un piccolo motore di gioco e ho riscontrato un problema.

Finora, ho una classe di finestre che è un wrapperper una finestra Win32. Ho anche una classe Window Manager (è una classe singleton) che gestisce la creazione di windows e la gestione dei messaggi di Windows, quindi ho una classe del motore, che è finora la classe più importante, poiché è l'interfaccia per motore Questa classe motore contiene il ciclo principale e il dispositivo direct3d, nonché il codice per crearlo e distruggerlo.Questa classe motore contiene anche un oggetto classe Window, che funge da finestra principale / host per il dispositivo direct3d.

Il mio problema è che il motore deve reagirealcuni dei messaggi di Windows (come WM_SIZE o WM_ACTIVATEAPP), ma il gestore dei messaggi fa parte della classe Widnow, che è un "livello" sotto la classe del motore. Penso anche che dovrei creare un'altra classe per incapsulare il rendering / la grafica del motore, e quindi aggiungere quella classe alla classe del motore principale.

Quindi non sono sicuro se dovrei avere una classe Graphics all'interno di una classe Window, o una classe Window all'interno di una classe Graphics, o averli affiancati in una classe motore principale.

risposte:

4 per risposta № 1

Stai vivendo in un mondo guidato dagli eventi, quindi usa gli eventi: il tuo wrapper per finestre fornisce eventi a cui il motore di gioco può agganciare e reagire.


1 per risposta № 2

Non rendere l'oggetto che controlla il modo in cui il tuo motore di gioco interagisce con il sistema operativo sottostante figlio dell'inventore del motore. Lo strato OS dovrebbe guidare il motore, non viceversa.

(La maggior parte dei motori e dei programmatori sbagliano, incidentalmente.)


1 per risposta № 3

Avrai mai più Windows? Sempre più spesso, il multi-monitor sta diventando più utile per una varietà di giochi.

Avrai mai più grafica su una finestra? Abbastanza improbabile. Questo mi suggerisce che Window dovrebbe essere in Graphics, non il contrario.