
Это первые три части из цикла статей о разработке нашей игры. Основная задача статей в том, чтобы рассказать о этапах создания игры, о том, с какими проблемами мы столкнулись во время разработки. Ну и конечно для того, чтобы мы сами могли следить за развитием игры, так как даже во время пре-продакшена поменялось столько всего, что помнить обо всём сложно, а информация, записанная на обрывках бумаги, настолько разрозненная, что создаёт ещё больше путаницы.
Часть 1. По следам Darkest Dungeon

Эта статья является в какой-то мере введением. В последующих статьях я постараюсь коснуться всех аспектов разработки. Важно понимать, что на данный момент игра находится на ранней стадии разработки, поэтому эффективность тех или иных решений лично мной на практике опробованы ещё не были. В связи с этим любой изложенный мною материал по этой теме является лишь моей точкой зрения.
Компьютерные игры
Наверное, стоит сделать некоторое отступление прежде чем начать. Меня всегда интересовали игры. Это началось со времён Dendy и продолжается по сей день. Сказать, что я играл в компьютерные игры много — значит не сказать ничего. И чем больше проходило времени и чем больше я играл, тем больше мне хотелось попробовать сделать свою игру. Поэтому мне кажется, что любовь к играм со временем перерастает в желание создавать игры. Пусть каждый делает то, что ему нравится.
В начале была игра
Одним из главных ориентиров была, и до сих пор является, игра Darkest Dungeon, а именно реализация в ней боя. Бой сделан так, что с одной стороны он очень прост, а с другой стороны открывает огромные тактические возможности. Бой и возможность собирать свой отряд, а также комбинировать персонажей в отряде как вам будет угодно. Это основная механика игры, которая занимает большую часть времени, проведённого за игрой.
А вот перемещение по подземельям хоть и сделано в классическом стиле roguelike, всё же не позволяет в полной мере почувствовать себя исследователем. Возможно, это связано с уровнями, их построением и наполнением. Не покидает ощущение, что ты идёшь по одному и тому же лабиринту. Не думайте, что мне не нравится эта игра, просто я считаю, что это одно из её слабых мест. Именно поэтому в нашей игре перемещение будет реализовано по-другому (в следующих частях я остановлюсь на этом подробнее).
Второе слабое место этой игры — это сюжет. Я бы даже сказал, его отсутствие, но боюсь фанаты данной игры меня забросают гневными отзывами. Может, его когда-то и допилят, но давайте взглянем правде в глаза, эта игра не про сюжет. И я считаю, что именно хороший сюжет смог бы придать этой игре необходимую глубину. Сюжет, что будет тянуть игрока вперёд, заставлять его уничтожать следующую группу врагов, не только для того, чтобы получить очередную порцию опыта и артефактов, но и для того, чтобы получить следующую крупицу истории.
Почему Darkest Dungeon?
- Ну, во-первых, потому, что эта игра была что-то вроде идейного вдохновителя. Заставила вырвать из груди пылающее сердце и освещая им дорогу двинуться в путь.
- Во-вторых, технологически создание подобной игры не представляет из себя большой сложности (по крайней мере я так думал в самом начале).
- В-третьих, создание контента для 2д игры в какой-то мере проще чем 3д.
- В-четвёртых, обладая ограниченными ресурсами хотелось сделать что-то действительно интересное, а не просто «ещё один платформер».
- Ну, и конечно же, в-пятых, существовало видение как можно преобразить и улучшить эту игру. Насколько хорошо это получится сделать увидим в конце разработки.
Что же вы делаете?
Если коротко, то Eveston: way of devil является двухмерной ролевой игрой, с пошаговыми боями, где игроку предстоит собрать свой отряд и уничтожить всех врагов, что встанут у него на пути. Если же углубиться чуть более подробно, то игровой процесс можно разделить на 2 типа: боевой (ведение боя) и мирный (менеджмент и изучение мира).
Ведение боя выглядит следующим образом. На одной части экрана находятся персонажи игрока, на другой персонажи противника. Бой состоит из раундов, в раунд каждый из персонажей должен получить право хода по крайней мере один раз. Очерёдность ходов определяется инициативой персонажей. Далее все персонажи ходят согласно своей инициативе, от высшего значения к низшему. Персонажи могут использовать свои активные навыки только находясь на определённой позиции в отряде, и могут наносить урон тоже только по определённой позиции в отряде врага.
Менеджмент выглядит следующим образом. Игрок после окончания очередного уровня переходит в режим «привал» и может сменить персонажей в отряде, прокачать их, восстановить здоровье, воспользоваться не боевой функцией персонажей (у каждого персонажа помимо боевой будет и небоевая способность, расширяющая игровую механику).
Изучение мира заключается в исследовании ответвлении от основной сюжетной линии и поиска скрытой информации о тех или иных событиях. Игрок может найти других противников и сюжетные моменты, которые не являются обязательными, однако дают игроку возможность понять этот мир глубже.
Иными словами, мы нацелены на: интересные сражения, необычных персонажей с возможностью прокачки, разнообразных монстров, классный сюжет и море фана для игроков.
В заключение
Резюмируя можно сказать, что игра Darkest Dungeon направила нас в определённом направлении и позволила увидеть другую игру с несколько иными решениями, за что её разработчикам отдельное спасибо. Именно над такой игрой мы сейчас и работаем.
Часть 2. Копировать или нет?

Так получилось, что совсем недавно был на конференции DevGamm в Минске, где я общался с известными (и не очень) людьми из гейм индустрии. Общался во многом для того, чтобы понять, в какую сторону лучше двигаться в плане разработки игры. Одним из главных вопросов был — не подумают ли пользователи о том, что игра является клоном Darkest Dungeon, когда увидят визуально очень похожий бой. Исходя из этого возникал другой вопрос – на сколько целесообразно делать такую же визуальную структуру боя. Поэтому главный вопрос этой статьи — это копировать или нет. И разбирать этот вопрос я буду на примере нашей игры.
Прошу принять во внимание, что в первую очередь я решал вопрос, насколько игра будет отличаться визуально (по расположению объектов), так как это то, что игрок увидит раньше всего. Однако не стоит забывать о том, что визуальное представление и механика игры зачастую очень крепко связаны. Уберите в шахматах половину фигур, и вы увидите, как измениться игровой процесс.
По обе стороны баррикад
Как ни парадоксально, мнения людей по поводу копирования разделились (я то наивно полагал, что все будут единодушны). К примеру, Леонид Сиротин порекомендовал сразу посылать подальше всех, кто скажет, что это клон, и я его прекрасно понимаю. Есть множество популярных игр с копированной механикой, и их продажи и популярность не особо от этого страдают. Новые игры просто приходят на смену старым, сохраняя прежнюю механику. Во многом подобный подход используют мобильные и браузерные игры. Конечно, многое зависит от реализации. Достаточно обновить графику, звуки, сеттинг – и игра уже кажется другой.
А вот Алекс Ничипорчик сказал, что копировать бой Darkest Dungeon – не лучшая идея. Взглянув на картинку, пользователи смогут предположить, что перед ними клон, а это плохо, ведь картинки — это одно из первых, что видит игрок перед покупкой игры. Алекса я тоже прекрасно понимаю. На рынке инди-игр нужно выделятся всем, чем только возможно, иначе тебя просто не заметят. И быть чьим-то клоном в этом понимании просто недопустимо, особенно если игра совсем недавно вышла на рынок (в нашем случае так и есть, Darkest Dungeon в раннем доступе уже почти год).
Я думаю и те, и другие правы. Всё дело в том, разработкой какой игры ты занимаешься и на кого она ориентирована. Если у вас инди-проект с небольшим бюджетом, то от прямой копирки лучше воздержатся: скорее всего, вас просто не заметят. Вряд ли вы сможете создать обширную пиар-компанию и привлечь необходимое число игроков. Если же вам позволяет бюджет, вы можете позволить себе идти по проторенному пути. В таком случае копирование – не такой уж и плохой вариант. Минимум рисков, проверенная механика. Определённая сумма в продвижение проекта – и вот уже миллионы геймеров играют в новый Clash-of-Clans.
Что же делать нам?
Это, пожалуй, самый главный вопрос, который не давал мне спать, пока я ехал домой. И под размеренный стук колёс я взялся за эту статью в попытке решить, что же нам делать.
Самым простым и очевидным вариантом было бы взять проверенную механику Darkest Dungeon и просто идти по ней. Оставить всё как есть, за исключением некоторых функций, которые совершенно нам не подходят, к примеру факел и влияние его на ход боя. Пересилив этот соблазн и оценив опасность этого шага для будущего нашей игры, я принялся искать другой путь. А именно, как сделать бой не сильно усложняя его в техническом плане, но так, чтобы он перестал быть похожим на бой из Darkest Dungeon.
Первым делом за помощью я обратился к Героям (да, да «Heroes of Might and Magic»). Расположение войск по вертикали, слева свои и справа чужие, поле боя, по которому можно передвигаться. Всё это, к сожалению, не подходило. Наша игра не является стратегией, поэтому количество персонажей довольно ограниченно, более того, их появление привязано к сюжету, поэтому по началу ваш отряд будет состоять из 2-3 существ. В связи с этим и поле боя выглядело не так эффектно, да и это явное усложнение игры в техническом плане. Поэтому, как бы я ни любил Героев, они нам не подходили.

