Сегодня Сегодня 0 77

Разработка простой адвенчуры в 1 лицо. Дизайн базы

-1

Недавно я публиковал здоровенную статью про малоизвестную игру l’Abbaye des Morts. Зачем я копался в этом дремучем инди? Потому что l’Abbaye des Morts — это изумительная первая игра для соло разработки. Короткая, построенная на простых механиках, очень бедная в плане графики и звука; но при этом концептуальная, таинственная и в чём-то свежая. Главное — это целостная и самодостаточная adventure-игра в её простейшей форме.

l’Abbaye des Morts, которая будет неоднократно упоминаться в статье
l’Abbaye des Morts, которая будет неоднократно упоминаться в статье

Так как я хотел бы попробовать приобщиться к давно почившему жанру адвенчур, то решил разложить дизайн l’Abbaye des Morts на атомы. И на этом фундаменте собрать свою игру.

Вероятно, вы не читали статью, поэтому вот вам краткая выжимка.

Концепция l’Abbaye des Morts, от которой я отталкиваюсь

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

Исследуя комнаты лабиринтообразного монастыря, вы узнаёте, что 12 братьев-катаров полегло здесь и оставило 12 крестов. Вооружившись ими вы сможете изгнать местное зло👹.

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

🐲
🐲

Но со временем вы разберётесь в секретах монастыря, выучите расположение комнат и специфику мувсетов врагов. Найдёте все тайные ходы и шорткаты. Наконец сформируете оптимальный маршрут от старта до финиша и триумфально пройдёте по нему игру минут за 15 (но, скорее всего, не с первой попытки😅).

Важная часть концепции — в игре очень много уникального контента. Например, на 23 комнаты игры есть 13 видов врагов, которые встречаются всего в одной из них. Каждые 2 из 5 комнат будут содержать в себе что-то особое, а каждый вид тайного хода встречается ровно единожды.

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

Фундамент

Для начала определимся с ключевыми концепциями своей будущей игры, и насколько они совпадают/не совпадают с l’Abbaye des Morts.

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

1] Игра должна не иметь системы сохранений и проходиться в 1 присест💾. Если добавить сохранения — можно играть абсолютно не аккуратно, ничего не анализировать, но всё равно пройти игру с первого раза. Ценность получаемых открытий о механиках игры снижается почти до 0, а концепция — рассыпается.

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

Oddworld: Abe’s Exoddus — удивительно глубокая по геймплею игра, управляемая полностью с клавиатуры
Oddworld: Abe’s Exoddus — удивительно глубокая по геймплею игра, управляемая полностью с клавиатуры

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

4] Главный герой должен остаться безоружным. Совсем, или процентов на 95% от игры. Я убеждён, что у меня не получится реализовать и адвенчурный элемент, и вменяемую боёвку в рамках первого опыта соло разработки.

5] Игра должна симпатично выглядеть и звучать. Без радикального минимализма графики и звука, который был в l’Abbaye des Morts👾.

6] Игра не должна основываться на нахождении некоторого количества одинаковых предметов. В l’Abbaye des Morts требуется собрать 12 крестов, что противоречит концепции про много уникального контента.

Я думаю сделать условием для победы либо 1 действие (например, «спасти принцессу, подойдя к ней»), либо разбить это действие на небольшое число поддействий с разным привкусом («найти ножовку по металлу, верёвку и коня чтобы помочь принцессе сбежать через окно»).

Prince of Persia 1989 — каноническое спасение принцессы в нужном жанре и сеттинге
Prince of Persia 1989 — каноническое спасение принцессы в нужном жанре и сеттинге

5] Игра должна ощущаться относительно сложной. Хардкорность игры в плане вероятности отхватить от врагов должна быть не выше, чем в l’Abbaye des Morts, но присутствовать. Может быть пониже; допустимый порог — минус 25%.

6] Запутанность и/или паззловость игры должны ощутимо вырасти. Подробнее — в следующей статье.

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

Дополнительные источники вдохновения и цели

Странно было бы ориентироваться ровно на одну игру. Когда я стал обдумывать концепцию, сразу вспомнил еще — старую адвенчуру Fantastic Dizzy и специфическую Minit, где надо успевать свернуть горы за 1 минуту, умирать, возрождаться, и так до победного.

Начну с Minit.

Это Minit. И в статье непроизвольно образовалась галерея визуального пиксельного старья
Это Minit. И в статье непроизвольно образовалась галерея визуального пиксельного старья

