Основной игровой цикл решает три основные задачи:
- Получить пользовательский ввод
- Обновить состояние игры
- Нарисуй игру
Простой игровой цикл просто объединяет эти три задачи в один цикл. Это имеет некоторые нежелательные результаты:
- Игра работает на разных компьютерах с разной скоростью.
- Процессор (может быть излишне) привязан при 100% использовании.
- «Состояния игры» / меню отсутствуют или смешаны с кодом игры.
- Основной игровой цикл очень длинный и сложный в обслуживании.
- Код трудно расширять / переносить на другие платформы.
Расширенные игровые циклы решают проблемы, перечисленные выше. Вот несколько полезных статей:
Для отличного примера игрового цикла взгляните на демонстрационную игру Allegro skater:
- Код игрового цикла находится в framework.c .
- Просмотрите полный исходный код здесь .
Игровые циклы часто выполняют одинаковую работу для большинства игр, поэтому я подумал о том, как создать обобщенную игровую среду. Лучше написать одну реализацию игрового цикла и поделиться ею между играми. Это экономит работу при создании новой игры, а улучшения общего игрового цикла могут быть общими для всех игр (например, добавление счетчика FPS или функции захвата экрана).