Как написать основной цикл игры? [закрыто]

Как написать основной цикл игры? Какие вещи вы должны делать в игровом цикле и какие вещи вы не должны делать в игровом цикле?

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

125 голосов | спросил hokiecsgrad 17 J000000Saturday10 2010, 03:18:28

3 ответа


117

Основной игровой цикл обрабатывает три основные задачи:

  1. Получить пользовательский ввод
  2. Обновить состояние игры
  3. Нарисуйте игру

Простой игровой цикл просто объединяет эти три задачи в один цикл. Это приводит к некоторым нежелательным результатам:

  1. Игра работает с разной скоростью на разных компьютерах.
  2. CPU (может быть бесполезно) привязан к 100% использованию.
  3. «Состояние игры» /меню отсутствуют или смешаны с кодом игры.
  4. Основной игровой цикл очень длинный и сложный для поддержания.
  5. Код трудно распространять /переносить на другие платформы.

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

Для отличного примера игрового цикла взгляните на демо-игру Allegro skater:

  • Код цикла игры находится в framewk.c .
  • Просмотрите полный исходный код здесь .

Игровые петли часто выполняют один и тот же тип работы для большинства игр, поэтому я думал о способе создания обобщенной игровой среды. Лучше написать одну реализацию игрового цикла и делиться им между играми. Это экономит работу при создании новой игры, а улучшения общего игрового цикла могут использоваться всеми играми (например, добавление FPS-счетчика или функция захвата экрана).

ответил Leftium 17 J000000Saturday10 2010, 04:40:28
49

Я бы рекомендовал статью Гленна Фидлера о надежной независимости кадров, « Исправить вашу временную шкалу! "

(Менее релевантный теме, но другие статьи в серии также неплохие - как и все на его сайте!)

ответил Neverender 17 J000000Saturday10 2010, 04:10:51
4

Если вы хотите работать с игровыми циклами, я бы посоветовал прочитать эту старую статью о gamasutra о многопоточных архитектурах игровых движков. Он имеет дело с несколькими различными способами написания игрового цикла.

http://www.gamasutra.com/view/feature/1830/multithreaded_game_engine_.php

ответил Nikwin 26 J000000Monday10 2010, 18:04:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132