В неё интересно играть из-за очень удовлетворительного нахождения предметов. Предметы остаются с нами навсегда, не на 1 минуту. Ощущение от подбора — я стал сильнее и круче, теперь в этих жёстких правилах у меня появился шанс. То есть это по сути прокачка, но реализованная исключительно через поиск предметов.

Я хочу такое в своей игре в неком базовом виде. Допустим, в игре будут 3-4 предмета, которые сложно получить, сами по себе они не являются имбой, но вместе делают жизнь игрока заметно проще и интереснее. То есть получается элемент рогалика, но немного с подвыподвертом.

Вроде, оно не слишком сложное в имплементации. Мы не имеем полноценной системы и интерфейса сейвов, но должны будем внедрить что-то похожее на 1 автосейв. Он будет помнить нашли мы что-то из этих предметов ранее или нет. И всё.

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

Теперь про Fantasic Dizzy.

Fantastic Dizzy. Посмотрел на картинку, и олдскулы свело
Fantastic Dizzy. Посмотрел на картинку, и олдскулы свело

За что её любили? За возможность поднимать предметы, которые потом можно использовать на некоторых элементах окружения. То есть по геймлею близко к point-n-click квесту, но полностью заточенное под клавиатуру. Но я хотел бы начать совсем с простого.

В Dizzy подбираемые предметы и элементы окружения имеют свои триггерные зоны. Если зайти в эту зону и нажать кнопку интеракта — персонаж попытается что-то с этим предметом сделать. Концепция простая, но в l’Abbaye des Morts такого нет. Там почти все интеракции осуществляются прикосновением к предмету.

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

Касательно подбора квестовых предметов. Наверное, я бы хотел какой-то инвентарь простейшего вида. Тут я думаю в 2 немного разные стороны без уверенности какую из них буду реализовывать (или же в обе; или в никакую).

||| Предметы |||

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

||| Спеллы |||

Также я думал про систему неочевидных спеллов, которые можно найти в виде итемов. Аналогия — медальон из старого квеста Legend of Kyrandia. Спеллы — это драгоценные камни, которые вставляются в медальон. Но сходу не очевидно, что именно они делают, никакого описания у них нет. В механизмах действия спеллов тоже надо разбираться.

Legend of Kyrandia с тем самым медальоном. Все 4 спелла добыты и готовы к использованию
Legend of Kyrandia с тем самым медальоном. Все 4 спелла добыты и готовы к использованию

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

Сеттинг

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

Первые мысли были о чём-то таком😄
Первые мысли были о чём-то таком😄

Антураж l’Abbaye des Morts по умолчанию загадочен. Всем известно, что в средневековых европейских монастырях встречались сложные системы тайных ходов, замаскированные механизмы и т. д. Видя такой монастырь в игре, сразу появляется настрой на эксплоринг.

Что подобного можно сделать в джунглях? Храмы индейцев? Внутри они довольно бедные визуально (просто камень). Ну и в эстетике индейцев есть много вещей, которые не идут игре на пользу. Например, магизм индейцев был во многом построен на вызове духов и здесь не близок/не уместен.

Думал я недолго, и выбранный мной сеттинг — восточная сказка.

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

Для проверки идеи я пошёл читать Сказки 1001 ночи. Первое, на что обратил внимание — они ужасно пошлые😅 Целью для героев сказок обычно является красивая женщина, богатство/власть или тайные знания. Цели очень понятные и соответствующие желаемой концепции:)

Таким образом с сеттингом решено.

Снова Prince of Persia 1989. Очевидный референс в данном сеттинге и жанре

Модель распространения

Внезапная смена темы, но хочется упомянуть о ней именно в этой статье.

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

На данный момент моя цель — вывести игру в Steam для бесплатного распространения. Если будут непреодолимые сложности с выкладыванием в Steam — выложу хотя бы на itch.io.

Исполнение

||| Движок и язык программирования |||

По ряду причин, которые я не буду описывать, собирать это всё я планирую на какой-нибудь LTS версии Unity. LTS (Long Time Support) означает, что эту конкретную версию Unity будет долго (годами) поддерживать и чинить в них баги. По идее, LTS-версии — самые стабильные.

Так как я не планирую писать для игры свои шейдера или портировать ее куда-то кроме ПК, то я могу не заморачиваться и выбрать, в целом, любую LTS версию юньки за последние года 3.

Думаю, выбор Unity в качестве движка никого не удивил
Думаю, выбор Unity в качестве движка никого не удивил

