Как-то раз мы уже говорили, что математика – это красиво. Давайте сегодня разберем, как математика может сделать жизнь разработчиков легче, а опыт игроков – увлекательнее.
Конечно, не хочу рассказывать вам о банальном: что-то вреде инструментария движков, какие они удобные – в нашем журнале достаточно статей о движках. Сегодня разберем задачи, с которыми сталкиваются как игровые студии, так и инди-разработчики.
Начнем с малого
Как-то, при работе над курсовой изучал тайлмапы (карта «плиток», из которых состоит изображение) персонажей и наткнулся на статью, которую, увы, второй раз найти мне не удалось. О чем она была?
Наш персонаж условно разбивается на элементы (уровень разбивания выбирает разработчик), у меня это голова, тело, руки (плечо и кисть), ноги (только стопы), и лицо. Затем подготавливаем, например, несколько видов комбинаций для выражений эмоций.
Все эти заготовки отдаем на генерацию внешнего вида героя компьютеру, «скармливая» при этом коллекции (голов-тел-ног и прочего, что вы посчитаете оптимальным). Конечно же, спрайты (графические объекты), по-хорошему, нужно анимировать.
Пару или не пару слов о 3D играх
Хочу напомнить, что многие предпочитаю 3Д игры, так как происходит более глубокое эмоциональное погружение в игру. Именно поэтому пытаюсь хоть как-то успевать осваивать основные навыки 3Д-художника. Некоторые навыки особенно тяжело даются, один из таких – процедурные материалы (материалы, которые создаются с помощью алгоритмов).
Если помните, то в одной из своих статей рассказывал о стене из Half-Lifeя, где помимо текстур подключались карты, которые по своей природе являются всего лишь изображениями, которые как-то накладываются на модель. Но что если я скажу, что вам необязательно подключать карты вообще?
Математика для разработчиков
Если взять обычную сферу, а затем использовал displacement (это когда остается та же сфера, но количество полигонов увеличивается). Это технология как бы «выдавливает» фигуру, используя полигоны, делает из сферы – рельефный метеорит или красивый кристалл.
Но как понять, где выдавливать рельеф, а где нет? Для этого используем карту шумов – это то, что вы видите, когда телевизор (кто-то еще помнит такое устройство?) не ловит сигнал, и вы можете слышать лишь помехи, и видеть непонятную кашу из бело-черных пикселей. Для кристалла использую ту же технологию, но немного другой шум. Ну, и пару шейдеров( программа, которая отвечает за наложение текстур, отражение, преломление света, затенение ит.д.) для красоты, сегодня не об этом.
Идея в том что, задав несколько простых правил, мы получаем красоту. Что касается процедурных материалов для профессионалов, то у них ( конечно, вы догадались у Blender ) сейчас Nodevember (Node-узел, элемент в процедурной настройке материалов) - месячный челлендж, где участникам предлагается каждый день создавать один процедурный объект для Blender. Это может быть материал, шейдер, объект, все, что угодно, лишь бы оно было процедурным. "Все, что состоит из нодов, все это – нодвембер". Вы можете там увидеть образцы «улетной» фантазии создателей.
И это только верхушка айсберга. Математику используют, чтобы создавать процедурную генерацию уровней, но думаю вы лучше меня знаете примеры из игр рогаликов, песочниц.
Недавно находил информацию о проекте, который призван помогать генерировать жилые помещения и автоматически добавлять фурнитуру – это существенно облегчит разработку небольшим студиям.
Используя знание математики, некоторые задачи при создании игр можно не решать в лоб. Порой достаточно учесть 3-4 небольшие математические правила, которые помогут успешно охватить требуемые задачи и, возможно, даже смоделировать интересные решения.
Данил Гречишкин