Секреты паузы в играх: скриншоты, пустые комнаты и остановка времени

Разработчики раскрыли, как на самом деле работает пауза в видеоиграх — от полной остановки времени до скрытых скриншотов и пустых комнат.

Источник фото: ru.freepik.com

Кажется, что пауза — это просто: «останови время». Но на деле программисты идут на удивительные, а порой и откровенно странные ухищрения, чтобы эта привычная функция работала без сбоев. О своих секретах они рассказали на портале Shazoo.

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

Некоторые студии идут ещё хитрее. Вместо полной остановки они замедляют время до невероятно малых значений. Настолько, что одна игровая секунда растягивается на годы реальной жизни. Зачем такие сложности? Оказывается, некоторые игровые движки (движки — это «моторы», на которых работают игры) могут некорректно вести себя при абсолютном нуле. Замедление — это обходной манёвр, чтобы не ловить баги.

Но самый удивительный метод — со скриншотом. В момент паузы игра делает снимок экрана. Затем этот скриншот используется как фон меню. А сам игровой мир в это время… вообще перестаёт отрисовываться. Более того, персонажа могут незаметно для игрока телепортировать в пустую тестовую комнату. Это делается для экономии ресурсов компьютера или консоли. При выходе из паузы всё возвращается на места — враги, пули, взрывы. Игрок ничего не замечает.

А ведь есть ещё разные виды паузы. Нажатие кнопки Start — одно. Отключение контроллера — другое. Сворачивание игры на консоли — третье. Каждый из этих сценариев работает по-своему. И если разработчик не учтёт какой-то из них, игра может вылететь, потерять звук или «зависнуть» намертво.

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

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