Код, соответственно, будет на C#.

||| Система контроля версий |||

Возможно, вы не знаете что это такое и зачем нужно. Система контроля версий позволяет:

  • Работать над одним проектом команде людей, не конфликтуя между собой;
  • Хранить изменения отдельными сущностями и легко отменять изменения, которые что-то сломали;
  • Делать временные вариации проекта, в которых можно пробовать реализовывать опасные изменения, способные сломать проект (так называемые ветки). При этом создавать копии папки с проектом не требуется, хранятся только изменения;
  • Много чего ещё.
Простая репрезентация гита и его веток
Простая репрезентация гита и его веток

Пожалуй, самая популярная система контроля версий — это GIT. Его можно использовать бесплатно, он понятный и гибкий. Так как я берусь за игру один, были сильные сомнения надо мне разворачивать GIT или нет.

Я посоветовался с уважаемым мной программистом, который успешно заканчивал небольшие соло проекты (Костя, привет). Он посоветовал разворачивать, если берешься за проект, который делается больше недели + для порядка.

Я мог бы обойтись без порядка, но работать над игрой я буду ночами, порой уставший и ничего не соображающий. Ситуации, когда я написал в коде какую-то чушь и на следующий день не смог вспомнить как было до того, однозначно будут. Значит GIT придется настроить.

||| Использование готовых ассетов (и заодно про звуки) |||

Я делаю авторскую игру и хочу по-максимуму избегать готовых ассетов. Единственное исключение — звуковые ассеты (не музыка). Очень маловероятно, что я смогу качественно записать (или имитировать) шипение змеи🐍, звон меча⚔️ и т. д. При этом их точно придется обрабатывать как минимум по громкости.

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

||| Музыка |||

Стилизации под 8/16 бит точно использовать не буду. Но и в очень требовательные к звучанию стили лезть не буду (синематик, оркестры, инструментальный фолк).

Скорее всего это будет что-то электронное + семплированные народные инструменты. Назовем таргетное звучание Mid-Fi (между Hi-Fi и Lo-Fi:) Примерно так или чуть лучше звучат многие инди игры, собранные небольшими командами.

Большинство музыки (или вся) должна быть написана в виде лупов и бесшовно играться по кругу.

||| Камера |||

В l’Abbaye des Morts одна комната всегда занимала 1 экран, а камера была прибита к центру экрана. Но это не сказывалось на игре негативно. Ведь игра сделана под соотношение сторон 4:3, и слева-справа от границ комнаты были жирные черные поля. Вся информация находилась близко к центру экрана.

А я хотел бы адаптировать свою игру под 1080р (16:9). Если делать 1080р с камерой, прибитой к центру — игроку придется водить глазами по всему монитору, включая углы. Это может вызывать дискомфорт при игре, но облегчает процесс дизайна уровней (не надо думать про размер каждой из них).

Я рассматривал 2 обобщённых варианта, которые в элементарном виде собрал и потестил:

  • Сделать камеру прибитой к центру и оставить игроку сопутствующий дискомфорт:

Сорри за мыло, осваиваюсь как пользоваться заливкой GIF. Ассеты взяты из курса по Unity с Udemy

  • Заставить камеру следовать за игроком по горизонтали:

Странно демонстрировать особенности работы с 1080p в мелком мыльном окошке. Но чем богаты

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

Обстоятельно подумав, я решил делать так:

  • Дефолтное решение для почти каждой комнаты — камера, прибитая к центру экрана;
  • Пару комнат в игре могут иметь размер x2 по горизонтали, в них камера будет следовать за игроком;
  • Ещё пара комнат может иметь внезапное удлинение по горизонтали или вертикали, которое разблокируется неочевидным способом (активировать механизм, сломать кусок стены). Если иметь в игре ровно 1 удлинение по горизонтали и 1 по вертикали, то такие ситуации могут вызвать вау-эффект.

Два первых пункта уже реализованы на гифках выше. Третий, думаю, тоже осилю.

||| Визуал |||

Вот тут у меня разбежались глаза от обилия вариантов. Хотел я было их все тут перечислить, но начал и понял, что без визуализаций (т.н. proof of concept) это пустое сотрясание воздуха.

Поэтому визуал с примерами я оставлю на следующую статью, как и примерную смету количества контента в игре. В следующий раз контент и визуал, визуал и контент:)

Большое спасибо за прочтение!🎉


Лучшие комментарии

Читай также