Enerlo

Enerlo

Пикабушник
Дата рождения: 11 ноября
189 рейтинг 9 подписчиков 2 подписки 3 поста 0 в горячем
Награды:
10 лет на ПикабуЗа неравнодушие к судьбе Пикабу За отличную память За контакт с инопланетным разумом За сборку компьютера За свидание 80 левела За пятничные ребусы За космическую внимательность
22

Changeover: Решение быть разработчиком игр [Часть III] 

Предыдущие части

Часть I: https://pikabu.ru/story/changeover_reshenie_byit_razrabotchikom_igr_chast_i_5899735

Часть II: https://pikabu.ru/story/changeover_reshenie_byit_razrabotchikom_igr_chast_ii_5903637

И снова здравствуйте!


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

Диалоговая система.

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

Любой внимательный человек, который читал мой предыдущий пост, может спросить: “А что, собственно, изменилось?”. Отвечаю:


1. Цветовое оформление диалога. Теперь присутствует цветовая гамма человека, который сейчас говорит. Этот прием сделан для того, чтобы игрок не путался с множеством персонажей, которые могут попасться на его пути.


2. Построение диалога. Пойдем по внутренностям. Изначально игра не предполагала наличия большого количества диалогов и языков. Но с течением времени стало сложно вбивать все фразы в сам Unity, поэтому решили сделать такой ход - диалоги забиваются отдельными .csv файлами и заполняются там по такой формуле:

{эмоция}Какой-то текст|{другая_эмоция}Какой-то текст с новой строки

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

{normal}We’ll learn communicating first.

В таблице это выглядит так:

3. Ветвление диалога. Будет скучно, если диалоги будут линейными. Поэтому в нашем диалоговом арсенале появилось окно с вариантами ответа.

С этой новой фичей, в игре стали присутствовать элементы визуальной новеллы.

PlayMaker

Расчудесный PlayMaker смог сохранить нам немало нервных клеток своим функционалом. Система состояний и переходов помогла в построении логики происходящего на экране. Начиная от того, кто сейчас говорит, как реагирует и что при этом делает, заканчивая формированием всего геймплея.

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

Допустим, что игрок решил пойти в одном из направлений, по пути встретил нескольких НПС, они его предостерегают, чтобы он никуда не пошел (сказали несколько реплик), но игрок послал их на все 4 стороны и решил пойти по опасному пути. Там на него нападают и происходит битва.

Через код, чтобы реализовать такую небольшую ветку, нужно было бы сделать множество условий или написать свою реализацию системы состояний, но представьте, что у вас 20 таких веток, некоторые ветки сливаются и нет визуального представления происходящего. Здесь на помощь и приходит PlayMaker. Все действия записаны в стейтах (состояниях) и выстроены в нужной последовательности:

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

Однако, среди множества преимуществ есть и ряд недостатков. Например, PlayMaker не поддерживает обычные скрипты. Максимум, что он умеет делать с твоими кодом - это вызывать функции и задавать переменные. Из-за этого нашему программисту приходилось (тихо матерясь) писать оболочки для собственных скриптов. Хоть этот процесс занял время, но зато он упростил написание логики в разы.

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

А эти скрипты-действия останавливают анимацию у одного персонажа и отбирают управление у игрока, делая из него НПС...

...позволяя выполнять разные задачи, например, заставить двигаться к цели:

Но для нас одним из основных недостатков PlayMaker’а стала система сохранения текущего состояния логики. Её просто нет!

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

А теперь поговорим о тех инструментах, которыми я не пользовался, ибо “лучше не трогай”, поэтому сразу прошу прощения за то, если сказал что-то неверно.

Рисование тайлами

С выходом Unity 2018.1, любой может рисовать тайлами без проблем, но...

Мы использовали плагин, который мог рисовать префабами по слоям. Это позволяло вставлять готовые объекты на нужном месте, что в разы ускорило левел-дизайн.

Помимо этого была использована технология “рисования умным префабом”, которая изменяла объекты в зависимости от соседних тайлов. Таким образом, чтобы нарисовать углы пещер или зданий использовался один элемент.

Динамическое освещение

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

Не.. не эту, а эту:

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

Боевая система

Если коротко:

•  Решили отказаться о казуальщины

•  Не делать управление на клавиатуре

•  Не делать заскриптованные удары

•  Оружие у персонажа следует за курсором

•  Игрок сам выбирает стиль игры (как ему атаковать и защищаться)

•  В данный момент ведется обсуждение улучшения боевой системы

А* или алгоритм нахождения пути

Для того, чтобы НПС могли свободно передвигаться по карте, в игру был добавлен модифицированный (под 2d) алгоритм А*. Если коротко, создается прямоугольная сетка на основе уровня, в нее заносится и хранится информация о каждой ячейке, а именно:

• Пустая ячейка - проходимый блок (пример, воздух);

• Красная ячейка - непроходимый блок (пол, стена);

• Зеленая ячейка - односторонняя платформа (лестницы, столы и стулья).

А дальше, когда персонажу нужно пройти из точки А в точку Бэ, вступает в силу алгоритм поиска минимального пути, который находит лучший из возможных путей и передает его персонажу:

Персонаж сам определяет препятствия на своем пути при помощи RayCast’а (например, двери) и, если это возможно, обходит их. Зеленая линия перед персонажем - его путь.

Вместо заключения

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

