12

Нюансы работы Animator в Unity, и как с ними жить

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


В игре RATOMON у меня была задача сделать порталы, порождающие врагов, с таким алгоритмом работы:

1. Определяется, сколько врагов сгенерирует портал.

2. Портал играет анимацию открытия.

3. Портал играет первую половину анимации "Свечения/Glow".

4. Возле портала появляется очередной враг.

5. Портал играет вторую половину анимации "Свечения/Glow".

6. Если все враги сгенерировались, то играется анимация закрытия портала. Иначе повторяется пункт 3 и последующие.


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


PortalAnimator.Play(RAnimations.PortalGlow);

duration = PortalAnimator.GetCurrentAnimatorStateInfo(0).length;


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


Так вот работало всё криво и косо: то анимации пропускались, то враги генерились с неправильными интервалами. Помогло обращение к форумам, где иногда встречается совет дождаться конца кадра или пропустить кадр. Например, тут EvilWarren пишет об этом.


Второй нюанс связан с тем, что аниматор получив один вызов Play будет игнорировать все последующие, сделанные в том же кадре. Скорее всего, я огрёб и от этого тоже. После применения советов с форумов порталы заработали, а код стал выглядеть "криво и косо".


animatedRoomPortal.PlayAnimation(RAnimations.Dummy);

yield return null;

PortalAnimator.Play(RAnimations.PortalGlow);

yield return null;

duration = PortalAnimator.GetCurrentAnimatorStateInfo(0).length;


Здесь запуск Dummy анимации может и не нужен, а остался с предыдущих экспериментов, когда анимация PortalGlow не хотела запускаться два раза подряд.


Если кто-то сможет указать, где в документации Unity описывается этот костыль, буду благодарен. Когда писал код, я этого не нашёл.


Выводы:

1. Если вы запускаете анимацию, а она не играется, - это норма. Подождите кадр перед запуском.

2. Если вам надо узнать продолжительность анимации, то после запуска подождите кадр и только после этого обращайтесь к Animator.GetCurrentAnimatorStateInfo(0).length.

3. Может игра и без анимаций выглядит ничё так.


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


Для тех, кто хочет посмотреть на порталы,

страница игры в Steam: https://store.steampowered.com/app/1586740/RATOMON/

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

Почему использовался именно Unity для создания RATOMON?

Замечание 1. Спасибо Grassnake за вопрос, почему для RATOMON я выбрал Unity. Размер ответа превысил мои первоначальные ожидания, а т.к. вопрос хороший, и есть ненулевая вероятность получить его в будущем, то пусть он будет в виде отдельного поста.


Замечание 2. С GameMaker сравнивать не могу, т.к. никогда не рассматривал его в качестве альтернативы и не углублялся в его возможности. Рассматривал Godot, и ниже будет понятно, почему не выбрал его.


Итак, почему Unity, а не другой движок/технология? С учётом жанра игры и её наполнения, как будто бы "лишний груз".

Почему использовался именно Unity для создания RATOMON? Инди, Gamedev, Unity, Красная или синяя таблетка?, Длиннопост

Но всё не так просто, ведь выбор инструмента для создания и публикации игры - это не всегда поиск "лучшего" инструмента. Это может быть и "наследство" прошлых частей: условно, надо сделать гоночную игру "Нужна скорость 3", и есть доступ к коду и наработкам от "Нужна скорость 2" и спин-оффа "Нужна ли скорость?", которые написаны на PHP и Lua; возможно, использовать прошлый код будет хорошим решением. С другой стороны может быть оптимальным использовать ту технологию, которую уже знают разработчики, чтобы сэкономить на переобучении. И это может быть выгодно, несмотря на то, что известная технология проигрывает альтернативам по каким-то показателям. Unreal для мобильных Hidden Object игр? 3D шутер на Ren'Py? Последнее - перебор, конечно, но смысл, надеюсь, передал, надо сравнивать детально плюсы и минусы.


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