Следующий шаг был направлен в сторону их прямых конкурентов, точнее бывших конкурентов. Да, я говорю о серии Disciples (о двух первых частях). Вот тут всё оказалось значительно ближе к нам. Количество персонажей за одну из сторон не превышает шести. Нет строго обозначенного поля сражения, а персонажи атакуют из своих позиций. Бой выглядит совершенно по-другому, хотя механика в целом может оставаться такой же. А расположение в 2 ряда открывает некоторый простор для тактических решений. Помимо этого, обнаружился и ещё один плюс. Выход второй части игры состоялся в далёком 2002 году, а значит большинство современных геймеров не то что не играли – даже не слышали о ней. А это значит, что в глазах большинства игроков игра с подобной боевой механикой не будет выглядеть клоном.

Чуть погодя я вспомнил про такой жанр как JRPG и понял, что пришёл к подобной схеме визуального представления боя, когда рассматривал Disciples. Из всего многообразия игр подобного жанра мне приглянулась игра от Ubisoft, Child of Light. Визуально бой выглядит просто великолепно. Расположение персонажей, эффекты, задний фон. Всё на очень высоком уровне. Однако если переходить к механике боя, то всё не так гладко. Игрок управляет максимум двумя персонажами, рядов как таковых нет, тактическая составляющая сводится к определению, когда какого врага замедлить/оглушить, и из-за этого бои превращаются в рутину.

Исходя из всего вышесказанного, я остановился на некоторой смеси Disciples, Child of Light и Darkest Dungeon. В игре у каждой стороны будет первый ряд, где должны преимущественно располагаться персонажи ближнего боя и второй ряд, для персонажей дальнего боя. В зависимости от того, в каком ряду находится персонаж, у вас есть возможность того или иного действия. К примеру, персонаж ближнего боя, находящийся во втором ряду, вероятнее всего будет бесполезен. Такой подход открывает простор для тактических действий во время боя. Количество персонажей вероятнее всего будет варьироваться от двух до шести в каждой группе, позволяя иметь достаточную вариацию действий в бою. Ниже представлен схематичный вид боя.

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

Всем привет. В этой статье я опишу тот опыт который я получил первый раз столкнувшись с анимацией персонажей, трудности с которыми я столкнулся и как мне пришлось их решать. Анимация — это важная часть любой игры, создающая живой мир и положительно влияющая на восприятие игрока.
Стоит сразу отметить, что я не рассматривал вариант с традиционной покадровой анимацией, в связи со сложностью её выполнения и соответственно огромной стоимостью.
Подготовка к анимации
Итак, после законченной работы художника я получил изображение персонажа (спасибо Артёму Думову за персонажа). Первым делом я решил обозначить активные части персонажа и как они будут себя вести. Забегая вперёд хочу сказать, что в самом начале я наделал ошибок в этом, казалось бы простом, действий. В итоге я уже в процессе анимации персонажа понял, что стоит анимировать, а что нет.

Открыв Photoshop я приступил к подготовке изображения для работы. Благо все основные элементы были на разных слоях. Несмотря на это я потратил много времени на то, чтобы разрезать изображение на множество ещё более мелких частей. Что резать, а что нет решать вам, всё зависит от того, какие части персонажа вы планируете анимировать.
Дальнейшие действия зависят от того где и как именно вы планируете работать с получившимся изображением. К примеру, After Effect может импортировать изображение прямо из PSD (Photoshop Document) файла. В моём случае (я работаю с Unity) мне были необходимы все элементы персонажа по отдельности, либо один большой атлас спрайтов подготовленный должным образом. Я посчитал, что спрайты по отдельности подойдут лучше, так как с ними проще работать. Что же до атласа, то Unity может создать его автоматически.
Для того чтобы из PSD получить набор спрайтов есть отличный скрипт на GitHub, работу с ним я отобразил на скриншоте ниже. Единственное, что мне осталось сделать это слить папки (в фотошопе слои у меня были разбиты на папки), в отдельные слои (скрипт работает со слоями). Помимо этого, скрипт предоставляет некоторый набор опций. Так как изображение с которым я работал было высокого разрешения, в поле PNG scale я установил значение 20%. Это было сделано для того, чтобы получившиеся спрайты были намного меньшего размера.