Я оттягивал “рекламу” игры до самого конца своей истории, но ее релиз - хороший повод оставить ссылочку:

https://store.steampowered.com/app/788480/


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


С вами был @Enerlo, до скорой встречи и удачи!

Показать полностью 15
38

Changeover: Решение быть разработчиком игр [Часть II]

Всем доброго времени суток!


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

Прошлый пост (https://pikabu.ru/story/changeover_reshenie_byit_razrabotchi...) закончился на том, что мы криворукие неопытные ребята скакали от 2d к 3d как курс биткоина. И итогом стал… Да ничего тогда не стало в итоге: графика не получается, юнити плохой, unreal качать лениво, да и еще сорвалась поездка в новогодние каникулы. В общем, спустя одну бессонную ночь, 17 кружек кофе на двоих и кучу уничтоженных нервных клеток, мы решили сделать 2d хоррор, который назывался Adarekon. Ура, свершилось! В это же время команда нашла художника на аутсорсе (но это уже отдельная история), для отрисовки персонажей и окружения, так как стало ясно, что самим сделать это сложно и долго. Вот такая картинка должна была быть нашим лого!

А пока чудо-программист пыхтел над кодом, другой хороший парень придумал такую завязку:

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

Сюжет примерно строился на том, что, мол, соседом с главными героями был бывший мент. Он украл её за то, что “они дели куда-то его пульт от телевизора” и теперь ребята должны пройти испытания, которые он создал в старом сарае на окраине деревни. Ну и, конечно же, развязка состоит в том, что пульт забрала какая-то бабка, которая об этом вспомнила после прохождения игры. И после все взялись за руки стали дружить.


Правда здорово?

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

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

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

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

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

Благодарю за внимание! Тут любят котиков, но для нашей команды тотемное животное - корги.

Показать полностью 7
23

Changeover: Решение быть разработчиком игр [Часть I]

Добрый день дамы и господа!


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

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

Примерно полтора года назад мною было принято решение: “Все, нечего сидеть на попе и ждать, пока престижная студия возьмет тебя на высокооплачиваемую должность, если что-то хочешь сделать - сделай это сам!”. Как раз в это время несколько знакомых программистов взялись за разработку новой игры и я попросился к ним. Именно таким образом я оказался втянут в круговорот событий, позже названный Changeover: Decisions.

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


А пока мы полируем игру к релизу, я хотел бы рассказать с чего все началось.

Вначале было слово, и это слово - Obsended. Вдохновившись такой игрой, как IB и рядом иных произведений, созданных на платформе “RPG-maker”, моему приятелю пришла в голову мысль, почему бы не создать что-то подобное? Был придуман концепт сюжета: девушка попала в мир “между жизнью и смертью” в связи с комой. Ей необходимо пройти 5 комнат-испытаний, чтобы либо проснуться в мире живых, либо исчезнуть без следа. На прохождение каждого испытания давалось ограниченное время.

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

Вроде бы все было хорошо... НО! Технический специалист был недоволен качеством динамических теней и освещения. Сейчас мы понимаем, что причина была в неправильном использовании слоев и положении объектов по оси Z. Но тогда это был ключевой аргумент против продолжения разработки в 2D пространстве.

Почему именно 3D? Ответ был очевиден: там хорошо ложится свет на объекты, есть тени, а также у команды был малый, но опыт в создании 3d моделей.

Идея старая, героиня тоже (в смысле не изменилась), ничего сложного быть не должно, правда? Была смоделирована 3d комната в одной из программ. Результат был перспективным.

Это одна из комнат-головоломок, где игроку необходимо было бы найти выход из комнаты (найти ключи, если быть точнее), используя свои мозги. Отлично, но опять возникали НО! Здесь их было чуть больше, чем в первой версии игры:

1. Хорошо, мы создали комнату, а где взять текстуры?

2. Ладно, у нас есть более-менее уровень, какое будет управление у игрока?

3. Вишенкой на торте был вопрос: как в 3D будет выглядеть главная героиня?


Первая проблема решилась стилем “ленивый хоррор” - почему бы не сделать игру черно-белой? Но-но-но, но некоторые элементы будут подсвечиваться красным! Эдакий хоррор-нуар! Сказано - сделано. Возможно у меня нет вкуса или развита редкая форма дальтонизма, но картинка и стилистика мне понравились! Только я бы эту комнату сделал чуть темнее, а красный свет - ярче.

Следующий пункт нашей программы был UI. Стандартные решения были отброшены сразу, так как хотелось чего-то более оригинального. И тут идею подсказала игра ГоПоТа 5 (ни разу не реклама), где большую роль выполнял  карманный девайс героя. Почему бы не скоммуниздить вдохновиться этим решением?

Но, к сожалению, дальше создания мобильника разработка не продвигалась из-за наиболее острого вопроса: необходим персонаж. Красивый. Желательно женского пола.

В общем, товарищи бросили все силы ради того, чтобы детализировать каждую морщинку на лице дамы и сделать её максимально привлекательной. И в итоге получилось это:

Да шучу я! В итоге получилось вот такое чудо:

Это лицо олицетворяло что-то среднее между “у вас золотые руки, но растут не из того места” и “лучше вернитесь в 2d”.

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


Всем спасибо за внимание!


P.S. Баянометр ругался на всякую дичь

Показать полностью 10
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества