Обложка статьи

Как создают воду в играх?

Время прочтения
Время прочтения: 4 минуты

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

Плоскость волнуется — раз

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

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

Заметное улучшение визуального качества воды произошло с приходом Super Nintendo Entertainment System. На этой консоли можно было добиться эффекта прозрачности, задавая необходимые значения во время сборки игры. Таким образом разработчики создавали очень красочные водоемы.

Водопад в Trials of Mana на консоли SNES. Источник: emu-land.net

1/2

Водопад в Trials of Mana на консоли SNES. Источник: pinterest.com

2/2

В современных 2D играх вода зачастую также является просто частью фона, но с добавлением различных эффектов и частиц — брызг, небольших волн и пузырьков воздуха. Но есть проекты, в которых вода ведет себя достаточно реалистично. Например, в Terraria жидкости могут перераспределяться по соседним клеткам. Это реализовано с помощью алгоритма, имитирующего сообщающиеся сосуды: игра стремится выровнять уровни между соседними клетками. Сначала жидкость стремится вниз, имитируя гравитацию, потом влево и вправо, чтобы убрать разницу, и небольшая часть может подняться вверх, создавая подобие волн. Но вот взаимодействия с персонажем почти нет: если прыгнуть в воду, то появятся лишь брызги.

Изображение

Персонаж выливает воду из ведра. Источник: terraria.wiki.gg

Во время зарождения первых трехмерных игр консоли имели очень ограниченные вычислительные мощности, поэтому создать полноценную симуляцию жидкости было попросту невозможно. Разработчики шли на ухищрения, имитируя воду огромной плоскостью с текстурой. Иногда ее делали прозрачной и добавляли дно. Зачастую такой подход не давал достаточно реалистичный и красивый результат. Однако в игре Panzer Dragoon для платформы Sega Saturn создатели реализовали одну из самых правдоподобных имитаций в то время. Благодаря двум процессорам и отдельному видеочипу консоли, разработчики разделили обработку воды на основную часть, отражения и волны. Таким образом, жидкость получалась красочной, а игра не тормозила.

Изображение

Вода в Panzer Dragoon. Источник: m.ruliweb.com

Полигоны волнуются — два

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

Изображение

Пример полигональной сетки, изображающей дельфина. Источник: wikipedia.org

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

Изображение

Геймлей Wave Race 64. Источник: nintendo-gifs.tumblr.com

В современных играх для создания жидкостей используют шейдеры — программы, предназначенные для исполнения на графических процессорах (видеокартах) и отвечающие за итоговое изображение. Эта технология помогает правильно отрисовывать текстуры, создавать отражения, преломления и блики, а также перемещать или трансформировать поверхности. Например, в BioShock шейдеры создают всплески, если персонаж взаимодействует с водой, а внутри помещений они проецируют рябь на стены.

Вода внутри помещения и рябь на стенах. Источник: bit-tech.net

1/2

Всплески на воде после удара гаечным ключом в BioShock. Источник: bit-tech.net

2/2

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

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

Визуал меняется — три

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

Воду в играх твори!

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

Фото на обложке: игра Sibnautica, gamebomb.ru

Еще почитать по теме

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