Во-первых, для меня игра RATOMON была не только поводом для тщеславной ачивки "Моя игра есть в стиме" или алчного желания подзаработать (тут иллюзий не было никаких), но и попыткой переквалифицироваться на юнити-разработчика. До этого на офисной работе я касался нескольких юнити-проектов, но это было на пару-тройку месяцев каждый и с совмещением работы над другими проектами (C#, AS3/Haxe/JS). В общем, этого было бы недостаточно, чтобы "если что" найти хорошую работу (везде требуются годы опыта с Unity, и не все готовы учитывать 10+ лет опыта геймдев разработки на других технологиях). Ну а дальше вопрос востребованности специалиста решается монеткой: Unity vs Unreal. С анриалом я работал до этого, мне он не очень нравится (это на отдельную простыню текста можно расписать).


Во-вторых, когда-то давно я прочитал что-то типа "надо определиться, вы хотите делать игру или игровой движок", и, к своему сожалению, осознал, что мне игровые движки нравится делать больше. С этим надо бороться, потому что кастомные игровые движки нафиг никому не нужны. Ну и чтобы максимально оторваться от привычного прототипостроения, я взял не просто Unity, а ещё и TopDown Engine поверх. Загнал себя в угол построения именно игры. Это помогло, хотя в отдельных аспектах срывался и срываюсь до сих пор, тратя время на внутренние шестерёнки, вместо бросающегося в глаза визуала. Сюда же можно добавить, что я начал с топ-даун шутера, но не собираюсь ограничиваться только этим жанром. Может быть, сделаю продолжение RATOMON'а и ещё одну игру (которая уже лет 9-10 ждёт в отдельной папке А4 листов, недодизайненная и едва начатая на флеше), а потом попробую другие жанры, в том числе, в 3D. Наверно, это тоже аргумент для "почему не GameMaker".


В-третьих, как недавний представитель корпоративной среды (и здравого смысла), я понимаю, что с нуля написать ВСЁ - это или сроки взлетят, или игра станет памятником минимализма. Изначально я на 4 месяца рассчитывал, включая вспоминание и изучение нужных кусочков Unity. А делать что-то минималистичное, типа Downwell, - это немного конфликтует с пунктом 1, ведь для освоения инструмента надо попытаться охватить максимальное количество его возможностей. Чтобы и сроки держать в узде, и не скатываться в монохромный гиперказуал, надо иметь доступ до "кирпичиков", которые сделали добрые люди за меня. У юнити для этого есть ассет-стор, где иногда бесплатно, иногда по нормальной скидке можно взять супер-полезные штуки. Тот же Rewired или I2 Localization сэкономили много времени (на их освоение, правда, тоже не один день ушёл). Есть ли подобное в Godot? Да, есть. Но там всё сильно скромнее. И, отскакивая в сторону, в лицензии для Unity ассетов есть приятный момент: их можно использовать в других движках (если я когда-нибудь до них доберусь).


Это - основные причины. По каждой можно ещё углубиться, если есть желание. Ну и можно пару микропричин упомянуть, которые тоже учитывались, а именно: язык программирования для движка (и поддержки IDE для него) и возможность работать в линуксе. Задавайте ещё вопросы, а я буду учиться отвечать короче.

Показать полностью 1
5

Побочный продукт изготовления трейлера для игры

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

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

22

Опыт применения генератора рандомных подземелий DunGen в игре RATOMON

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

Опыт применения генератора рандомных подземелий DunGen в игре RATOMON Unity, Asset, Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

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


*комната

В какой-то момент автор переименовал "комнаты" в "тайлы" (набор комнат - в "TileSet", соответственно), создав путаницу с родными юнитёвыми тайлами и тайлсетами. В чём была причина переименования, я не знаю.


**главный маршрут

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

Главный маршрут создаётся в первую очередь, а потом уже генерируются ответвления, если они предусмотрены правилами.

Опыт применения генератора рандомных подземелий DunGen в игре RATOMON Unity, Asset, Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

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


Кратко, формулы генерации можно так записать (Внимание! Сейчас будет непонятно):


DF = STS + DA + (N|DA)^X + GTS.

DA = TS + (TS)^X

N = TS + (TS)^X

TS = T + (T)^X


Расшифровываю снизу-вверх:


T - Tile - это комната, конкретная комната, в ней есть двери, через которые игрок может в неё зайти. В неё можно также добавить компонент Local Prop Set, о нём ниже расскажу.


TS - TileSet - это набор комнат, в процессе генерации DunGen будет случайным образом доставать комнату из тайлсета и пытаться присоединить её к уже созданным комнатам. Скорее всего, комнаты каждого тайлсета будут соответствуют определённому стилю.


^X - это я так обозначил повторение элемента.

(T)^X - от нуля до бесконечности тайлов.

(TS)^X - от нуля до бесконечности тайлсетов.


STS - Start TileSet - набор комнат, одна из которых будет выбрана случайным образом и станет стартовой комнатой.


GTS - Goal TileSet - набор комнат, одна из которых будет выбрана случайным образом и станет финишной/целевой комнатой.


Напомню, путь от старта до финиша/цели - это главный маршрут, он создаётся в первую очередь.


N - Node - это комната, посреди лабиринта, может быть выбрана из нескольких заданных для неё тайлсетов.


DA - Dungeon Archetype - архетип подземелья (непонятный набор букв;+)). Смысл архетипа в том, что подземелье может состоять из нескольких разных кусков, для каждого из которых можно задать визуальный стиль, правила ветвления (количество и глубину ответвлений) и ещё несколько параметров.

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


