Погружаемся глубже в игру The Last World

Всем привет! Это девлог игры The Last World. Игра разрабатывается одним человеком. Во второй части рассказываю про механики игры. Критика, предложения, советы и вопросы по теме приветствуются.

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

ССЫЛКИ

Discord || VK || Ссылка на Steam страничку скоро появится

О ЧЁМ СТАТЬЯ

В прошлой статье я рассказал немного про игру The Last World и вскользь затронул её механики. Кто не знаком с ней, прошу ознакомиться, это займет 5 минут. В этой статье пойдет речь о механиках и некоторых других аспектах игры.

Статью разделил на несколько разделов:

  • визуальная составляющая – цвет, стилистика, UI;
  • конструкторы – моддинг юнитов и инструментов, модули;
  • генераторы – world, terrain, props, resources, grass;
  • торговая площадка;
  • игровые инструменты;
  • древо технологий;
  • строительство;
  • инвентарь – юнит, постройка.

ВИЗУАЛЬНАЯ СОСТАВЛЯЮЩВЯ

Стилистика игры The Last World – это грань между реализмом и научной фантастикой. На реалистичность не хватит сил и времени, а делать лоупольный мультик нет желания, поэтому взор пал на что-то среднее.

Погружаемся глубже в игру The Last World

С цветами всё намного сложней, первые года 3 проект был покрыт дымовой завесой. Серые тона были во всем от UI до 3D моделей. В то время я ещё не знал, как правильно работать с цветами, как их подбирать и как они сочетаются между собой. После прочтения книги (Иоханнес Иттен: "Искусство цвета"), которую мне посоветовал друг, я начал смотреть на свой проект иначе. В итоге определил 3 основных цвета и 2 вспомогательных. К примеру, для UI я выбирал из холодных оттенков. В целом результатом доволен, внешне стало намного приятней.

Погружаемся глубже в игру The Last World

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

Касательно построек – каждая из них имеет с десяток параметров и выводить их всех нет смысла, в итоге, вывел на панельку общие параметры и немного уникальных для каждой из построек. Лучше всего читается картинка + текст, нежели текст + текст, а еще будет лучше, если добавить поверх этого всего функцию "tooltip - подсказка”.

Главное меню также выполнено в скромном стиле – есть кнопки, юзабельный задний фон и много свободного пространства, на котором можно разместить разного характера информацию, например – новости или ближайшие анонсы.

Большинство игровых панелей и окон можно перемещать по экранному пространству (если присутствует красная полоска в самом верху панели\окна).

Погружаемся глубже в игру The Last World

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

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

Погружаемся глубже в игру The Last World

Главное UI, где расположены мини-карта, кнопки строительства, технологий и т.п., всё довольно просто и понятно. Расположение было выстроено ровно так, чтобы игрок не терялся и не чувствовал себя скованным. Другие подобные игры и их опыт очень сильно помогли в этом. Большинство этих панелей можно скрыть, тогда будет ещё больше пространства для обзора.

Погружаемся глубже в игру The Last World

КОНСТРУКТОРЫ

Как писал в первой статье – все уникальные юниты являются модульными, поэтому нужен инструмент, чтобы можно было их редактировать. Система моддинга персонажей (или Конструктор) является одной из основных механик The Last World. Конструктор позволяет собрать персонажа из десятков (а может и больше) механических частей. Полноценный (далее основной) конструктор доступен из главного меню игры. В нём можно создать новый пресет по заготовленному бланку, загрузить сохраненный или дефолтный пресет, а также сгенерировать рандомный, чтобы позже можно было его выбрать при старте новой игры.

Погружаемся глубже в игру The Last World

Работа с конструктором проста – есть модель и есть иконки (слоты), которые прикреплены к модели. Нажав на иконку появляется список со всеми доступными модулями для него. Игроку нужно лишь выбрать его, кликнув на иконку, и после модуль прикрепится на основную модель.

Я планирую сделать, чтобы все модули имели параметр доступности – если игрок исследует модуль в игровой сессии, то этот модуль будет считаться открытым и доступным в основном конструкторе, пока игрок не обнулит свою статистику.

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

Погружаемся глубже в игру The Last World

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

Погружаемся глубже в игру The Last World

Что касается инструментов юнита то тут примерно всё то же самое, за исключением того, что редактировать их можно только в игре и для доступа к конструктору не нужна будет Мастерская.

Погружаемся глубже в игру The Last World

Есть несколько способов редактирования инструмента – первое это окно моддинга, второе перетащить и прикрепить, и третье - открыть окно обзора предмета и удалить интересующий вас модуль, который был установлен на него. После того как модуль будет прикреплен или удалён иконка инструмента обновится – сделает рендер картинки иконки предмета, внутри проекта это называется "динамическая иконка".

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

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

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

ГЕНЕРАТОРЫ

Кропотливо расставлять деревья по локации или набивать сундуками какие-нибудь катакомбы это не про The Last World. Я старался всё перевести в машинный код, тем самым облегчив себе работу на будущее. И уменьшить размер сборки на выходе (сейчас вся сборка весит примерно 7Гб, чем дальше - тем больше).

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

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

Погружаемся глубже в игру The Last World

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

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

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

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

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

Позже генерируются горы, ну или то, что игра называет горами. Они генерируется островками с использованием Perlin Noise.

Погружаемся глубже в игру The Last World

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

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

Погружаемся глубже в игру The Last World

Самым последним генерируется трава, занимает больше всего времени. Трава генерируется на каждом чанке отдельно для оптимизации, хотя я подумываю объединить их и отправить на параллельный поток, пока идет загрузка и игрок не видит локации. Для генерации травы использовал два сгенерированных массива шума – один для высоты травинки, другой для паттерна. Трава генерируется с использованием Perlin Noise, а затем применяется шум для небольшого разброса по поверхности.

Погружаемся глубже в игру The Last World

ТОРГОВАЯ ПЛОЩАДКА

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

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

Для доступа к космической торговой площадке нужна постройка – Торговая Площадка. Грузовые шаттлы будут сбрасывать груз при выгрузке и забирать, при загрузке. Грузовые шаттлы можно арендовать у торговцев, пока не будет введена орбитальная станция - основная база игрока.

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

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

ИГРОВЫЕ СЕТЕВЫЕ ИНСТРУМЕНТЫ

Я не хотел нагружать мозг игрока, а тут ещё и конвееры делать нужно. Решил уйти от традиционного построения конвеерного мира переносом всего в "игровую виртуальность" обозвав это всё "сетями". Итак, в игре есть 3 сети – конвеер, электросеть и трубопровод. Все они независимы друг от друга и живут отдельно.

Переходя в режим инструментов, игрок переходит в "чертёжный режим". Там он будет соединять линиями постройки, которые хочет подключить к сети. Всего есть 5 подинструмента – линия, мост, считыватель, удалить элемент сети и удалить целую сеть. Целой сетью считается непрерывные участки этих самых линий. Всё просто и понятно. Хотите подключить две постройки между собой – соедините их линиями.

Погружаемся глубже в игру The Last World

ТЕХНОЛОГИЧЕСКОЕ ДРЕВО

Всего в игре The Last World будет 3 древа технологий – основное, юнит и постройка.

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

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

Технологии исследуются в специальных постройках – Исследовательская Станция. В качестве "горючего" она принимает местный аналог "колбочек" называемое - чип-грант. Чип-гранты можно произвести или купить на торговой площадке.

Погружаемся глубже в игру The Last World

Технологические древа юнита и построек ещё не готовы и находятся в процессе разработки.

СТРОИТЕЛЬСТВО

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

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

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

СВЕТ

В игре The Last World будет много источников света в ночное время суток. По сути, сколько построек, столько и источников света. Т.к. игра делается с использование URP а там, да и не только там, на 1 объект может светит только 8 источников то возникает вопрос – как так и где решение?

Погружаемся глубже в игру The Last World

