/ / Как да организираме игрален двигател - c ++, oop, winapi, directx, игрален двигател

Как да организираме игрова машина - c ++, oop, winapi, directx, игра-двигател

Работя върху малък двигател за игри и съм срещал проблем.

Досега имам клас прозорец, който е обвивказа прозорец Win32. Аз също имам клас на Window Manager (това е "singleton class"), който управлява създаването на прозорци и обработката на прозорци. След това имам класа на двигателя, който досега е най-важният клас, тъй като той е интерфейсът за Този клас двигатели съдържа главния контур и директното устройство, както и кода за създаване и унищожаване.Този клас двигател също съдържа прозорец за клас на прозореца, който действа като прозорец главен / хост на устройството direct3d.

Моят проблем е, че двигателят трябва да реагиранякои от съобщенията в Windows (като WM_SIZE или WM_ACTIVATEAPP), но поддръжката на съобщенията е част от класа Widnow, който е "ниво" под класа Engine. Също така мисля, че трябва да създам друг клас, който да включи рендерирането / графика на двигателя и след това да го добави към главния клас двигатели.

Така че не съм сигурен дали трябва да имам Графика в клас прозорец или Клас на прозореца в класа Графика или да ги имам един до друг в един главен клас на двигателя.

Отговори:

4 за отговор № 1

Ти живееш в свят, провокиран от събития, така че използвайте събития. Нека прозорецът ви обгръща събития, които двигателят на играта може да захване и да реагира.


1 за отговор № 2

Не правете обекта, който контролира взаимодействието на игралния ви двигател с основната операционна система, дете на обекта на двигателя. Слоят на операционната система трябва да задвижва двигателя, а не обратно.

(Повечето двигатели и програмисти се разбират погрешно.


1 за отговор № 3

Ще имате ли няколко Windows? Все по-често мулти-мониторът се използва повече за различни игри.

Ще имате ли някога няколко графики на един прозорец? Много малко вероятно. Това ми подсказва, че Window трябва да бъде в графиката, а не обратното.