DF - Dungeon Flow - это самое высокоуровневое описание лабиринта. Тут описывается, сколько всего комнат будет в главном маршруте, будет ли количество ответвлений считаться глобально для всего лабиринта или для каждой комнаты отдельно и самое интересное: из каких составных частей лабиринт состоит.

Опыт применения генератора рандомных подземелий DunGen в игре RATOMON Unity, Asset, Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Ещё раз приведу картинку с главным маршрутом, чтобы не листать туда-сюда:

Опыт применения генератора рандомных подземелий DunGen в игре RATOMON Unity, Asset, Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Здесь разными цветами показаны:

красная комната - одна из комнат тайлсета STS,

зелёная - из тайлсета GTS.

жёлтые комнаты - из тайлсета первого архетипа,

оранжевые - из тайлсетов второго архетипа,

между ними - комната "минибосса" из соответствующих тайлсетов ноды,

фиолетовая - комната "босса" из тайлсетов второй ноды,

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

белая - это часть функционала Special Tile Injection.


Если после этого описания просветление не наступило, ничего страшного. На практике оно гораздо проще, чем в описании.

Перейду к личному опыту.

1. Первый нюанс, с которым сталкиваешься при работе с DunGen, - это ориентация дверей: обратите внимание, что углы поворота для обычной стены - нулевые, а вот для стены под Doorway - творится "дичь" (сама дверь там тоже вывернута). Выворот идёт для того, чтобы "внешняя" сторона двери была направлена наружу (капитан, вы здесь?). К этой внешней стороне двери будет прикладываться внешняя сторона двери другой комнаты. И комнаты могут законтачиться только так. Почему не получается обойтись без лишних поворотов, я год назад не понял. Может надо ещё раз попробовать.

Опыт применения генератора рандомных подземелий DunGen в игре RATOMON Unity, Asset, Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

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

Опыт применения генератора рандомных подземелий DunGen в игре RATOMON Unity, Asset, Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Здесь же вспомню про Local Prop Set. Смысл в том, что можно в комнату накидать кучу всякого добра, а компонент Local Prop Set в момент генерации оставить из кучи пару элементов (столько, сколько задано в его настройках). В RATOMON так определяется, сколько баннеров останется висеть на стенах.

Опыт применения генератора рандомных подземелий DunGen в игре RATOMON Unity, Asset, Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

2. Ещё один нюанс связан с общим количеством комнат в лабиринте. Допустим, длина главного маршрута - 10 комнат, от каждой комнаты может быть 0, 1 или 2 ответвления, и длина ответвлений для этого архетипа варьируется от 0 до 5. И вот сюрприз: итоговый лабиринт случайным образом может быть как 10 комнат, так и 82. В среднем, конечно будет около 40, но сбалансировать игру с таким разлётом нереально сложно. Не увеличивать же скорость бега игрока для "неудачных" генераций?


В итоге, эта задача решилась написанием кастомного кода в генерирующем лабиринт методе, автор подсказал конкретное место, куда его лучше добавить и скинул пример кода.


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