Решением оказался URP differed, это сравнительно новая функция поэтому я не до конца разобрался что это и с чем её едят. Единственное, что при переходе на неё нужно будет немного редактировать кастомные шейдеры. Теперь я могу светить на объект (а это у меня был в основном террейн) хоть +100500 раз.

Погружаемся глубже в игру The Last World

ИНВЕНТАРЬ

Ну вот и подошли к самому интересному, по моему мнению, это система инвентаря. Я уже писал, что каждый юнит, постройка имеет свой отсек для хранения предметов. Для юнита это модули – передний и задний отсеки, в которые можно складировать предметы разных размеров. Для построек – это размер самой постройки, её габариты и вместимость. На наземную лампу ведь не сделаешь размер отсека в 40х40 ячеек…

Погружаемся глубже в игру The Last World

Инвентарь в игре представлен в виде ячеек. Все предметы имеют вес. Вес представлен в виде размера, которые они занимают в инвентаре. С предметами можно производить манипуляции – вращать, перемещать, стаковать, разъединять, удалять, в общем всё, чтобы было комфортно пользоваться инвентарем. Само перетаскивание и прикрепление предметов реализовано по принципу – Drag and Drop.

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

Погружаемся глубже в игру The Last World

Работа с инвентарем неимоверна сложная, запутанная и интересная. Считаю, что разработку любого проекта нужно вести от самого сложного к простому, так можно быстро отсеять ненужный функционал. Как говорят – глаза боятся, а руки делают.

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

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

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

Погружаемся глубже в игру The Last World

Есть предметы с эффектами, например, модули для юнитов, которые будут бустить один или несколько параметров. Также в игре присутствуют и модули для построек, которые также могут увеличить или уменьшить какие-либо параметры постройки. Например - очень полезная штука для очищающей станций, если раньше постройка могла очистить за 1 секунду только 1 ресурс, то после добавления модуля сможет очищать уже 3 ресурса за то же время (но при этом расходы увеличатся).

Помимо обычных (твердых) предметов в игре есть и ещё несколько типов – газообразные и жидкие. Они не имеют оболочки и на прямую с ними игрок не сможет взаимодействовать. Хранить такие ресурсы нужно отдельно в цистернах. Также такие ресурсы можно разлить в бочки и перевозить на большие расстояние или использовать в производстве, при необходимости.

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

ЕЩЁ НЕМНОГО

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

  • Sunny или Clear – чистая, солнечная погода с небольшим количеством облаков и легким ветерком;
  • Cloudy – облачная погода, яркость от источника света будет снижена на %, ветер чуть сильней чем обычно;
  • Rainy – много густых облаков, сильный дождь, сильный порывистый ветер (вероятность 50%), увеличена вероятность встретить разряды молний, густой туман (вероятность 50%), яркость от источника света будет снижена на большой %;
  • Storm – больше густых облаков, очень сильный дождь, выпадение града (вероятность 50%), большая вероятность встретить разряды молний, очень сильный порывистый ветер, яркость от источника света будет снижена на очень большой %;
  • Snow – больше густых облаков, средний снег, выпадение града (вероятность 50%), сильный порывистый ветер, яркость от источника света будет снижена на большой %, густой туман (вероятность 50%);
  • Snowstorm - больше густых облаков, очень сильный снег, выпадение града (вероятность 50%), большая вероятность встретить разряды молний, очень сильный порывистый ветер, яркость от источника света будет снижена на очень большой %;
  • Sandstorm – небольшое количество облаков, очень сильный порывистый ветер, песчаные бури.
Погружаемся глубже в игру The Last World

Также усердно работаю над созданием странички в магазине Steam. В обозримом будущем есть планы улучшить визуал Конструктора, сделать платформу и добавить больше статистики и многое другое…

Критика, предложения, советы и вопросы по теме приветствуются.

Спасибо за инвестированное время! Присоединяйтесь в сообщество и следите за ходом разработки, буду вам рад!

ССЫЛКИ

Discord || VK || Ссылка на Steam страничку скоро появится

2323
3 комментария

Ого, а интересно!

Подожду когда в стиме появится

Ответить

Я надеюсь, после 3 апреля будет.

2
Ответить