Что такое игровой движок и зачем нужен Unity

Игра — это не магия, а набор систем, работающих в цикле. Движок даёт тебе эти системы готовыми, чтобы ты придумывал геймплей, а не велосипеды.

Суть: игровой движок — это программа, которая каждую долю секунды рисует кадр, считает физику, проверяет ввод и проигрывает звук. Unity — самый популярный движок для новичков, потому что он бесплатен для старта, работает на Windows и macOS, и под него есть тысячи уроков.

Представь, что ты хочешь сделать платформер. Без движка тебе пришлось бы вручную написать: вывод пикселей на экран, расчёт гравитации, проверку столкновений прямоугольников, загрузку и проигрывание звуков, чтение клавиатуры. Это месяцы работы ещё до того, как на экране появится прыгающий герой. Игровой движок отдаёт всё это готовым: ты говоришь «вот персонаж, у него есть физика и спрайт», а движок сам рисует, считает и сталкивает.

Unity вышел в 2005 году и стал стандартом для инди-разработки. На нём сделаны Hollow Knight, Cuphead, Among Us, Pokémon GO, Genshin Impact. Это значит, что навык переносимый: научившись на маленькой игре, ты используешь те же кнопки и те же скрипты в большом проекте.

Как работает под капотом

В сердце любой игры лежит игровой цикл (game loop). Это бесконечный цикл, который повторяется десятки раз в секунду. Каждый его проход называется кадром (frame). За один кадр движок выполняет примерно такие шаги:

Игровой цикл (выполняется ~60 раз в секунду):

  [1] Прочитать ввод   ->  нажата ли клавиша, куда мышь?
       |
  [2] Обновить логику  ->  передвинуть героя, врагов, пули
       |
  [3] Посчитать физику ->  гравитация, столкновения
       |
  [4] Нарисовать кадр  ->  вывести всё на экран
       |
       +--- вернуться к [1] ---+

Скорость цикла измеряют в FPS (frames per second). 60 FPS значит, что цикл крутится 60 раз в секунду, и один кадр длится примерно 16 миллисекунд. Если за это время движок не успел всё посчитать, игра «тормозит» — FPS падает.

Главная идея, которую важно понять сразу: игра — это симуляция в реальном времени. Ты не пишешь «нарисуй героя один раз», ты пишешь «как герой должен двигаться каждый кадр», и движок вызывает твой код снова и снова.

Давай прочувствуем кадры на простом примере. Логика «передвигать объект каждый кадр» языко-независима — вот она на Python:

fps = 60
speed = 5.0           # клеток в секунду
dt = 1.0 / fps        # длительность одного кадра в секундах
x = 0.0

for frame in range(1, 6):
    x += speed * dt   # сдвигаем на скорость * время кадра
    print(f"Кадр {frame}: x = {x:.3f}")

print(f"За {5} кадров герой прошёл {x:.3f} клетки")

Та же логика на Python ▶ — попробуй поменять fps или speed и посмотри, как меняется путь. Именно так Unity двигает объекты: умножает скорость на время кадра, чтобы движение было одинаковым на быстрых и медленных компьютерах.

Частые ошибки

  • «Движок сделает игру за меня». Нет. Движок даёт инструменты, геймплей придумываешь ты. Unity — это как кухня с плитой и ножами, но готовить блюдо всё равно тебе.
  • Сразу браться за 3D-RPG мечты. Большие проекты убивают мотивацию новичка. Начни с понга или раннера — закончить маленькую игру важнее, чем не закончить большую.
  • Игнорировать FPS. Если привязать движение к кадру без учёта времени, на мощном ПК герой улетит, а на слабом еле ползёт.

Best practices

  • Ставь Unity через Unity Hub — он управляет версиями движка и проектами в одном окне.
  • Выбирай версию с пометкой LTS (Long Term Support) — она стабильна и поддерживается годами. На момент курса это Unity 6 / 2023 LTS.
  • Заведи привычку запускать игру (кнопка Play) после каждого изменения — так ты сразу видишь результат.

Итоги: движок — это набор готовых систем (графика, физика, звук, ввод), работающих в игровом цикле по кадрам. Unity — отличный старт: бесплатный, популярный, с огромным сообществом. Главное правило новичка — двигай объекты с учётом времени кадра и доводи маленькие игры до конца.

Чуть глубже: почему именно реальное время

Кино — это записанные заранее кадры, их порядок неизменен. Игра принципиально другая: каждый следующий кадр зависит от того, что игрок сделал в предыдущем. Нажал влево — герой повернул, и движок должен пересчитать всё с учётом этого. Поэтому игра называется интерактивной симуляцией реального времени: она не проигрывает заготовку, а вычисляет мир заново 60 раз в секунду. Именно отсюда растут все остальные понятия курса — компоненты, которые движок опрашивает каждый кадр, физика, которая шагает фиксированными интервалами, ввод, который читается в начале цикла. Если держать в голове образ крутящегося цикла, остальное укладывается само собой.

Проверьте себя
1. Что такое один «кадр» (frame) в игровом цикле?
AОдин уровень игры
BОдин проход игрового цикла: ввод, логика, физика, отрисовка
CОдин спрайт на экране
DОдна секунда игрового времени
2. Почему скорость движения умножают на время кадра (dt)?
AЧтобы игра была красивее
BЧтобы движение было одинаковым на быстрых и медленных компьютерах
CЧтобы экономить память
DЭто требование C#