Какую роль играет развитие событий в играх?

9

Большая часть разработки приложений основана на разработке с событиями, но с учетом стиля разработки игр в игровом цикле и (часто) потребности в высокой производительности / пропускной способности, какую роль играет разработка с использованием событий и каковы компромиссы? Оказывает ли часто задействованная синхронизация / блокировка большее влияние?

Например: - Как сетевой [слой] уведомляет игровой цикл о полученных данных? - Как физическая система оповещает о столкновениях

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

Стивен Эверс
источник

Ответы:

5

Система событий является мощной и может быть сделана очень быстро.

Они также позволяют вам модулировать разделы кода в очень слабой структуре связи. Они позволяют вам задавать задачи и выполнять задачи. Хорошо работает с многоядерными и асинхронными функциями.

Физика - Столкновения, обратные вызовы, объекты активации или отдыха хорошо транслируются в события. Сетевое взаимодействие - как можно больше должно быть событием (голосовой чат и т. Д. Исключение). Game Logic - Естественно, подходит для модели событий. Меню и пользовательский интерфейс - Блестящая работа в системе, основанной на событиях.

Также многие современные консоли и промежуточные библиотеки используют события.

Рендерер и опрос устройств ввода могут быть немного запутанными, особенно если вы используете элементы управления движением, поскольку события могут вносить заметную задержку и быть не интуитивно понятными формату опроса.

Kimau
источник
4

Я бы сказал, что по-прежнему рекомендуется использовать стиль основного цикла: он быстрый, он дает вам полный контроль над порядком действий (это важно в игре) и сложнее делать ошибки при его кодировании. Однако, если используемая технология позволяет легко использовать события, она может быть действительно полезна для многих вещей. Например, я использую их, чтобы уведомить, когда и где умирают враги, когда нажимаются клавиши клавиатуры ...

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

miguelSantirso
источник
Я не согласен с тем, что рекомендуется стиль основного цикла. Игры в стиле основного цикла проигрывают хорошо написанной управляемой событиями игре в нескольких областях: 1) в многозадачной системе они потребляют чрезмерно большое количество процессора для фиксированного набора функций, 2) на портативных устройствах, даже на одном - в системах задач использование дополнительного процессора отрицательно сказывается на времени автономной работы; 3) чем проще игра, тем больше эти проблемы по сравнению с правильной игрой, управляемой событиями.
Сэм Харвелл