Работа со спрайтами в Unity
Теперь у нас есть набор отдельных элементов персонажа. Однако просто перенести спрайты в Unity недостаточно. Нужно правильно настроить их параметры. Справка по всем параметрам. Я же расскажу о тех, что нас интересуют в первую очередь.
- Установите соответствующий размер (Max Size) для вашего изображения. Размер вашего изображения должен быть не больше этой цифры (по горизонтали или вертикали), иначе качество изображения пострадает. Я рекомендую выбрать размер наиболее близкий к вашему, но с уклоном в большую строну, чтобы не снизилось качество изображения.
- Формат Truecolor работает без сжатия.
- Отключить Generate Mip Maps, этот параметр необходим для 3d. Использование Mip Maps требует на 33% больше памяти. Детали можете почитать в справке.
- Установить Packing Tag. Это как раз касается атласов и различных настроек. В дальнейшем это вам вероятное всего понадобится. Более подробно можете почитать здесь.
- Sprite Editor. Не забудьте настроить pivot’ы для изображений! После создания анимации будет уже поздно!

Инструменты анимации в Unity
Вот теперь мы подходим к одному из самых важных моментов. К выбору инструмента, с помощью которого вы можете анимировать ваше изображение.
Вероятно, существуют другие способы, и вы возможно сможете предложить лучший из них. Я был бы этому только рад.
Самый простой способ — это анимация с помощью встроенных средств Unity. Повороты, изменение координат, масштабирование. Это всё, что может предложить Unity для работы со спрайтами из коробки.
Другая утилита для скелетной анимации это Spine. Это, пожалуй, лучшее решение которое есть на сегодняшний момент. К сожалению, у него есть один серьёзный недостаток, его стоимость. Версия, которая позволяет работать с Mesh стоит 300$.
И бесплатный аналог Spine — GitHubSpritesAndBones. Форум, на котором вы можете задать вопросы — UnitySpritesAndBones. По моим наблюдением у SpritesAndBones, есть некоторые проблемы с производительностью при работе с большим количеством Mesh. В любом случае я остановлюсь более подробно именно на этом решении, так как оно позволяет сделать почти всё, что может Spine, но при этом бесплатно.
SpritesAndBones + Unity
Здесь я приведу пошаговую инструкцию по работе с анимацией созданной при помощи изменения Mesh. Я не претендую на исключительную правильность работы с этим инструментом, однако та анимация, что создана мной работает и была создана подобным подходом.
Итак, скачиваем SpritesAndBones с GitHub и помещаем в любую папку проекта на Unity. Я поместил в Assets\Plugins\SpritesAndBones. После этого запустив проект у вас появится дополнительный элемент в верхнем горизонтальном меню.

Выбрав Skeleton в иерархии у нас появится соответствующий объект. Несмотря на то, что использовать мы его не будем, он нам нужен, так как инструмент Skin 2D работает только на нём.
После этого необходимо расположить ваши спрайты на объекте Skeleton. Я рекомендую сразу группировать объекты которые возможно будут анимироваться вместе. К примеру, плечи моего персонажа будут подниматься и опускаться, а, следовательно, и руки. Логично поместить их вместе. У меня эти объекты находятся в Cape_L и Cape_R1.
Bone можно удалить, если вы не планируете использовать кости.

Далее выбираем спрайт который будем анимировать и создаём его копию (Ctlr+D). Я выбрал Skirt. Выбираем копию и выбираем Sprites And Bones -> Mesh Creator. Это необходимо, для того, чтобы вы создали нужный вам Mesh. Через Ctrl и клик мыши вы создаёте точки для сетки. Вы можете нажать Preview Mode для того, чтобы увидеть получившуюся сетку. После того как вы убедитесь, что создали подходящую сетку, необходимо сохранить Mesh, нажав кнопку Save Mesh.

Автоматически будет создана папка Meshes и туда поместится Mesh вашего объекта.

Теперь можно удалить ранее созданную копию спрайта, больше она нам не понадобится. После выбрав оригинальный спрайт заходим в Sprites And Bones -> Skin 2D. Скорее всего ваш спрайт станет чёрным, но мы сейчас всё поправим.
Перетаскиваем созданный нами Mesh в инспектор, в соответствующее поле Mesh в Skinned Mesh Renderer и Mesh Filter. После этого нажимаем на Create Control Points для создания точек, согласно вершинам сетки и Save as Prefab, для того чтобы сохранить префаб (простое перетаскивание в папку не работает).

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

Дальнейшее анимирование происходит по стандартным принципам Unity. Добавляете Animation Clip на необходимый объект, при этом Animator добавится автоматически, нажимаете запись и изменяете положение точек как вам необходимо. Ниже я записал простенькую анимацию для демонстрации.

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

p.s. И раз уж вы здесь, скажите, нравится ли вам наш персонаж, его оформление, стилистика? Что бы вы предложили поправить?
В связи с правилами, первые части статьи я не мог опубликовать здесь, так как они уже размещены на другом ресурсе. Однако начинать публикацию на хабре пропустив первые части, мне кажется плохим тоном. Поэтому этот пост содержит сразу три части. Спасибо за понимание.