Игровой цикл
Это понятие впервые встречается на программе «Электроника, программирование и инженерная практика» — примерно 13-14 лет (7-8 класс).
Игра без остановки повторяет одно и то же: считывает управление, двигает мир, рисует кадр — и так снова и снова, много раз в секунду.
Мультик-блокнот, который сам рисует и листает страницы без перерыва: пока листаешь — картинка живёт.
Разбить любимую игру на три повторяющихся шага — что игра читает, что меняет, что рисует — и показать, что они идут по кругу.
Главный цикл программы-игры: пока игра запущена, она повторяет три шага — обработать ввод (клавиши, геймпад), обновить состояние мира (движение, столкновения, счёт), отрисовать кадр. Один оборот — один кадр; при 60 FPS цикл прокручивается 60 раз в секунду. Остановился цикл — игра «зависла».
В Scratch собрать цикл «всегда»: внутри читать нажатия стрелок и менять координаты спрайта; убрать блок «всегда» и объяснить, почему герой перестал двигаться.
Бесконечный цикл, ведущий игру: ввод → обновление логики и физики → рендер, каждый кадр. Ключевая проблема — привязка ко времени: если двигать объекты на фиксированный шаг за кадр, на быстром компьютере игра ускорится. Поэтому скорость умножают на delta-time (длительность прошлого кадра) либо считают физику фиксированным шагом, а картинку интерполируют. В движках цикл скрыт: Unity сам зовёт Update() каждый кадр и FixedUpdate() для физики. Долгий кадр тормозит весь цикл — отсюда просадки FPS.
В Unity задать движение объекта в Update через скорость, умноженную на Time.deltaTime, и убедиться, что объект проходит путь за одно время при 30 и при 60 FPS.
Частое заблуждение
«Игра просто ждёт, пока игрок что-то нажмёт». Нет: игра крутит цикл десятки раз в секунду и обновляет мир постоянно, даже когда никто не трогает управление.