/ / Як організувати ігровий движок - c ++, oop, winapi, directx, game-engine

Як організувати ігровий движок - c ++, op, winapi, directx, game-engine

Я працюю над невеликим ігровим двигуном, і у мене виникли проблеми.

Поки що у мене є клас вікон, який є обгорткоюдля вікна Win32 У мене також є клас менеджера вікон (це "клас одиночки"), який управляє створенням вікон та обробкою вікон повідомленнями. Потім у мене є клас двигуна, який поки що є найважливішим класом, оскільки це інтерфейс для Цей клас двигуна містить основний цикл і пристрій direct3d, а також код для його створення та знищення. Цей клас двигунів також містить об'єкт класу Window, який виконує функції головного / головного вікна для пристрою direct3d.

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

Тому я не впевнений, чи повинен я мати клас Graphics усередині класу Window, або клас Window всередині класу Graphics, або мати їх поряд з собою в основному класі Engine.

Відповіді:

4 для відповіді № 1

Ви живете в світі, керованому подіями, тому використовуйте події. Нехай ваша обгортка вікон надає події, на які ігровий движок може підключити та реагувати.


1 для відповіді № 2

Не перетворюйте об'єкт, який керує тим, як ваш ігровий движок взаємодіє з базовою операційною системою, дочірнім об'єктом двигуна. Шар ОС повинен керувати двигуном, а не навпаки.

(Більшість двигунів і програмістів трапляються неправильно, до речі.)


1 для відповіді № 3

Чи будете у вас колись декілька Windows? Все більше мультимоніторів все більше використовують для різноманітних ігор.

Чи будете ви коли-небудь запускати кілька графічних зображень в одному вікні? Досить малоймовірно. Це підказує мені, що Вікно має бути у графіці, а не навпаки.