Зачем игровому циклу собственные часы
Типичный цикл событий ждёт клика или клавиши, а игровой цикл продолжает работу без ввода. На каждом проходе он забирает ввод, обновляет ИИ и физику, затем рисует кадр. Поэтому анимация, музыка и противники не замирают, пока игрок ничего не нажимает.
Если выполнять цикл с максимальной скоростью, темп симуляции начнёт зависеть от процессора и нагрузки кадра. При 60 кадрах в секунду на проход остаётся около 16 миллисекунд. Пауза после быстрого кадра не даст игре разогнаться, но не поможет, если обновление и отрисовка уже превысили этот бюджет.
В главе Game Loop книги Game Programming Patterns разобраны варианты цикла, его согласование с циклом событий платформы и граница между движком и библиотекой. Движок сам владеет циклом и вызывает ваш код, а библиотеку вызывает ваш цикл.
Post #2079
284