Как работают сохранения в видеоиграх

Представьте, что вы играете в очень интересную игру несколько часов подряд. Она удерживает ваше внимание своим интригующим сюжетом, сочным разнообразным геймплеем и ламповой графикой. Вашему герою нет равных врагов, и из любой схватки вы выходите победителем. На часах уже 2 часа ночи, вы даёте себе обещание поиграть ещё 10 минут и лечь спать.

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

Я уверен, что вы сталкивались с подобными ситуациями: игра была настолько увлекательной, что вы забывали сохраниться, а автосейв отсутствовал. Или последний сейв-поинт был очень далеко от текущего места.

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

Что такое сохранение?

Дадим определение понятию "сохранение".

Сохранение - это информация о прогрессе прохождения игры, хранящаяся на жестком диске или в облаке. Для каждого отдельного игрока это будет своя уникальная информация.

Сохранение игры так же называют сейвом или сейв-файлом.

Чаще всего сохранение представлено в виде файла, который хранит информацию о текущем состоянии игры, находящейся в оперативной памяти. Размер такого файла в несколько раз меньше самой игры и, как правило, содержит:

  1. Список объектов, для которых необходимо хранить информацию состояния;
  2. Для каждого объекта указан список изменяющихся параметров;
  3. Каждый параметр имеет свой определённый код, по которому игра может определить, что с ним происходит на текущий момент.

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

Вот так выглядит структура файла сохранения TES V: Skyrim

В сохранении не хранится информация о текстурах и моделях. Информация определяет, какие модели должны быть загружены и какие текстуры или звуки должны быть к ним применены.

Как работает сохранение?

Процесс сохранения, формат файла и список переменных для каждой игры может быть разный.

Например, для игр, созданных на движке Unreal, при первом запуске игры автоматически создаётся файл, содержащий всю информацию об объектах на уровне. При сохранении, в этот файл перезаписываются только те данные, которые были изменены в ходе прохождения.

Для воспроизведения реплеев в игре DOTA 2 игра запоминает каждое действие, совершенное игроками во время матча. В момент воспроизведения игра просто считывает, какие клавиши были нажаты игроками и применяет их на предварительно загруженные модели персонажей и статусы игроков.

Для ускорения процесса сохранения-загрузки применяется процесс в программировании, который называется сериализация. Он переводит информацию об объектах в формат, удобный для хранения и чтения (например, XML). При загрузке файла он считывается игрой, и все объекты получают сохранившиеся состояния и свойства.

Зачем нужно сохранение?

Сохранения выполняют несколько важных функций, способных улучшить игровой опыт.

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

На старте продаж Готики 3 вид этого экрана занимал около 40% времени, проведённого за игрой из-за ужасной оптимизации. После нескольких патчей на него смотришь только 10% времени

Во-вторых, сохранения позволяют игрокам вернуться к тому месту в игре, в котором она прервалась в прошлый раз. Игрок загружает игровой "срез", а игра расставляет все объекты по своим местам и даёт игроку управление. Другими словами, игра не даёт потерять игроку весь прогресс, который он совершил до текущего момента. Это особенно актуально для современных игр с большим количеством геймплейных часов, которые невозможно пройти за один игровой сеанс (если вы не спидраннер).

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

В XCOM 2 даже при высокой вероятности попадания герои умудрялись промахиваться мимо врага. Это заставляло самых нетерпеливых игроков перезагружать игру много раз

Из третьего пункта вытекает такое не совсем честное явление, как save scumming, или "задрачивание сохранениями" (уж извините). Оно означает, что игрок очень часто сохраняет свою игру и в случае поражения переигрывает проблемный участок, а не возвращаться слишком далеко назад в прохождении. Среди игроков этот способ прохождения приравнивается к читерству.

Какими бывают сохранения?

За всю историю видеоигр было придумано большое количество способов сохранения прогресса.

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

Пароли были очень неудобны в использовании. Они представляли из себя набор букв, цифр или уникальных игровых символов, которые игрок должен был куда-то записывать чтобы воспроизвести в будущем. Чем больше символов было в пароле, тем сложнее было его воспроизвести в условиях низкого разрешения экрана и похожести некоторых символов друг на друга (например, заглавная О очень сильно напоминает ноль "0").

Пароли не позволяли игроку восстановить собственный прогресс - игра загружала уровень в его первоначальном состоянии, с самого начала.

Ну, кто запомнит такие длинные пароли для открытия всех уровней в игре Crash Bandicoot?