3. Последний кусочек личного опыта связан с ограничением видимости (culling) для комнат, которых "не видно". Но тут всё предельно скучно, в DunGen есть функционал для этого, мне пришлось дописать всего один метод, чтобы скрыть комнаты, в которые игрок ещё не заходил (а то вдруг обрадуется раньше времени).


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


Надеюсь, вам это ассет придётся по душе, и вы поделитесь своим опытом применения DunGen или аналогов в своих играх. А любопытные богачи могут уже сейчас посмотреть, как это работает в RATOMON.


Микро-иллюстрация режима, где DunGen собирает некоторую аналитику, исходя из текущих настроек лабиринта:

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

Вопрос про Unity ассет. Стоит ли брать Dungeon Architect, имея DunGen?

В ассетсторе у Unity очередной "аттракцион невиданной жадности", и немного странно, что здесь о подобном не принято писать (или запрещено?!). А это ж хороший повод поделиться опытом работы с тем или иным ассетом, с болью от использования* или, наоборот, использованием от боли**. В конце концов, нынче разработка игр и программирование в целом - это "меньше велосипедов, больше переиспользуемых компонентов" (читай, игра в кубики).

В текущем бандле продаётся Dungeon Architect, который уже пару лет томится в моём вишлисте. Настолько долго, что я успел купить его "конкурента" - DunGen, сделать на его основе игру, и выпустить её в Steam.


Так вот вопрос для того, кто работал с Dungeon Architect и DunGen: стоит ли разбивать копилку? Есть ли в DA что-то принципиально лучшее, чем в DG, или лучшее для определённых сценариев использования?


Про DunGen, если интересно, могу рассказать отдельно и подробнее. Если кратко, то ассет отличный, документация понятная, дописать/расширить код относительно легко, автор на форуме помогает (вплоть до написания кода решения твоей проблемы).

* Smart Lighting 2D. Несмотря на оперативность автора в дискорде по решению проблем и вопросов, это один из двух моих самых "ААА"-ассетов (это не триплЭй, это крик боли).

** Selection History. Навигация по ассетам в юнити - боль, особенно, учитывая, что периодически приходится перетаскивать ссылки из окна Project в окно Inspector. Selection History чуть-чуть облегчает жизнь.

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

Плагин для Unity: авто-конвертация krita-файлов в png

Обещанный в прошлом посте плагин. Суть та же - правим файл в Krita, сохраняем, переключаемся на Unity, запускается скрипт плагина, рядом с критовским файлом появляется png.

Дополнительная причина для использования этого плагина, - это то, что Unity не поддерживает kra-файлы "из коробки", их всё равно приходится экспортировать.


Код плагина на гитхабе, лицензия MIT. Для линукс пользователей достаточно будет скачать репозиторий и поправить путь до архиватора 7z (если он уже прописан в переменных окружения, то ничего делать не надо). Любителям Windows и MacOS, как и в прошлый раз, могу предложить моральную поддержку.)) Ну и рассказать, что там да как, если у вас руки дойдут сделать поддержку остальных систем раньше меня.

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

Девлог RATOMON'а: пятничный апдейт и бла-бла-бла

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


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

В моём случае, пара недель апдейтов - это ожидаемый минимум.

Девлог RATOMON'а: пятничный апдейт и бла-бла-бла Инди, Инди игра, Indiedev, Gamedev, Topdown, Unity

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


Ещё приход-расход монет стал более осмысленным. Лишних денег, вроде, не появляется, но и копить всю игру на микро-апгрейд тоже не придётся.


Финал игры сделал более положительным, раньше она заканчивалось на "все умерли", теперь... не все.


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


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

Показать полностью 1
13

Плагин для Unity: авто-конвертация aseprite в png

Пока разрабатывал RATOMON, думал, что пиксель-арт - это лампово, здорово и вообще "моё". Ну почти так и вышло. С другой стороны, когда в папках скапливается больше пары десятков исходников kra, ase, aseprite начинается дискомфорт.


К сожалению, aseprite-файлы не показывают свои изменения в системах контроля версий (я пользуюсь встроенной в Rider, но такое много где реализовано, например, для png). И если что-то неочевидное из коммит-сообщения, но важное визуально, поменялось, узнать это можно только скачав обе версии, а потом открыв их в Unity или Aseprite.


