Игровой цикл

Последнее обновление: 14.11.2015

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

Событийная модель аналогична последовательности событий, которые возникают в игре и обрабатываются определенным образом. В C# есть функционал для построения событий. Нередко с использованием событий создают простенькие игры на C# и Windows Forms / WPF, применяя графические возможности платформы .NET. Изменения состояния игровых объектов происходят лишь при возникновении каких-то событий в игре. Примерно событийную модель можно представить так: пользователь управляет некоторым персонажем, нажимает на кнопку мыши, в ответ генерируется событие, в обработчике устанавливается перемещение персонажа. Нажимает пользователь на какую-нибудь клавишу клавиатуры - возникает новое событие. В обработчике события, допустим, генерируется выстрел. И так далее - происходят события, они обрабатываются, и это приводит к изменению состояния игровых объектов.

При наличии игрового цикла игровой процесс происходит несколько иначе. Через равные промежутки времени срабатывает некий метод, который обновляет состояние игровых объектов и производит перерисовку объектов в соответствии с их новым состоянием. Пользователь также может нажимать на мышь или на клавишу клавиатуры, для перемещения персонажа. Но теперь события нажатия не возникает. В методе игрового цикла производится опрос объектов. В частности, мы узнаем не нажата ли клавиша, отвечающая за перемещение. Если она нажата, обновляем состояние объекта и перерисовываем сцену. Возникает иллюзия движения. Далее через тот же промежуток опять срабатывает метод игрового цикла, и снова производится опрос игровых объектов.

Платформа MonoGame работает по модели игрового цикла. Схематично игровой процесс в MonoGame можно представить следующим образом:

Игровой цикл в MonoGame
  1. В методе Initialize() происходит инициализация объектов, начального состояния игры.

  2. Затем методе LoadContent() в приложение загружаются различные ресурсы: картинки, аудиофайлы, модели и т.д.

  3. Затем собственно начинается игровой цикл. С периодичностью 60 раз в секунду вызывается метод Update(), в котором происходит опрос игровых объектов. Здесь мы узнаем, нажал ли пользователь какую-то определенную клавишу, столкнулись ли два объекта и так далее. И также здесь обновляем состояние игры.

  4. После метода Update также с периодичностью 60 раз в секунду вызывается метод Draw(). В нем перерисовывается сцена. Затем управление снова передается в метод Update. И так по кругу.

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

  6. После этого игра завершается, и приложение закрывается.

Это жизненный цикл любого приложения на MonoGame вне зависимости от типа проекта и операционной системы, под которую пишется игра.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850