Сейв-поинты. Ручное сохранение игры в строго определённых местах было обусловлено отсутствием физических возможностей платформы (это особенно актуально для консолей) создавать достаточно большие файлы сохранений с описанием состояний всех игровых объектов для последующей загрузки в память. Поэтому игра разрешала сохранять прогресс в строго отведённых для этого местах. Как правило, в этих местах было меньше всего объектов, и восстановление файла сохранения не влияло на состояние окружающего мира.

Для примера я возьму open-world игру GTA: Vice City. Сохранения игры происходят в строго определённых местах (отель Ocean View, вилла Варсетти, таксопарк и т.д.). При загрузке этих локаций игра загружала минимальный набор объектов (пешеходов, автомобили, оружие) и продолжала их подгружать по мере игры. Особенность этих мест заключается в том, что в поле зрения игрока на момент загрузки находится очень мало объектов, и он не видит фоновую загрузку локации.

В классических играх Silent Hill сейв-поинтами являются закрытые локации, в которых количество интерактивных объектов сведено к минимуму. При загрузке игры загружается только состояние персонажа и его прогресс по прохождению сюжета. При выходе из комнаты сохранения игра заново загружает расположение объектов и монстров в той локации, куда попал герой.

Чекпоинты. Это места автоматического сохранения игрового состояния, которое хранится в течение текущей игровой сессии и до достижения следующего чекпоинта. Поэтому их часто путают с сейв-поинтами. Они располагаются чаще и их главной задачей является уменьшение времени на повторное прохождение игрового отрезка перед проигрышем. При завершении игровой сессии весь прогресс чекпоинтов стирается, и игроку приходится начинать игру с места последнего сейв-поинта.

Чекпоинты могут быть невидимы для игрока, в отличие от сейв-поинтов. При входе в новую локацию игра может запоминать это событие в фоновом режиме. С другой стороны, в игре Crash Bandicoot для создания чекпоинта необходимо разбить специальный ящик, иначе придётся начинать проходить уровень сначала.

Автосейвы. С развитием вычислительной мощности и уменьшением затрат на хранение данных в видеоигры начали добавлять функцию автосохранения. Данная функция работает как гибрид между сейв-поинтом и чекпоинтом. Игра автоматически сохраняет прогресс игрока в строго отведённых позициях, которые встречаются максимально часто по мере прохождения. Автосейв позволяет игроку не отвлекаться на ручное сохранение игры и делает прохождение целостным и неразрывным.

Ручное сохранение позволяет игроку сохранить свой прогресс в произвольном месте, открыв специальное меню. Быстрое сохранение (quick save) позволяет игроку сохранить игру в произвольном месте при нажатии на одну клавишу. Данная функция распространена в играх, созданных для ПК, хотя за последние пять лет она перебралась и на консоли. Иногда такое сохранение при загрузке возвращает игрока к ближайшему пройденному чекпоинту.

Как сохранения представлены в видеоиграх?

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

Так, в Silent Hill 3 сейв-поинтами была нарисованная пентаграмма, которая являлась символом культа Сайлент-Хилла. Этот символ означал перерождение Бога в человеческой плоти, которое является основной темой игры.

В GTA: Vice City пестом сохранения была иконка с аудиокассетой - одним из символов 80-х, в которых происходит действие игры.

В игре Postal 2 в случае частого сохранения Чувак реагировал на это словами "Даже моя бабушка смогла бы пройти игру меньше сохраняясь!", разрушая четвёртую стену.

В игре Call of Ctulhu: Dark corners of the Earth рейтинг прохождения уменьшался, если игрок сохранялся слишком часто.

А вот в игре Metal Gear Solid игра могла прочитать сохранения других игр с карты памяти PlayStation. В одной из битв с боссом Mantis, если на карте памяти были другие игры Konami, то этот босс зачитывал их названия. Это производило ошеломляющий эффект на игрока (не зря же Кодзима - гений). Кстати, в этой игре для сохранения своего прогресса необходимо было позвонить по рации на определённую частоту, что тоже являлось частью игрового действия.

Заключение

Сохранения - это удобный инструмент в прохождении видеоигры. С их помощью игрок может экспериментировать с игровым миром и исправлять совершенные ошибки.

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

Ну и в самом конце, хочу вспомнить замечательные строчки из стихотворения Алексея Свиридова:

Мы – дети одной крови и культуры,
И знаю я, что если вдруг тяжелый час придет,
Зашарят наши пальцы в поисках клавиатуры,
Чтоб сделать этот самый «Save and Load»!