Плюс обычные png и jpg файлы показывает почти любой файловый менеджер, можно беглым взглядом оценить всю графику из той или иной папки. Альтернатива неудобна до уровня "не буду использовать" - это смотреть через Unity или каждый файл открывать отдельно в Aseprite.


Собственно, я сначала написал плагин конвертации исходников в png для Krita, и уже не мог заставить себя работать в Aseprite, перетащил всю графику в kra-формат. А сегодня посидел пару часов и сделал то же самое для Aseprite (теперь смогу вернуться к нему для анимаций).


Выложил конвертатор для Aseprite сюда - https://github.com/justalexi/unity_aseprite_exporter

Для Krita чуть-чуть код подчищу и тоже выложу.


PS. Важное замечание: так как я писал и тестировал плагин под линуксом, у вас на Windows и MacOS может чего-нибудь не работать. Если у вас время и желать поддержать остальные системы, MIT-лицензия и мои комменты вам в помощь, там супер-сложного ничего не должно быть.

Чисто для иллюстрации, как это выглядит: правим файл в Aseprite, сохраняем, переключаемся на Unity, запускается описываемый скрипт.

Показать полностью 1
50

Мой первый релиз в Steam. Крысы, ассеты и 8 месяцев жизни

Всем привет!


Продолжаю попытки рассказать о своей игре, и на этот раз повод самый приятный: релиз!


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

Мой первый релиз в Steam. Крысы, ассеты и 8 месяцев жизни Инди, Indiedev, Gamedev, Topdown, Unity, Madewithunity, Длиннопост

По жанру RATOMON - топ-даун шутер. Пару лет назад я сильно заигрывался в Enter the Gungeon, но не только поэтому хотел в таком жанре делать. А тут ещё TopDown Engine со скидкой продавался, так что "звёзды сошлись".


Звёзды-то сошлись, и что дальше? А дальше тернии-тернии, ДевГАММ, выгорание, тернии, питерская жара... Около 5 раз переносил срок выпуска игры. Сначала хотел делать всё исключительно своими силами (плюс ассеты из юнити-магазина и хамбл-бандла), но здравый смысл победил, и под конец разработки обратился к профессионалам.

Мой первый релиз в Steam. Крысы, ассеты и 8 месяцев жизни Инди, Indiedev, Gamedev, Topdown, Unity, Madewithunity, Длиннопост

Угадайте, где рисовал программист.)


Из явно правильных решений было взятие максимального количества готовых ассетов, включая TopDown Engine, DunGen, Rewired, Databox и ещё около 20. Плюс графика, музыка и звуки из хамбл бандлов. Без этой подмоги игра никогда бы свет не увидела, я бы просто забил после пары недель строительства прототипа. Так уже бывало не раз.


Из неправильных решений были попытки всунуть эти ассеты любой ценой. Например, кучу времени было потрачено, чтобы Dialogue System заработал, но там начался такой "карнавал" костылей, чтобы подружить его с другими ассетами, что смех и слёзы... только без смеха.


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


Спасибо за внимание! И до скорой встречи!


PS. Скриншоты, для тех, кому это важно.

Мой первый релиз в Steam. Крысы, ассеты и 8 месяцев жизни Инди, Indiedev, Gamedev, Topdown, Unity, Madewithunity, Длиннопост
Мой первый релиз в Steam. Крысы, ассеты и 8 месяцев жизни Инди, Indiedev, Gamedev, Topdown, Unity, Madewithunity, Длиннопост
Показать полностью 4
10

RATOMON. Раньше карта была, кхм... лучше?

Привет, коллеги и сочувствующие нам!


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


Она слева, текущий вид справа:

RATOMON. Раньше карта была, кхм... лучше? Инди, Indiedev, Gamedev, Topdown, Unity, Ностальгия, Видео

Кто бы мог подумать, что 8 месяцев достаточно, чтобы успели созреть ностальгические чувства. Вспомнилось, как покупка TopDown Engine (TDE) для Unity стала триггером начала работы над игрой, и как ВСЁ было построено на механизмах этого субдвижка. Вспомнилось, как я пытался сделать на этой карте движение "по клеточкам", и как это криво работало.


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

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

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


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

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