Создаём 2,5D-игру жанра Dungeon Crawling в Unity

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



Eye of the Beholder (1991 год) и SMT If (1994 год)


Базовый ассет «карты» для уровня нашего подземелья.

Большинство dungeon crawler-ов 90-х, в том числе и наш — это листы спрайтов, выстроенные в виде коридора. Хотя с технической точки зрения мы используем 3D-движок, никакие меши не рендерятся. Подземелья — это просто сетки, составленные из разных типов блоков, хранящиеся в карте вместе с данными монстров и объектов.

Чтобы отобразить любую перспективу для заданной координаты [x, y] сетки и направления взгляда игрока, мы можем вычислить, какие фрагменты стен нужно рендерить. Если блок находится непосредственно перед игроком, то нужно показать самую крупную плоскую стену. Если в двух квадратах вперёд и влево есть ещё одна стена, то нужно показать боковую панель, соответствующую этому расстоянию. Каждый блок в определённом радиусе вокруг игрока определяет, какие спрайты видимы.


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

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

Добавьте статический фон, и получите стены с потолком…

Вот как сцена выглядит в Unity...


А вот как она выглядит через ортогональную камеру!

То есть воспользовавшись массивом спрайтов, системой рендеринга на основе сеток и ортогональной камерой, мы получили минималистичный dungeon crawler в 2.5D. Он очень плоский, а движение ограничено тайлами, между которыми игрок по сути телепортируется. Выглядит всё это не очень.

К счастью, движение достаточно легко имитировать, и здесь нам пригодится 3D-движок. Ходьба в Backspace Bouken заключается в кратковременном увеличении текущего кадра, за которым следует возврат и немедленный повторный рендеринг, теперь уже с точки следующего тайла. Небольшое раскачивание камеры даёт ощущение совершения шага вперёд.


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

С ходьбой всё просто, но как насчёт поворотов? С ними труднее.

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


Префабы — это ваши друзья.

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


Можно также отключать бездействующие на данный момент камеры. Пока их у нас пять.

Отрендерим этот вид в ещё одну Render Texture и в UI/кадр, так и получим внешний вид игры. При помощи этой системы можно рендерить и всевозможные объекты, просто помещая их «внутрь» рендерящихся на экране блоков и создав спрайты для каждого из расстояний в блоках.

Источник: https://habr.com/ru/post/476036/


Интересные статьи

Интересные статьи

На прошлом уроке мы затронули тему самостоятельного создания объектов для игр. В т.ч. была упомянута программа SketchUp, которую мы часто использовали, для создания прост...
В этой статье вы узнаете, как создать собственный GPS-трекер с помощью микроконтроллеров Pycom LoPy, а также научитесь настраивать одноканальный LoRa Nano-Gateway. Здесь я изложу клю...
Unity как движок имеет ряд недостатков, но которые благодаря возможностям для кастомизации и инструментам для кодогенерации можно решить. Сейчас я вам расскажу о том, как мы написали...
История сегодня пойдёт про автосервис в Москве и его продвижении в течении 8 месяцев. Первое знакомство было ещё пару лет назад при странных обстоятельствах. Пришёл автосервис за заявками,...
Agones (от др.-греч. agōn — «соревнование») позволяет развернуть кластер игрового сервера используя Kubernetes с возможностью Auto-Scaling. Этот open-source проект был создан в 2018 году, уже наб...