WhiteCoyo

WhiteCoyo

Начинающий Unity Developer
Пикабушник
183 рейтинг 2 подписчика 2 подписки 2 поста 1 в горячем
Награды:
5 лет на Пикабу
13

Forgotten Lands: Chronicles

Доброго времени суток! Хочу рассказать о своей игре, которую делаю в качестве хобби по вечерам уже почти 2 года – Forgotten Lands: Chronicles. Эта компьютерная ролевая игра с элементами пошаговой стратегии расскажет историю мира Славории, подозрительно похожего на Древнюю Русь.

Предыстория

История игры начинается в 2019 году после очередного прохождения King’s Bounty. Легенда о рыцаре. Пройдя игру, мне захотелось сделать что-то похожее. Делать самый первый прототип я начал в Unity. Одной из первых механик было сделано боевое поле с возможностью движения по нему существ. Для построения маршрута к клетке конечной клетке использовался волновой алгоритм поиска пути. Пришлось немного пошаманить, чтобы вместо обычных клеток-четырехугольников алгоритм корректно работал с гексагонами. Получилось сделать, чтобы можно было атаковать вражеское существо со всех окружающих его гексагонов. Для существ я сделал несколько моделей по всем известному мультфильму.

Прототип сцены боя на Unity

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

Редактор диалогов

Редактор диалогов

Соединив эти два элемента на одной сцене, у меня вышла дешевая подделка King’s Bounty. Безтекстурная лошадь могла бегать по поверхности и открывать диалог с одним НИП.

Собранный прототип прототипа на Unity

На этом я пока успокоился и задвинул проект в далекий ящик.

Переход на Godot

А потом спустя какое-то время случился скандал с ценовой политикой Unity. Начитавшись на сабреддите r/Unity как все переходят на другие движки, я скачал Godot. И конечно же первый делом решил перенести этот проект. Как оказалось, это было не трудно, и за пару дней у меня было все готово. С этого момента и начинается путь Forgotten Lands. Мне понравился Godot, понравился язык GDScript. И я решил доделывать наработки до полноценной игры.

В первую очередь были сделаны основные механики:

  • движение игрока по карте

  • когда враги догоняют игрока начинается бой

  • игрок можно «заходить» в здания и общаться с НИП

  • игрок может покупать существ

  • при выборе определенных ответов случаются какие-то события

Разработка

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

  • Пограничье – зона, которая находится на границе с Забытыми Землями

  • Царьград и окрестности - столица Славории

  • Болота, в которых живет Баба Яга

  • Дремучий лес

  • Забытые Земли

Пограничье, Царьград, Болота, Дремучий Лес, Забытые Земли

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

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

Пришло время делать существ, с которыми придется столкнуться игроку. Для моделей некоторых существ я использовал сервис meshy.ai, но текстуры рисовал сам вручную. Все модели зданий и объектов в игровом мире я тоже сделал сам.

А вот иконки существ и предметов всецело сгенерированы нейросетью «Шедеврум» и «Кандинский».

Всего в игре получилось 30 существ:

  • 3 мини босса

  • 23 обычных существа

  • 4 специальных существа (этих существ нельзя купить, они появляются только по сюжету в качестве врагов)

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

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

Игрок повышает свой уровень, получает очки, которые можно распределить в одну из характеристик (атака, защита, здоровье, количество шагов). Опыт для уровней дается за бои и за прохождение заданий. За определенное количество очков одной характеристики героя существа получают бонус к аналогичной характеристики. Например, за каждые 4 очка здоровья у персонажа все существа получают +1 к своему здоровью. Так же с повышением опыта увеличивается "могущество" игрока. Чем больше "могущества", тем больше существ можно нанять.

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

Геймплей.

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

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

Страница игры itch.io: https://whitecoyote.itch.io/forgotten-lands-chronicles

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

Supaplex Unity3d Clone

Добрый день, уважаемые пикабушники!

Хочу рассказать вам о своих небольших наработках по клонированию замечательной старенькой игры – Supaplex. Для тех, кто не знает, игра Supaplex вышла в 1991 году. Это двухмерный платформер, в котором предстоит играть за компьютерный вирус Мёрфи. Игра происходит внутри компьютера, необходимо проходить головоломки, собирать специальные объекты "Инфотроны", стараться не загонять себя в безвыходные ситуации. В игре много разных блоков: дискеты-взрывчатки, сник-снеки (ножницы), оперативная память, печатная плата, электроны, порты, зонки. Всего в игре 111 уровней.

Сам я про эту игру узнал не так давно, коллега по работе принес и дал поиграть. В итоге мы немного посоревновались, кто пройдет все уровни быстрее, но так и не прошли все, а остановились в районе 50 – 60 уровней.

Как раз в это время я ковырял Unity и решил попробовать перенести все механики на этот движок, но уже не в 2d, а в 3d. Скажу честно, получилось не очень. До конца так и не удалось перенести всё достоверно, а то что есть – иногда работает неправильно (это баг, а не фича). Но, обо всем по порядку.

Итак, началось все с того, что я захотел перенести Supaplex на Unity и подумал, что не буду смотреть дизассемблированную версию оригинала. Все делалось с нуля и максимально похожим на оригинал.

Для начала надо было решить, как поступить с уровнями. В Unity есть замечательная функция, которая позволяет читать изображение по пикселям. Поэтому, было решено, что все уровни будут изображениями размером 58х22 пикселей (такой размер оригинальных уровней - 58 блоков на 22 блока). Каждый пиксель имеет свой цвет, который соответствует определённому блоку (например, (255, 0, 0) – это цвет Мёрфи, главного игрока). Unity анализирует изображение, определяет, какой цвет соответствует тому или иному блоку, и ставит его в нужную позицию. Теперь для создания уровня нужны были все блоки и "карта уровня". Но как получить "карты уровней", если не знать, как достать их из оригинала.

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

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

После того, как получились карты уровней, началась работа над моделями. Есть две версии игры, с более хорошими моделями и есть версия (первоначальная), в которой модели были сделаны ужасно, совсем не обращалось внимания на количество вершин и треугольников. Это очень сильно сказывалось на производительности. В текущей версии во всех блоках максимально уменьшено количество треугольников, где их не видно – там все удалено. Вот вид "лицевой":

А вот "со спины":

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

Было:

Стало:

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

Ну вот, все блоки готовы, сделан простой скрипт построения уровня.

А вот, как выглядит уровень уже после работы скрипта:

Остается самое веселое – оживить это все.

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

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

И не только ножницы, но и электроны (да, у них одинаковое поведение):

Ну, еще немножко похвастаюсь

Вот главное меню оригинала:

А теперь моя версия:

Видео прохождения первого уровня (прошу прощения за качество и ватермарку):

Итак, поведем некоторый итог.

На данный момент есть возможность поиграть во все 111 уровней, правда пройти некоторые невозможно. Не реализовано изменение гравитации, и нет блока «Баг» (это обычная печатная плата, которую пробивают электрические разряды), блоки в некоторых ситуациях ведут себя некорректно. Работы еще очень много.

Планы на будущее.

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

Всем большое спасибо за внимание и уделенное время!

Всем добра и успехов!

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

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества