Какова хорошая структура для создания игр?

Я начинаю разработку игры, но действительно не хочу собирать пошаговую игру. Я думаю, какая хорошая система для обработки всего, что происходит?

Например, я подумал о создании класса меню, который содержит массив объектов для кнопок в меню, а затем каждый игровой цикл вызывает update() в меню, которое, в свою очередь, вызывает update() для всех кнопок, передавая пользователю ввод и тому подобное по пути. Это хороший способ сделать это?

Я пытаюсь найти структурные методы за игровым циклом, любые советы будут оценены. Спасибо!

(Кстати, я использую С++)


person Cole    schedule 12.02.2012    source источник


Ответы (1)


Этот вопрос не такой тривиальный, но позвольте мне попытаться дать вам очень простой ответ. Вам нужна как минимум базовая архитектура, в которой вы можете зарегистрировать несколько движков. Подробно изучите конечные автоматы и несколько шаблонов программного обеспечения. Были действительно замечательные книги по разработке игр, такие как Game Programming Gems. Начните читать старую книгу Андре Ламота. Читать исходный код, т.е. из Half Life 2, которую можно было скачать в некоторых местах.

Конечно, это зависит от среды, C++ лучше и может быть самым быстрым способом написания игр, но хотите ли вы использовать DirectX или OpenGL, вам нужен звук и расширенный ввод? Вы хотите начать со старой версии WinApi? Тем не менее, он всегда начинается в одной точке, в основном цикле. Там должен быть инициализирован ваш конечный автомат и настроены все менеджеры ресурсов. Для графических объектов вам нужно подумать о низкоуровневом цикле инициализации, обновления, рисования, выпуска и уничтожения. Пользовательский интерфейс построен на графике, вводе и других частях. Не начинайте писать свой собственный пользовательский интерфейс, иначе вам придется потратить на него следующие 2 года. Вам нужна реляционная игровая модель, описывающая мир, который вы хотите создать.

Честно говоря, много читал о паттернах (например, mvc), конечных автоматах, конвейерах GPU и дизайне фреймворка. Прочитайте много кода от очень талантливых людей, которые открыли его для нас :)

Кстати, что такое пошаговая игра?

person Frank Szilinski    schedule 12.02.2012
comment
Спасибо за советы. Я не знал, что HL2 с открытым исходным кодом. Под «шагом» я подразумевал ручное написание кода и редактирование игрового цикла, чтобы что-то произошло, в отличие от создания нового класса с помощью одного регистрационного вызова, который подключает его к остальной части кода. - person Cole; 13.02.2012
comment
HL2 не имеет открытого исходного кода, но вы найдете код. Это было в далеком 2003 году, когда нехорошие люди украли источник у Valve. Но для нас это действительно хорошее место, чтобы узнать общую картину игровой архитектуры. - person Frank Szilinski; 13.02.2012