4

Another realm(временное название) - дневники разработки, часть 3

Очередной апдейт моей игры. Решил почаще выкладывать посты с небольшими обновлениями. За последние пару дней я изучил 1 очень полезный бесплатный ассет и интегрировал его в игру. Он отвечает за модель персонажа, позволяет надевать на него различные элементы одежды и снаряжения, изменять и заменять различные части тела и упрощает разработку в плане нового снаряжения. Кроме того я поменял ассет отвечающий за выделение предметов и персонажей и поигрался с травой. Честно сказать я поражен качеством и производительностью травы, которую можно выжать из юнити.


Подробнее о концепте игры и планируемых фичах можно прочитать в предыдущем длиннопосте: https://pikabu.ru/story/another_realmvremennoe_nazvanie__dne...


З.ы. бонус в комментах.

Дубликаты не найдены

+5
Так и запишем: поражен качеством травы...
раскрыть ветку 3
+2

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

раскрыть ветку 1
+1

))

0

))

+1

Бонус : когда поражен качеством травы в своей игре

раскрыть ветку 12
0
А какой сидел будет у игры?)
раскрыть ветку 11
0

Сидел?

раскрыть ветку 10
0

Можешь рассказать каким образом сделал сохранение предметов в инвентарь.

Я всю думаю как это запилить получше в UE4. А точнее как хранится и передается информация о подбираемом предмете.

раскрыть ветку 5
0

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

раскрыть ветку 4
0

Просто у каждого предмета разные характеристики . Условно мечей есть атака у брони показатель брони) так вот. Нужно чтобы в инвентаре при наведении на предмет показывались только его характеристики.

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

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

раскрыть ветку 3
0
Я был поражен, как пытаясь показать качество травы, на нее так ни разу и не была направлена камера. И эти хаотичные повороты туда, сюда, туда, сюда. Я так мышкой дергал в этоху винХР когда ждал какую нить прогрузку.
п.с. если не батхертить: - Очень крутые результаты. Рад твоим стараниям и успехам. Надеюсь когданить расказать внукам: Ооо, я видел становление dlich'a.
раскрыть ветку 1
0

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

0

А есть варианты посотрудничать?

раскрыть ветку 1
0

Есть. В предыдущем посте описал кто мне требуется для проекта. Но готов на переговоры, если даже вы не подходите по условиям. Мой дискорд: dlich

#9427

0

Гифка прикольная, да )

0
Unity?
раскрыть ветку 1
+1

Юнити.

Похожие посты
148

Я не Ло_Ох! (для тех, кто еще и в танке)

Друзья, всем мои поклоны!


Сегодня будет настоящий первоапрельский пост без корон и вирусов :-)


Прошло аж 4 месяца с момента, когда мы RIP танчики

Ничего не поделаешь, на гугл-плей не вернёшься без серьёзной переделки графики и звуков. Айфонщики так же просили сделать версию для них, но это все закончится так же, как только кол-во скачиваний подтянется в 3-5 тыс в день.

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

Я не Ло_Ох! (для тех, кто еще и в танке) Танки, Unity, Aso, Продвижение, 1 апреля, Маркетинг, Разработка, Длиннопост

Как всегда игра будет бесплатная и без рекламы. Вечная ссылка на нее: https://battlecityonline.com/

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


Еще отдельно по веб-версии: Бог даст мы выделим время, чтобы "допилить" возможность играть вдвоём. Работаем. Будем очень постараться.


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

Если честно, думал, что мы сделаем его дня за 3. Ну сделали конечно )) Но публиковать застеснялись :-)

Выглядело это так:

Я не Ло_Ох! (для тех, кто еще и в танке) Танки, Unity, Aso, Продвижение, 1 апреля, Маркетинг, Разработка, Длиннопост

Клёво, чо.

Я не Ло_Ох! (для тех, кто еще и в танке) Танки, Unity, Aso, Продвижение, 1 апреля, Маркетинг, Разработка, Длиннопост

Решили всё-таки вложить души и труда в это дело. Скрины пришлось вытаскивать из переписок, потому некоторые картинки будут не в самом лучшем качестве:

Я не Ло_Ох! (для тех, кто еще и в танке) Танки, Unity, Aso, Продвижение, 1 апреля, Маркетинг, Разработка, Длиннопост

Добавили живое звёздное небо, стерео звуки (которые записывали с микрофона прямо под игру), мотивашки, пасхалки, НЛП-шки, квесты, рейтинги, таблицы, отчеты, казначейные и т.п. Короче 4 месяца мы упарывались в то, чтобы никто не:

Я не Ло_Ох! (для тех, кто еще и в танке) Танки, Unity, Aso, Продвижение, 1 апреля, Маркетинг, Разработка, Длиннопост

Добро пожаловать в империю НЕ Лохов: https://play.google.com/store/apps/details?id=com.AAGaming.I...


Цель - стать главным не лохом планеты!


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

* Люди могут получать 1 ЯНЛ каждый час просто так;

* Игроки могут получать ЯНЛ с вероятностью 100% (-10% каждый раз после получения);

* Люди могут, вкладывая свой труд, поднимать вероятность получения ЯНЛ

* Люди могут стать учеником какого-то опытного ментора и получить за это огромную плюху;

* Люди могут стать менторами и получать за это не менее огромную плюху в виде пачки ЯНЛ;

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

* Люди могут выпонять квесты и становиться все большими не лохами!

==

Отдельно скажу про 2 опции, которые мы разработали ночью: Квест "Совпадение вкусов" (про любимый сайт) и квест "Карантинка" (про руки с мылом) уже реализованы и прямо сейчас загружены на Google Play. Обновление появится так скоро, как только его промодерирует гугл. Самое позднее - завтра в обед. Остальное работает в полной мере.

Пара скринов из гугл-плей:

Я не Ло_Ох! (для тех, кто еще и в танке) Танки, Unity, Aso, Продвижение, 1 апреля, Маркетинг, Разработка, Длиннопост
Я не Ло_Ох! (для тех, кто еще и в танке) Танки, Unity, Aso, Продвижение, 1 апреля, Маркетинг, Разработка, Длиннопост

Спасибо, что посмотрели в плохом качестве :-)

Теперь о маркетинге. В данном контексте это просто бездонное дно. Пример:

Я не Ло_Ох! (для тех, кто еще и в танке) Танки, Unity, Aso, Продвижение, 1 апреля, Маркетинг, Разработка, Длиннопост

Словом обыгрывать кто не лох и по какой причине он не лох - это Марианская впадина маркетинга :-)


Что в ближайшее время мы еще туда добавим:

* Рейтинги в разных языковых группах

* Возможность "применять санкции" к явным лохам

* Возможность поощрять товарищей

* Добывать янелохскую руду

* Чеканить монеты ЯНЛ

Ну и т.п.


Список изменений у меня сейчас составляет несколько сотен пунктов. Самое главное, чтобы это были максимально ненужные людям функции :-)

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


Работы много. Если кто-то захочет помочь в продвижении - пишите мне в личку: https://vk.com/aleksey_golyatkin - мой персональный рекорд - я отвечал 500 человекам в день :-) Возможно придётся создать отдельный телеграм канал.


В общем всех с праздником! Всем позитива! Будьте не лохами!

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

Unity предоставляет три месяца бесплатного доступа к Unity Learn Premium в связи с вирусом COVID-19

С 19 марта по 20 июня открыто все и вся, куча обучающего материала, от вас только зарегистрироваться на офф сайте.

Отличный шанс начать хоть что-то делать, если вы давно хотели начать работать с Unity.

С начала движухи прошло уже больше недели, но как показала практика, мало кто об этом знает.

Так что, вперед!

Unity предоставляет три месяца бесплатного доступа к Unity Learn Premium в связи с вирусом COVID-19 Unity, Unity3d, Gamedev, Халява, ЛучшеДома
150

Магическая Gothic по-русски - или рассказ о RPG SpellMaster The Saga

Вначале было слово, и слово было... Тетриандох?)

Всем привет, сегодня мне бы хотелось рассказать вам об находящейся в разработке отечественной игре SpellMaster The Saga. Данная игра представляет собой одиночную ролевую игру с видом от третьего лица в мрачном фэнтезийном сеттинге. Основным источником вдохновения для разработчиков является Gothic 2: Ночь Ворона.
Разработкой игры занимается маленькая инди-команда Spellbook Creations, основанная бывшими разработчиками Life is Feudal: Forest Village. SMTS разрабатывается на UE4.

Особенности игры:
+ Открытый, мрачный и недружелюбный мир
+ Ночи, полные опасностей и монстров
+ Возможность построить с нуля собственную магическую академию-цитадель и набрать в неё учеников
+ Широкие возможности по комбинированию заклинаний и их эффектов между собой
+ Нетривиальная система прокачки главного героя

Прямо сейчас поиграть в SpellMaster The Saga пока ещё нельзя, но можно подписаться на нас в нашей группе вк и добавить игру в вишлист в Steam, чтобы ничего не пропустить.
Страница игры в Steam: https://store.steampowered.com/app/1247100/SpellMaster_The_S...

Будем рады обратной связи и поддержке от разработчиков и любителей классических ролевых игр!

Магическая Gothic по-русски - или рассказ о RPG SpellMaster The Saga RPG, Компьютерные игры, Ролевые игры, Gothic, Indiedev, Gamedev, Разработка, Открытый мир, Видео, Длиннопост
Магическая Gothic по-русски - или рассказ о RPG SpellMaster The Saga RPG, Компьютерные игры, Ролевые игры, Gothic, Indiedev, Gamedev, Разработка, Открытый мир, Видео, Длиннопост
Магическая Gothic по-русски - или рассказ о RPG SpellMaster The Saga RPG, Компьютерные игры, Ролевые игры, Gothic, Indiedev, Gamedev, Разработка, Открытый мир, Видео, Длиннопост
Магическая Gothic по-русски - или рассказ о RPG SpellMaster The Saga RPG, Компьютерные игры, Ролевые игры, Gothic, Indiedev, Gamedev, Разработка, Открытый мир, Видео, Длиннопост
Магическая Gothic по-русски - или рассказ о RPG SpellMaster The Saga RPG, Компьютерные игры, Ролевые игры, Gothic, Indiedev, Gamedev, Разработка, Открытый мир, Видео, Длиннопост
Магическая Gothic по-русски - или рассказ о RPG SpellMaster The Saga RPG, Компьютерные игры, Ролевые игры, Gothic, Indiedev, Gamedev, Разработка, Открытый мир, Видео, Длиннопост
Показать полностью 6
35

Оптимизация Unity проектов

Я не являюсь гуру-профессионалом, но думаю многим начинающим пригодиться эта информация по оптимизации Unity проектов на примере моей игры Last Floor.
Оптимизация Unity проектов Gamedev, Игры, Компьютерные игры, Разработка, Оптимизация, Unity, Steam, Длиннопост

Что будем оптимизировать:


Звуковые файлы

Для звуковых эффектов нужно использовать wav файлы 44кгц, обязательно в моно формате (Или ставить галочку Force To Mono. Для музыкальных треков оставить стерео). Quality лучше всего оставить 100.


Для ускорения загрузки сцены лучше поставить галочку Load In Background, кроме звуков которые воспроизводятся сразу при старте сцены.


Материалы

Тут все просто - меньше материалов в Unity, больше статики и будет больше FPS Игры.


Свет

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


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

Вообще настройка света и отражений в Юнити это тема для отдельной статьи.


Модели

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

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

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


Различные мелкие модели лучше объединить в наборы и использовать одну текстуру, это сократит количество материалов в Юнити и в целом очень хорошо скажется на итоговом FPS игры.

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

Оптимизация Unity проектов Gamedev, Игры, Компьютерные игры, Разработка, Оптимизация, Unity, Steam, Длиннопост

Развертка

Заполнять квадрат текстуры нужно по возможности максимально плотно но при этом оставляя отступы (8-16 пикселей для текстур 2к), чтобы при меньшем размере текстуры не было артефактов.


Одинаковые элементы складывать в кучу и сдвигать на 1 пункт за пределы координат (Это позволит избежать артефактов при запекании Normal и Ambient Oclusion карт).


Текстуры

Следует избегать больщих текстур 8-4к, лучше всего разместить модель на сцене и в редакторе Юнити постепенно уменьшать размер текстуры до появления мыла.


Большинство моделей с хорошей разверткой влезают в текстуру 1-2к без мыла.

Так же нужно упаковать текстуры Metallic и Smoothness в один файл для страндартного рендера. (R-Metallic, G-Пусто, B-Пусто, A-Smoothness). Для рендера HDRP будет другая техника упаковки текстур.


Для уменьшения размера билда используем сжатие CrunchedDX1 для обычных текстур и CrunchedDX5 для текстур с альфаканалом.


Код

Избегайте операций в Update, следите за нагрузкой CPU, пишите хороший код ;)

Оптимизация Unity проектов Gamedev, Игры, Компьютерные игры, Разработка, Оптимизация, Unity, Steam, Длиннопост

Итого у меня получилось:

Размер билда: 586Мб.

Строк кода: 5219

Моделей: 321

Текстур: 512

Звуковых файлов: 122

Музыкальных треков: 5 штук общей длительностью 25 минут.

Площадь локации: 10878 м2


Надеюсь мой опыт поможет вам сделать хорошую игру.


Страница игры в Steam: https://store.steampowered.com/app/1251300/Last_Floor/

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

Как я в армии игру делал

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

Как я в армии игру делал Gamedev, Армия, Unity, Длиннопост

Грубо отпечатанный клочок бумаги требовал отдать первородный долг, обещая бесплатный годовой абонемент на тренинг «Не служил не мужик». В запасе у меня было 3 месяца свободной жизни, а несколько попыток устроиться по специальности разбились о:


- Мы тебя сейчас обучим, а ты в армию уйдёшь. Ты сначала отслужи, а потом приходи.


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

Как я в армии игру делал Gamedev, Армия, Unity, Длиннопост

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


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

Как я в армии игру делал Gamedev, Армия, Unity, Длиннопост

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


Гордый, но не сломленный 4 пень, и вечно орущий свинячим голосом каспер, напоминал мне о далёком детстве и о том, что воткнуть сюда Unity (движок для разработки игр) не получится. Почти смерившись с тем, что придётся служить, а не делать игры я узнал о смене командира нашей роты. С новым командиром пришел и новый ноутбук. Наконец! Удача! Правда из - за неудобного расположения ротный всегда мог палить, чем я занимаюсь за ноутбуком. Делать игру нужно было, тогда когда командира не было в роте. Таким временем была ночь, но на ночь канцелярия закрывалась (ключей мне никто не оставлял), помимо этого мне нужен был интернет, а все отобранные телефоны (включая и мой) были сложены в металлический ящик с навесным замком и пластилиновой печатью. Как герою из дешёвого боевика мне нужен был план.


Первое. Пробраться ночью в канцелярию.


Работы в канцелярии было много, и часто мне приходилось задерживаться допоздна. К 12 меня отправляли спать, но не потому что мне нужно было спать, просто к этому времени в роту приходил дежурный по полку (обычно майор, или подпол) который проверял все ли спят, все ли на месте. После проверки ответственный (контрактник, который оставался на ночь в роте и следил за порядком) шел спать, оставляя казарму в распоряжении наряда (срочников, таких же как я). Оставалось только договориться с нарядом, чтобы, когда все уйдут меня разбудили.


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

Как я в армии игру делал Gamedev, Армия, Unity, Длиннопост

Ключей разумеется у меня не было, но оказалось, что ручки такого типа (может не только такого типа) легко открываются ножом или отвёрткой. Через щель между косяком (дверным) и непосредственно самой дверью, просовывался нож после чего защёлка ручки задвигалась обратно. Дверь открывалась без ключей.


Второе. Достать телефон.


Для того чтобы установить нужную софтину на ноут, требовался интернет который был заперт в металлическом ящике ( все отобранные смартфоны, убирались в этот ящик). Мне выдавали его каждое утро «Для работы», а вечером я сдавал его обратно. Ящик выглядел примерно следующим образом:

Как я в армии игру делал Gamedev, Армия, Unity, Длиннопост

Только замок был навесным и рядом красовалась пластилиновая печать.

«Дешево и сердито» - как выражался наш ком. роты.


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


Третье. Софт.


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


Последнее (как говорят в армии крайнее). Непосредственно сама разработка.


Я заранее договаривался с нарядом, чтобы они будили меня около часа ночи , вскрывал ножом дневального дверь и тайком пробирался в канцелярию. Разумеется у меня не получалось проделывать это каждую ночь, из-за различный «Подрывов», боевых тревог и тд. Но так как основное время я сидел в канцелярии и все «секретные» разговоры велись при мне, я хорошо знал расписание всех «неожиданных» происшествий в нашей роте. Когда ночью планировался подъём я был в казарме, когда все было спокойно я вставал и шел делать игру.

Как я в армии игру делал Gamedev, Армия, Unity, Длиннопост

(я был так рад, что сделал фото своей руки)


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


Уже вернувшись из армии я рассказал эту историю другу на что он ответил


- Димон, зато у тебя теперь есть клевая история успеха.

- Да... жаль, только что эта клевая история успеха без успеха.


Как-то так =)  Наверно у каждого есть своя армейская история - это моя.

Спасибо, что дочитали до конца.


Если кому интересно то вот та самая игра


Страница игры в Google Play


https://play.google.com/store/apps/details?id=com.Pryg.Movin...

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

Как сделать турбо-тоннель эффект в Unity с помощью Particle System

Я не знаю, как назвать такой эффект: дыра, пещера, турбо-тоннель, wormhole или, может, пищевод, но результат выглядит так:

Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Для реализации этого эффекта подойдёт практически любой игровой движок: мой первый вариант был сделан ещё на флеше. Здесь же расскажу на примере Unity (Version 2019.2.4f1).

Я добавил такой эффект во вступительном ролике и тизере своей игры про атаку вирусов на иммунную систему «Listeria Wars».

ПОШАГОВАЯ РЕАЛИЗАЦИЯ


Создание сцены


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

Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Создание материала


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

Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Закидываем наш спрайт в папку для спрайтов в Assets и создаём новый материал Tunnel Wall (создаём папку Materials, по ней кликаем правой кнопкой мыши → Create → Material). В настройках выбираем шейдер Mobile/Particles/Alpha Blended (в старых версиях Unity Particle/Additive). Затем в Particle Texture кликаем по нашему спрайту тоннеля.

Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Добавление основной Particle System


Добавляем в сцену пустой объект и называем Tunnel. В него мы будем помещать все необходимые партиклы и контроллеры. Кликаем правой кнопкой мыши и выбираем Effects → Particle System, который назовём Tunnel Wall по аналогии с именем спрайта. Начинается самое интересное! Настройка и эксперименты.


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


Renderer

* Material: Tunnel Wall;

* Sort Mode: Oldest in Front;

* Max Particle Size: 5 (для возможности увеличения спрайта на размер больше, чем на пол экрана, где 5 — это разрешение экрана * 5).


Основные (Появляются при клике на хедер настроек, если скрыты)

* Start Lifetime 2.5 (Время жизни партикла, так же определяет скорость увеличения);

* Start Speed: 0 (Скорость не нужна);

* Start Size: 100 (Зависит от размера спрайта, выбираем на глаз, регулируем вместе с Size over Lifetime);

* Start Rotation: от 0 до 360 (Выбираем Random Between Two Constants, крутим партиклы как хотим);

* Start Color: Выбираем на вкус, если спрайт Tunnel Wall чёрно-белый. Осторожно, со слегка оранжевым цветом турбо тоннель рискует превратиться в задний проход;

* Gravity modifier: 0.02 (Партиклы будут слегка падать, задаём немного динамики в движении);

* Simulation Space: World (Мы будем двигать точку создания партиклов, чтобы не перемещалась вся конструкция, ставим World);

* Max Particles: 10 (Смотрим итоговое количество партиклов в панели Particle Effect и устанавливаем столько же).


Emission: Rate over Lifetime: 4 (на вкус)


Shape (форма, которая спавнит партиклы)

* Shape: Circle;

* Radius: 0.05 (Чем меньше радиус, тем более ровными получаются стенки. Выбираем на вкус).


Color over Lifetime

* Я выставил такие настройки для плавного появления и менее плавного ухода

Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Size over Lifetime

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

Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Результат на текущий момент

Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Другие партиклы


По аналогии я добавил другие частицы в виде клеток и вен. Расписывать подробно не буду, так как работу я проделал примерно аналогичную — настройки отличались лишь слегка. Следует учесть, что частицы должны быть поверх стен. Для этого необходимо задать Order in Layer в Renderer. Ещё я использовал Velocity over Lifetime, с этим тоже можно поиграться. Ну и добавил виньетку. Получилось так:

Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Немного динамики


Простым перемещением объекта Tunnel мы получим нелинейный тоннель. Добавим компонент Mover к Tunnel и удивимся результату

using UnityEngine;
public class Mover: MonoBehaviour {
public float rangeX = 2;
float rangeY = 1.5f;
public float timeDelimiterX = 4f;
public float timeDelimiterY = 3f;
void Update() {
transform.position = new Vector3(
Mathf.SmoothStep(-rangeX, rangeX, Mathf.PingPong(Time.time / timeDelimiterX, 1)),
Mathf.SmoothStep(-rangeY, rangeY, Mathf.PingPong(Time.time / timeDelimiterY, 1)),
0
);
}
}
Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

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

using UnityEngine;
public class Colorizer: MonoBehaviour {
public ParticleSystem tunnelWall;
public ParticleSystem cellBig;
public ParticleSystem cellSmall;
public ParticleSystem cellVessel;
void Update() {
Color color = new Color(
Mathf.SmoothStep(1, 0.5f, Mathf.PingPong(Time.time / 10f, 1)),
Mathf.SmoothStep(0, 1, Mathf.PingPong(Time.time / 15f, 1)),
Mathf.SmoothStep(0, 1, Mathf.PingPong(Time.time / 5f, 1))
);
var tunnelWallMainSettings = tunnelWall.main;
tunnelWallMainSettings.startColor = color;
var cellBigMainSettings = cellBig.main;
cellBigMainSettings.startColor = color;
var cellSmallMainSettings = cellSmall.main;
cellSmallMainSettings.startColor = color;
var cellVesselMainSettings = cellVessel.main;
cellVesselMainSettings.startColor = color;
}
}
Как сделать турбо-тоннель эффект в Unity с помощью Particle System Unity, Туториал, Визуальные эффекты, Gamedev, Разработка, Гифка, Видео, Длиннопост

Залипательно!


Весь код и ассеты тут: Github


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


Страница игры в Steam: https://store.steampowered.com/app/1183010/Listeria_Wars/

Добавляйте игру в вишлисты!

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

Сколько я заработал в Steam за 3 месяца. Подводим итоги

Всем привет. Давно не было новостей, но я не ленился, просто хотелось подвести итоги за определенный промежуток времени. Как многие знают я разработчик-самоучка и я уверен в том, что каждый человек, если захочет, то сможет научиться создавать игры. Учитывая доступность информации в наш век, можно научиться всему имея хоть немного свободного времени и стремление двигаться к своей цели. Моя игра The Story of Henry Bishop вышла на площадке Steam в ноябре 2019. И я подведу итоги за 3 месяца продаж. Все цифры я выложить конечно не смогу, ведь  подписывая соглашение Steam я обязуюсь не разглашать информацию со страниц Steamworks. Поэтому из статистики я смогу показать только количество проданных копий. Но я думаю и так вам станет понятно что к чему.

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

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

Я перевел игру на 7 языков, самым дорогим переводом был Китайский язык, но самое большое число покупок как раз таки было из Китая. Спасибо братьям китайцам. Мне они показались весьма хорошими игроками. 90% их отзывов положительные, они весьма тепло приняли мою игру. Так что, всем кто хочет сделать игру подобного жанра или игру где много текста я рекомендую в обязательном порядке сделать качественный перевод на упрощенный китайский.

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

Как вы видите почти за 3 месяца игру купили 5321 раз, из этого количества покупок следует отнять 14%  возврата. Это не большой процент учитывая то, что у многих моих знакомых разработчиков он бывает куда больше. Основные продажи были во время распродаж и скидок, так что если считать сумму то в среднем эти продажи были со скидкой 25-50% Ничего не  поделаешь, игроки любят скидки. Я сам играю и сам покупаю много чего на скидках, так что это все обычное дело.


Коллекционные карточки

Хотелось бы упомянуть, что на старте выпуска игры Steam не дает возможности выпускать коллекционные карточки, значки, фоны, смайлы. Эта возможность появляется лишь тогда, когда игра превысила определенное количество продаж и запусков игры(так указано в документации). У меня карточки одобрили когда запусков игры было чуть больше 2к, продано копий около 3к. Это на заметку разработчикам. А то я сам искал информацию о карточках и негде и не нашел сколько хоть примерно должно быть.

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

Теперь в игре есть вот такие карты, смайлы и фоны.

Часть дохода.

Небольшой отчет о пожертвованиях как и обещал в своих постах и группе в вк.

За 3 месяца удалось собрать и пожертвовать на лечение детей почти 5000$ что и является 50% от чистой прибыли за игру(после уплаты ндс, процента магазина и налогов).

Почти 4 000$ были переведены в белорусский фонд "Шанс" (очень прозрачный фонд который лично у меня вызывает только доверие)  на лечение 3-х детей. Их имена указаны в чеках. И еще 1000$ отложена на реабилитацию еще одного ребенка и будут переданы родителям в руки лично, чек будет предоставлен немного позже в группе в вк, при оплате лечения. Обращаю внимания, что оплата производилась не RUR, а BYN(белорусские рубли)

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

Хочется сказать больше спасибо  всем кто помогает мне, тестирует  игры, покупает их, либо морально поддерживает, это все наша общая помощь!!! И только благодаря вам, тем кто играет и любит инди игры я смог сделать какое то доброе и полезное  дело. Спасибо вам друзья!!!


Планы на ближайшее время!!!

В следующем месяце я хочу выпустить не большую игру на Steam в виде головоломки, легкая игра для детей и взрослых с музыкальным сопровождением от DJ Andrew Clam. У меня идея этой игры возникла еще когда я только начал изучать программирования и движок. Я раньше выпускал что то подобное на мобильных платформах и игрокам очень понравилось. Я немного подробнее расскажу об этой игре на днях в новом посте, когда мне одобрят оформленную страницу, что бы сразу предоставить ссылку всем кому она будет интересна. В ней так же будет режим  2 игрока на одном пк.

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity
Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

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

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



Вот несколько скриншотов с набросками из первой локации по ходу разработки.

О данном проекте я расскажу немного позже, когда будет что показать)

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity
Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity
Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity
Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

В конце поста хотелось бы сказать всем большое !!!СПАСИБО!!! за поддержку. Тем кто купил игру, поддержал словом или советом большое вам спасибо. Благодаря пикабу я узнал что в странах СНГ очень много хороших отзывчивых людей, некоторые мне написали что бы помочь с переводом, кто то помог исправить ошибки в тексте или баг в игре. Кто-то просто оставил хороший отзыв на странице игры в steam с пометкой что он пришел с пикабу. Спасибо вам дорогие друзья!!!


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



Steam The Story Of Henry Bishop

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

Делюсь архитектурным шаблоном (StarterKit) для Unity проектов

Всем привет!


Периодически я пилю тут посты, которые с переменным успехом то набирают плюсы, то набирают минусы)))


Сегодня хочу поделиться шаблоном (в некотором роде "стартеркит") Unity-проекта, подходящего почти для любой игры. Набросал его для одной из инди-команд сообщества "Индикатор".


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

В репозитории (ссылку приведу в конце) используется как собственный код, так и сторонний (NonDrawingGraphic, UIParticleSystem).


Сейчас это шаблон с примером реализации Главного Меню (назову это "Экраном") и появляющегося окна (назову это "Диалогом").

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


Логика следующая - существует главная сцена с контроллерами/менеджерами. "Главный Игровой Контроллер" при загрузке игры (появлении этой сцены при запуске) отображает загрузочный экран (назову это "Прелоадером").

Затем (не реализовано, т.к. это индивидуально для каждого проекта) предполагается чтение/загрузка настроек, конфигураций, файлов-сохранений и пр.

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


Буду очень рад вопросам, критике и советам по улучшению.
Ссылка на репозиторий: https://github.com/DL-SKY/PrototypeForIndicator

Надеюсь, кому-нибудь пригодится.

Удачи и успеха всем в геймдеве!

58

Path Of Despair, до и после

Добрый день. Прошло около 2х месяцев, с последнего поста, и я решил предоставить вашему вниманию переработку визуала path of despair.

ДО:

Path Of Despair, до и после RPG, Инди, Low poly, Gamedev, Длиннопост
Path Of Despair, до и после RPG, Инди, Low poly, Gamedev, Длиннопост

После:

Path Of Despair, до и после RPG, Инди, Low poly, Gamedev, Длиннопост
Path Of Despair, до и после RPG, Инди, Low poly, Gamedev, Длиннопост
Path Of Despair, до и после RPG, Инди, Low poly, Gamedev, Длиннопост
Path Of Despair, до и после RPG, Инди, Low poly, Gamedev, Длиннопост
Path Of Despair, до и после RPG, Инди, Low poly, Gamedev, Длиннопост

Добавлены партиклы, новые текстуры, модели деревьев, переработан свет и тени.


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


https://vk.com/pathofdespair

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

Ожидания vs реальность. Чем на самом деле занимаются геймдизайнеры, программисты, проджект-менеджеры, художники и продюсеры

Всем привет!

Продолжаем разговор по списку тем:


1) Что такое русский геймдев и надо ли вам в него попасть на самом деле

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

3) Вы попали в геймдев - что дальше? Лучшие практики, чтобы работать долго и счастливо.

4) Ожидания vs реальность. Чем на самом деле занимаются геймдизайнеры, программисты, проджект менеджеры, художники и продюсеры.

5) Как стать продюсером.

Ожидания vs реальность. Чем на самом деле занимаются геймдизайнеры, программисты, проджект-менеджеры, художники и продюсеры Игры, Длиннопост, Текст, Разработка, Gamedev

На этот раз поговорим о пункте №4 - Ожидания vs реальность. Чем на самом деле занимаются геймдизайнеры, программисты, проджект менеджеры, художники и продюсеры.


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


1) Чем занимаются геймдизайнеры.


Ожидания:

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


Реальность:

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


Чем может быть занят геймдизайнер:


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

- Составление ТЗ для художников + поиск рефов (референсов). ТЗ для художников - все то, что нужно знать художникам, чтобы корректно нарисовать контент. Какие действия предмет/персонаж будет выполнять в игре, какая у него предыстория (если есть), какие анимации в будущем для него запланированы. Поиск рефов - поиск в интернете и прикрепление к ТЗ картинок, которые помогут задать направление работе художника, дадут стилистический ориентир.

- Левел-дизайн - проектирование и сборка новых уровней, локаций.

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

- Интеграция контента для грядущего обновления игры - заведение новых квестов, акций, уровней.

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

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

- Расчет, анализ и перерасчет баланса игры.

- Анализ проектов конкурентов.

- Анализ внутренних проектов, составление предложений по улучшению их показателей.


Работа геймдизайнера является креативной, но при этом геймдизайнер должен быть способен выдавать нужный контент даже, когда у него нет творческого настроения или вдохновения. При этом мало быть просто креативным и трудолюбивым, надо еще отвечать потребностям проекта и руководства. Например, задание - написать к понедельнику 160 реплик для персонажа. Вы написали 200 (отличных на ваш взгляд) реплик, но ваш руководитель пропустил в проект только 40. Будет считаться, что к назначенному сроку вы написали только четверть реплик.


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


2) Чем занимаются художники


Ожидания:

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


Реальность:

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


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


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


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


Значительную часть работы будут составлять вещи, которые вы не умеете рисовать/не рисовали раньше/не хотите рисовать.


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


3) Чем занимаются программисты.


Ожидания:

Проектировать и строить игровую реальность в окружении профессионалов. Строить изящные и продуманные структуры.


Реальность:

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

Часть времени всегда будет неизбежно тратиться на фикс багов.

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


Если у компании есть активные выпущенные проекты:


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

- на носу объявленное игрокам обновление, а какой-то функционал еще не готов или тестировщики нашли баг за 2 часа до релиза.


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


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


4) Чем занимаются проджект-менеджеры (ПМ).


Ожидания:

Управляют проектом!


Реальность:

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


- следит за рабочим временем сотрудников, кто сколько тратит времени на задачи.

- помогает организовать взаимодействие разных отделов (геймдизайнеры, художники, программисты).

- участвует в процессе найма и увольнении членов команды.


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


5) Чем занимаются продюсеры.


Ожидания:

Командуют всеми, делают из игры то, что им хочется.


Реальность:

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


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


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


- Продюсер отвечает за бюджет и сроки разработки. Какие фичи проект может себе позволить, к каким последствиям это приведет, сколько человек и с какими зарплатами задействованы на проекте - ответственность продюсера.


- Продюсер отвечает за формирование команды - т.е. принимает решение о найме или увольнении сотрудников.


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


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


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

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

Поиск пути в играх. Алгоритм поиска пути A*

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


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


Надеюсь, что это будет кому то полезным.

92

Что такое русский геймдев и надо ли вам в него попасть на самом деле

Всем привет!

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


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

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

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

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


Список запланированных для освещения тем:

1) Что такое русский геймдев и нужно ли вам в него на самом деле.

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

3) Я попал в геймдев - что дальше? Лучшие практики, чтобы работать долго и счастливо.

4) Ожидания vs реальность. Чем на самом деле занимаются геймдизайнеры, программисты, проджект менеджеры, художники и продюсеры.

5) Как стать продюсером.


В этой публикации мы начнем с первой темы - что такое русский геймдев и надо ли вам в него попасть на самом деле.

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


Что такое русский геймдев и почему вам в него, возможно, не надо:


1) Большинство приходящих в геймдев новичков вдохновлены любимыми играми детства (или чем-то современным). Реальное положение дел таково, что вы с высокой вероятностью не будете работать над подобными проектами. Русский геймдев преимущественно ориентирован на мобильные и социальные игры. Синглплеерные игры с сильным сюжетом, цепляющим за душу игровым экспириенсом - нет, здесь заняты не этим. Матч-3, фермы для женщин 30+, коллекционные карточные баттлеры - примерно этим занят русский геймдев. Игры рассматриваются не как произведение искусства, а как продукт. Работа в геймдеве - это проявление креативности только 10% времени. Остальное - анализ рынка, показателей продукта, и рутинная работа.


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


3) Работа в геймдеве - работа в команде. Придется забыть об уникальности своих идей и своей исключительности - многие яркие творческие одиночки не могут нормально перенести этот момент. Надо быть способным воспринимать критику своих идей, уметь договариваться, помогать другим членам команды, думать в первую очередь о качестве продукта, а не о своем эго.


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


5) Если вы сторонник нормированной рабочей недели - для вас также неприятностью станут неизбежные и регулярные переработки. Если у компании есть выпущенный проект, требующий постоянных контентных обновлений - переработки неотъемлемая часть работы. Например, надо успеть доделать ивентовый релиз к новому году, чтобы приурочить событие к конкретной дате. Или, внезапно, в 2 ночи может быть найдена критическая ошибка, которая позволяет игрокам получать ресурсы бесплатно. В таких ситуациях компания несет значительные материальные потери пока проблема не устранена, и как-то считается само собой разумеющимся, что все причастные будут работать столько, сколько нужно, чтобы устранить кризис. Обычно в таких условиях остаются люди, получающие удовольствие от работы, знающие, на что идут - недовольств по поводу переработок практически не встречал.

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

Надо четко понимать:

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



Какие реальные положительные моменты работы в корпоративном геймдеве:


1)  Если вы находитесь на распутье и выбираете, в какой сфере лучше построить карьеру. Без ложных ожиданий и фантазий - геймдев весьма хороший вариант. Сейчас много геймдев-компаний, где устройство по ТК РФ и белая зарплата. Но переехать, скорее всего, придется в Москву или Петербург - чтобы всегда иметь под рукой соответствующие предложения о работе, в других городах России корпоративный геймдев развит только мелкими вкраплениями.


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


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


4) Получение опыта - посмотреть на самые различные ситуации с самыми разными проектами. Делая игры сами - вы едва ли сможете получить такое количество опыта и знаний.


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


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


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


В итоге:

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

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

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

Странствия. Полностью завершённая и пригодная для игры РПГ

Я знаю, что мои подписчики привыкли к тому, что я выкладываю рассказы о путешествиях, но сегодня хочу сменить тему (а потом снова вернусь к путешествиям).


Итак, я довёл до финала и опубликовал на itch.io свою игру в жанре JRPG. Вся работа над игрой заняла у меня примерно 1200 часов (да, я педант, я всё записываю))): 2,5 года от 1 до 7 часов каждый день. Практически всё делал только я один, разве что музыку сам не писал, и для графики использовал сторонние (но совершенно легальные) ресурсы. Вероятно, это именно та работа, которой я бы мечтал заниматься всё время, если бы мог получать за неё деньги. Однако коммерция — это наименее интересная для меня область, и поэтому я, чтобы не мучиться, выложил игру бесплатно.

Вот она: https://alx-yago.itch.io/wanderings


Это абсолютно классическая РПГ о приключениях в фэнтезийном мире, выполненная на движке RPG Maker’а. В общем, я буду рад, если зацените. Игра для Windows.

Странствия. Полностью завершённая и пригодная для игры РПГ Игры, Gamedev, JRPG, RPG, RPG maker, Длиннопост
Странствия. Полностью завершённая и пригодная для игры РПГ Игры, Gamedev, JRPG, RPG, RPG maker, Длиннопост
Странствия. Полностью завершённая и пригодная для игры РПГ Игры, Gamedev, JRPG, RPG, RPG maker, Длиннопост
Странствия. Полностью завершённая и пригодная для игры РПГ Игры, Gamedev, JRPG, RPG, RPG maker, Длиннопост
Странствия. Полностью завершённая и пригодная для игры РПГ Игры, Gamedev, JRPG, RPG, RPG maker, Длиннопост
Показать полностью 4
116

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре

В тактических играх ИИ очень важен. Если ИИ видится как «искусственный идиот», то игру может спасти потрясающий мультиплеер, сюжет, атмосфера и графика (это неточно). Решение очевидное: делай хороший ИИ, в чём тут могут быть проблемы?

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

В деталях. Ниже описаны мои шаги по конструированию сильного ИИ с характером. Не супер сильного [1], но способного быстро отработать локально в прожорливом браузере любого средне-слабого ПК. Мною применён подход экспертных систем с использованием набора эвристик и мутаций. Описаны 15 шагов постепенного преображения ИИ, каждый из шагов можно пощупать.

Краткое описание


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


Например, генерируются три стратегии:


1. Бежать оголтело всем вперед и атаковать всех, кто подвернётся под руку. Очки итогового состояния: 37000 баллов.

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

3. Всем отступить, сгруппироваться и попрятаться от врагов. Если можно при этом ранить какого-нибудь врага с безопасного расстояния, то атаковать. 18000 баллов.

В этом случае будет выбрана 2-я стратегия.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Ну вроде всё стандартно. Не совсем.


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


Правила игры


У игрока и у ИИ изначально по углам выдаются по 6 одинаковых юнитов. Каждая команда ходит по очереди всеми юнитами сразу. Варианты хода каждого юнита:

- пропустить ход;

- передвинуться и пропустить;

- передвинуться и атаковать (можно и иногда нужно атаковать своих).


Игровое поле и состав команды генерируется процедурно (то есть случайно, но с проверками на проходимость и приемлемую «тактичность»). Типы юнитов:

1. Боец F, юнит ближнего боя с самой большой живучестью, уроном и мобильностью. Эдакий танк+дамагер.

2. Лучник A, самый низкий урон, зато атака на расстоянии 1-7 по прямой линии.

3. Колдун W, умирает с одного удара бойца, зато атака на расстоянии 1-5 по прямой линии насквозь по всем юнитам.


Игровое поле всегда размером 10*10.


Возможные поля на карте:

- Земля — не накладывает никаких ограничений.

- Стена — через неё нельзя ни прострелить, ни пройти.

- Вода — через неё нельзя пройти, но через неё может стрелять лучник (огненный маг не может).

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Игра полностью детерминирована, то есть в ней нет элемента случайности (шанс попадания 100%, никаких критических уронов и т.п.). Также это игра с полной информацией, то есть соперники всё знают о состоянии войск друг друга в любой момент времени. Как в шашках.


ИИ сильнее мясного игрока, но у последнего на первом уровне есть фора в виде одного юнита. На 3-ем у игрока наоборот хандикап в одного юнита и победить гораздо сложнее (у меня около 15% побед на этом этапе). Затем идёт более рандомная версия Игра+.


Изначально был разработан другой план игры в виде «качелей» как в турнирной таблице, но в конце разработки я отказался от него, как от слабомотивирующего. Смысл был в том, что если какая-то команда проигрывает, то на следующей карте ей даётся +1 юнит, и так максимум до 10 против 6. Если и потом команда умудрялась проиграть, то её юнитам увеличивались характеристики.


Игра разработана на нативном javascript: на div-ах и css-стилях, и это было самое неудачное решение из возможных [2]. Это браузерная игра. Движок не использовался. Единственная цель проекта — создать сильного компьютерного игрока «с характером» и возможностью изменения этого характера (расчетливые киборги, агрессивные орки, коварные эльфы, глупые зомби).


Для уменьшения «компьютерного стиля» у противника были применены некоторые хитрости:

- Игрок после своего хода не ждёт, пока ИИ подумает над своим ходом. Враг «сразу» начинает делать свои передвижения (в действительности это иллюзия).

- Компьютерный игрок управляет юнитами тоже с помощью своего курсора (и это тоже иллюзия, курсор просто летает одновременно с анимациями юнитов).

- ИИ умеет использовать коварные приманки, чтобы навязать бой (тут всё по-честному).


И что тут сложного?


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

Полный перебор невозможен из-за эффекта комбинаторного взрыва [3], который заключается в том, что по мере роста числа проверяемых элементов в сценариях сложность вычислений растет по экспоненте. Далее опишу, что это значит в моей конкретной игре.


Во-первых, т.к. на каждом ходу юниты команды ходят все сразу, то возможна разная их очередность. А при 6 юнитах в команде таких комбинаций становится 720 (1*2*3*4*5*6). Если юнитов будет больше, то комбинаций будет вообще огромное количество (при 7 — 5040, при 8 — 40320...). Если не учитывать максимального исхода, то игрок рискует распробовать удовольствие в ожидании очередного хода на 5-10 минут (а если он упорный, то задержка дорастёт и до миллионов лет, не каждый вытерпит). Именно из-за этой характеристики мой ИИ в начале боя менее эффективен, чем в конце. Ведь ближе к концу половина команды уже погибла.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Во-вторых, каждый юнит может передвинуться в разные точки карты. Бойцы с дальностью передвижения 4 могут походить на 1-41 разных позиций. У магов и лучников с их передвижением в 3 возможное число ходов равно 1-25. Например, состав команды может быть: 4 бойца, 1 маг и 1 лучник. Итого разных комбинаций ходов по данному пункту мы получаем: 41*41*41*41*25*25 = 1766100625. В действительности из-за взаимных пересечений и непроходимой местности комбинаций будет меньше, но в редкой ситуации «разбегания по карте» число комбинаций будет приближаться к этому числу.


В-третьих, каждый юнит после передвижения может пропустить ход или атаковать в одном из 4 направлений. То есть имеем по 5 возможных завершающих действий на юнита. Всего комбинаций: 5^6 = 15625.


Итого комбинаций: 720 * 1766100625 * 15625 = 19868632031250000.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

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


Как же сделано?


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

1. Сгенерировать разные сценарии на основе заранее прописанных стратегий (~20 штук).

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

3. В конце выбрать сценарий с наибольшей оценкой.

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

5. Повторить для оставшихся юнитов с пункта 1.


Эвристический метод — это метод, который может сработать (по Макконнеллу [4]). Подробнее и строже в Википедии [5].


Ключевые моменты в этом алгоритме: генерация сценариев, мутации и правильная оценка выгодности состояния. В каждом из этих пунктов используются свои собственные локальные эвристики. Тем не менее, там где можно, использовались алгоритмы с гарантированным оптимальным результатом, например, А* для поиска пути [6].


Использованный мною эволюционный подход нельзя назвать полноценным генетическим [7], т.к. от него я использовал только мутации и выживание «сильнейшего», а коэффициенты влияния отдельных эвристик настраивал вручную. Алгоритмов формирования популяций и скрещиваний не применялось. После мутации выживает только один: либо мутант, либо родитель.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Нейронные сети [8] мною не использовались из-за особенностей задачи. Во-первых, из-за сложности их успешной реализации в условиях постоянно меняющейся среды (появление новых механик, навыков, способностей). Во-вторых, из-за сложности в их контролируемой персонализации (если захочется сделать два поведения: стремительного Суворова и осторожного Кутузова [9]).


Эволюция искусственного идиота в искусственный интеллект


0) Сначала у ИИ были введены только 3 стратегии со случайными ходами. {Сложность игры #0}. Оценка состояния была просто случайным числом. И так как ИИ не единственный элемент разработки, мне пришлось довольно долгое время мириться с поведением сумасшедших рыбок.


1) Затем в расчёты оценки стратегии были добавлены проверки оставшихся юнитов и их жизней у ИИ и у игрока. {Сложность игры #10}. За мертвого юнита команде начислялось 0 баллов. За полностью здорового Х баллов (например, 100 000 за бойца F, 70 000 за лучника A, 85 000 за колдуна W). За раненого начислялись 50% от основной ценности, а оставшиеся 50% пропорционально оставшимся жизням от максимальных. Благодаря этому ИИ было выгоднее добивать врагов, а если он мог только ранить, то он выбирал противников с меньшим числом жизней — более уязвимых.


Случайные ходы стали более осмысленными — ИИ иногда давал сдачи.


2) Затем была добавлена более осмысленная стартовая стратегия:

max_agro — все солдаты бежали максимально ближе к врагам и старались нанести как можно больше урона. {Сложность игры #20}. Одна стратегия использовала изначальный порядок ходов юнита, вторая ходила ими в обратном порядке.


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


Именно на это похоже поведение ИИ в провальной игре Master of Monsters – Disciples of Gaia, из-за чего в неё банально скучно играть [10].

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

3) Дальше были добавлены стратегии, учитывающие возможный урон от врагов при передвижениях, и выбирающие те ходы, которые приводили к наименьшей опасности — желательно нулевой. {Сложность игры #30}. И ИИ сразу же стал сверх трусливым, избегающим любой близости с противником — лучше уж сбежать, чем атаковать и ранить, ведь противник может дать большей сдачи!


Поэтому в оценке состояний стал тоже учитываться возможный урон врагу. Штрафные баллы от потенциального урона от врагов стали вычисляться с уменьшающим коэффициентом 0.20 (коэффициент постоянно перенастраивался). Это заставляло ИИ при выборе между атакой или бегством избирать агрессивный вариант, поскольку он приносил в 5 раз больше баллов, чем бегство. Но ИИ всё равно надолго остался трусливым, ведь чтобы попасть в такую ситуацию выбора, враг уже должен быть в досягаемости, а сам ИИ при таких оценках никогда не подставит себя первым под удар. То есть не пойдёт на сближение. Конечно, игрок будет чувствовать себя обманутым, ведь у ИИ бесконечный запас терпения и он может убегать от опасности вечно, вынуждая игрока к агрессии.


Следует отметить, что подобные вычисления возможного урона очень длительны без использования кэша. Один полный просчёт стратегии без оптимизаций изначально занимал 700 миллисекунд. А у меня ведь ограничение на весь ход одним юнитом ~4000 мс! После оптимизаций и отработавших кэшей это время уменьшается до 20 миллисекунд при очень похожих стратегиях (к сожалению кэш невозможно просчитать весь заранее из-за эффекта комбинаторного взрыва, поэтому 20 мс достигаются не всегда).


Поэтому когда я внедрял технологию расчета с прогнозированием на несколько ходов вперёд, то время расчетов для глубины только в 2 хода (врага и ИИ) занимало уже +700 миллисекунд. В этом случае применяют оптимизацию с отсечением «слабых» веток. Если для этого пользоваться хоты бы примитивной стратегией max_agro, то увеличение времени было +30 миллисекунд и кэширование эту разницу почти не уменьшало (т.к. позиция на карте была совершенно новой).


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


4) Следующие стратегии были направлены на расширение изначального разнообразия стратегий:

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


close_group_flee — юниты отступают подальше от боя и группируются как можно ближе друг к другу. Если можно при этом безопасно атаковать врага — атаковать.

{Сложность игры #40}.


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


5) Затем настало время мутаций. {Сложность игры #50}.

Алгоритм мутаций был очень простой:

- при переборе выбранных стратегий создавалась одна копия стратегии;

- в этой копии производилась мутация хода;

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

- вычислялись баллы мутировавшей стратегии;

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


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


Сначала был реализован самый примитивный тип мутации: от 1 до 3 движений заменялись на случайные, порядок ходов оставался прежним. За одну итерацию расчетов в среднем на каждую стратегию создавалось ~5-15 мутаций. При этом в среднем каждая пятая мутация была более выгодной и заменяла стратегию родителя.


6) Эвристика приманки. {Сложность игры #60}.

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


Для этого в функции вычисления баллов за состояние стратегии проверяется, соответствует ли текущее состояние ситуации приманки:

- Только один солдат ИИ может быть атакован;

- Только один враг может атаковать вылезшего юнита;

- Юнит компьютерного игрока после этой атаки обязательно должен выжить;

- Как минимум двое юнитов компьютера смогут атаковать в ответ. Чем больше таких наказывающих юнитов, тем больше баллов за эвристику.


Эффект оказался отличным: игроку становится легче начинать бой самому. При этом чаще всего игроку всё равно выгоднее «повестись» на эту приманку, так как после ответной атаки он сможет навалиться на ИИ всем своим отрядом (это если он разумно сгруппируется предварительно). А там уже всё решат грамотные локальные тактические решения.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

7) Потом мне стало бросаться в глаза, что бойцы ИИ постоянно разбегаются как тараканы. {Сложность игры #70}. Также солдаты могли забиться в угол или зайти в тесные тоннели, в которых ИИ сильно терял в своей эффективности перебора возможных атак.

Поэтому в оценочную функцию были добавлены эвристики оценки расстояний между юнитами и рельефа карты со следующими предположениями:


- Чем ближе союзники друг к другу «в среднем» — тем лучше (юниты реже стали разбегаться по разным частям карты).

- Чем ближе солдаты ИИ к в солдатам врага «в среднем» — тем лучше (мне нужен был наступательный ИИ).

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

- Если солдат ИИ не может добежать и атаковать врага как минимум за 2 хода, то его надо штрафовать (это заставляет его наступать, но не подставляться самому под атаку).

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

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


8) Затем пришло время расширения стратегий. {Сложность игры #80}. Я не мог добавить полный перебор возможного порядка ходов юнитов, но я мог сделать перебор их ходов по типам: боец, лучник, колдун. Поэтому появились стратегии последовательности ходов, вида W_A_F: сначала ходят все колдуны, потом все лучники, потом все бойцы.


Таким образом добавилось 6 новых стратегий: W_A_F, W_F_A, A_W_F, A_F_W, F_A_W, F_W_A. Они не решили всех проблем, но заметно улучшили качество игры.


9) У меня были мутации, но толку от них было мало. {Сложность игры #90}. В основном они улучшали слабые стратегии, а удачные улучшались редко. Поэтому мутации были доработаны и каждый раз срабатывал один из случайных типов мутации:

- От 1 до 3 движений заменялись на случайные, порядок ходов оставался прежним (старый способ);

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

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


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


10) Затем были добавлены еще полуслучайные стратегии. {Сложность игры #100}. Порядок ходов генерировался случайно, а сами ходы выбирались по следующим принципам (по уменьшению их важности):

- нанести максимальный урон;

- получить как можно меньший урон в ответ;

- стать как можно ближе к врагам.


Заметного улучшения тут я не увидел, но проект уже перешел в ту стадию, когда каждое улучшение приводит к менее заметным воспроизводимым эффектам.


11) Мне надоели вопиющие ошибки ИИ, когда он при атаке своим колдуном сильно задевал моих солдат, но при этом ранил своих союзников. {Сложность игры #110}. Хотя перед этим он вообще-то мог походить ими и убрать их с линии огня. Поэтому была создана жёстко сгенерированная стратегия с ручными проверками:


- если есть колдун, то найти место, откуда он нанесет максимальный урон;

- если в этом месте или по пути удара есть союзники — запомнить их;

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

- ходит колдун;

- ходят оставшиеся юниты.


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


12) Иногда юниты "убегали в кусты" прямо перед началом боевых действий. {Сложность игры #120}. В результате этого, когда начинался обмен атаками, то один или даже два юнита могли оказаться слишком далеко от военных действий и не помогали союзникам. Если это случалось, то я почти гарантированно выигрывал у ИИ. Если не случалось, то я чаще проигрывал. Избавлялся от этого я вводом новой эвристики по оценке результирующих баллов у стратегии. Для каждого юнита проводилась проверка:


1. Если юнит в этот ход атаковал, то он получал +1500 баллов.

2. Если не атаковал, то подсчитывались позиции, с которых враги смогут наносить урон союзникам. Продолжать подсчет, если таких позиций будет больше 0 (N > 0).

2.1. Если юнит не может достать и ударить ни по одной позиции (n = 0), то он получает штраф -1000 баллов.

2.2. Если юнит может достать до всех позиций, то он получает +1200 баллов.

2.3. Если юнит может атаковать до некоторых позиций, то он получает +(n/N)*1000 баллов.


Это позволило сильно улучшить «сплоченность» юнитов ИИ. К сожалению, начали появляться случаи «одного дезертира», когда в проигрышной ситуации один из раненых юнитов предпочитал прятаться за спинами своих товарищей вместо того, чтобы внести свою лепту, атаковав врага. Это нелепо выглядело, когда у компьютера остаётся всего 2 юнита, а у игрока 3 или даже больше. Дополнительная исправляющая эвристика представляет собой следующее правило:


IF ("у ИИ меньше юнитов, чем у противника" AND "у ИИ не больше 3 юнитов")
THEN "за каждого дезертира начислить сценарию штрафные баллы"

13) Под конец ввода стратегий их набралось уже под 25 штук. {Сложность игры #130}.


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


14) Примерно в начале была ещё интересная доработка. Изначально оценка ценности сценария вычислялась как разница сумм баллов:


Итоговые_баллы = Баллы_ИИ - Баллы_игрока

Но спустя несколько улучшений я вспомнил, что это не самое лучшее решение, т.к. тогда для ИИ будут одинаковыми ситуации «2 солдата против 1 одного солдата» и «4 солдата против 3 солдат». Поэтому баллы стали вычисляться как отношение:


Итоговые_баллы = Баллы_ИИ / Баллы_игрока

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


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


Вот как играет финальный ИИ {Сложность игры #9999}:

ИИ ходит сразу, а не тратит время на раздумья


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


Основная технология быстрого хода — это предварительные вычисления во время простоя. Этот метод заключается в том, чтобы разбить процесс хода на 2 части: сами вычисления и показ анимаций результатов вычислений:


- вычисления хода первого юнита начинаются сразу же после хода игрока, пока еще вылетает окошко, что сейчас начнётся ход противника. А это целых 4 секунды, которые игроком не воспринимаются пустым ожиданием;

- вычисления второго и последующего ходов начинаются тогда, когда только начинается анимация хода прошлого юнита (то есть когда курсор ИИ только начинается своё движение). А время всех анимаций уже 4.5 секунды. Хотя правильнее это назвать не вычислением следующего хода, а улучшением уже выработанной прошлой стратегии и поиска новой, т.к. на каждой итерации рассчитываются ходы всей команды;

- при анимации ходов ИИ к двигающимся юнитам летает курсор ИИ, который притворяется, что он по ним кликает. Курсор летает максимально быстро, но чтобы оставалась комфортность слежения за ним. Более того, добавление курсора не только позволило увеличить запас времени вычислений с 2 секунд до 4.5, но и сделал просмотр хода компьютера более комфортным для человека;

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


Чтобы всё это не лагало в браузере и работало с достаточно стабильным FPS, расчёты производятся асинхронно воркером (Web workers) [11].


Этим я хотел избавиться от раздражающего окошка ожидания «Компьютер ходит». Такая неприятная плашка есть во многих хороших играх, например, в Xenonauts [12]. Я считаю, что мне удалось справиться с этой проблемой.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Таким образом, ИИ тратит на обдумывание своего хода всегда одинаковое время — независимо от его сложности. Очень любопытная особенность этого подхода в том, что чем сильнее у игрока компьютер, тем большее число мутаций ИИ успеет перебрать, а значит будет тем сильнее, чем мощнее компьютер игрока. Я сначала убрал данный эффект с помощью фиксации времени хода и предварительного подсчета скорости работы компьютера. Однако потом я убрал эту фиксацию, т.к. владельцам мощных компьютеров это позволит сразиться со «своим» компьютером, а не усреднённым.

Каков результат и в чём недостатки


Таким образом, получившийся компьютерный противник умеет достойно сражаться и хорошо пользуется любыми оплошностями игрока, а своих делает не слишком много. Тем не менее, я, зная все особенности его работы, хоть и с напряжением, но побеждаю его почти всегда (при равных условиях). А хотелось бы наоборот: чтобы даже зная о его особенностях, почти всегда ему проигрывать. ИИ далёк от идеала, поскольку используемый мною набор эвристик приводит к синергетическому наложению «ошибок моего восприятия» друг на друга. Вот эти ошибки:


1. Несовершенство и неполнота моей собственной стратегии, я не знаю всех наилучших стратегий, и поэтому не могу их обозначить и внедрить в игру.

2. Потеря эффективности (которая итак не идеальна) выработанных рабочих эвристик при переносе их на программный код. Например, моя человеческая эвристика «Юниты держатся рядом, но не слишком близко, чтобы избегать двойного урона от магов и не застрять в узких проходах». Эта эвристика помогает мне побеждать ИИ, но при обучении ею моего компьютерного оппонента, мне приходится качественное описание переводить в алгоритмическое с количественными оценками, и тут возможна потеря данных.

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

4. Жесткие временные ограничения и пошаговые улучшения выбранных стратегий приводят к тому, что первый ход всегда будет менее продуман. Это значит, что один неудачный первый ход может заблокировать очевидные более эффективные ходы остальных юнитов команды. Это выражается в том, что первый боец F вместо отхода может криво атаковать противника и потом его союзнику волшебнику W придётся ранить своего, чтобы добить противника.


Полноценные генетические алгоритмы вместо «подбора на глазок» скорее всего позволили бы подобрать более оптимальные коэффициенты в эвристиках. Но это уже задача для будущих полноценных проектов — не хочется надолго застревать с прототипом. Текущим ИИ я вполне доволен: он расчётливый, немного коварный, достаточно агрессивный и не позволит игроку победить себя в сухую (в действительности чрезвычайно редко позволит).


Дополнительные возможности


Подобный способ реализации позволяет добиться дополнительных бонусов в игровой разработке (во многом с точки зрения разработчика и его горящих сроков):


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

2. Действительно интеллектуальные уровни сложности. Сейчас в основном уровень сложности определяет то, какие бонусы компьютерный игрок получит в качестве ресурсов (больше золота на старте или бонус в добыче) или как сильно его солдаты будут бить (+50% к урону). Это работает, но можно ведь сделать ИИ чуть менее умным просто постепенным отключением некоторых эвристик по мере уменьшения сложности.

3. В продолжении 2-го пункта можно создавать и разные расы/фракции компьютерных противников: у орков работают только агрессивные стратегии; у толп зомби только примитивные «бежать вперед и атаковать»; а у киборгов использовать всю мощь ИИ. Благодаря этому игроку перед нападением придётся оценивать не только числа у противников, но и их интеллектуальность.


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


Где пощупать


Вы можете протестировать силу этого ИИ в браузерке «AI tactical rumble. Test subject» бесплатно на площадках типа itch.io [13]. GET параметр ai (значения от 0 до 140 с шагом 10) позволит снизить сложность ИИ.


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


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


Список литературы


1. DeepMind — статьи на Хабре.

2. HTML5 games: Canvas vs. SVG vs. div на stackoverflow.

3. Комбинаторный взрыв — Википедия.

4. Совершенный код Стива Макконнелла — Хабр.

5. Эвристические методы — Википедия.

6. A* — Red Blob Games.

7. Генетический алгоритм. Просто о сложном — Хабр.

8. Восемь потрясающих игр с искусственным интеллектом от компании Google — Хабр.

9. Очень кратко о Суворове и Кутузове.

10. Master of Monsters – Disciples of Gaia — обзор на IGN.

11. A Detailed Explanation of JavaScript Game Loops and Timing.

12. Xenonauts и долгий экран ожидания ИИ.

13. AI tactical rumble. Test subject — на itch.io.

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

Hold my beer! Часть 13. Новая стартовая локация и ее жители

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

Осталась самая сложная часть работы - квесты :(

Ну и кисонька, а то как же

Hold my beer! Часть 13. Новая стартовая локация и ее жители Unity, Gamedev, Indiedev, Игры, Мобильные игры, Видео
Показать полностью 1
83

Potata, ползком до релиза — что мешает на пути к финалу

Potata, ползком до релиза — что мешает на пути к финалу Gamedev, Инди, Unity, Гифка, Длиннопост

У нас совсем недавно произошло радостное событие-мы выпустили нашу игру в Steam. Это было не просто. Мы два раза переносили дату релиза, но в третий раз все таки игра вышла в назначенное время. И теперь я хотела бы рассказать свои впечатления о периоде перед выходом и о том, что вообще мешает довести проект до релиза.


Началась разработка игры «Potata» ещё два года назад с моих концептов. Изначально я и не предполагала, что в итоге эти концепты превратятся в рабочую игру. Но материала становилось все больше, а желание сделать свою игру все сильнее. Это желание ждало своего часа уже лет так 15, и вот настало время — пора перестать откладывать мечту на завтра, на понедельник или на новый год.


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


1. Игра не идеальна - смирись

Перфекционист внутри постоянно цепляется к мелочам, к деталям и кричит о том, что их нужно срочно исправить. Кажется, что если оставить какой-либо недостаток, то все его увидят,будут тыкать пальцем и смеяться. На деле это не далеко от истины, многие любят искать недочеты в чужой работе. Но я считаю,что нужно в первую очередь думать про общее впечатление от игры, а не зацикливаться на мелочах. Это можно делать бесконечно, что может привести к дате релиза под названием «никогда». Я для себя использую такое правило: «Если работа не становится лучше в течение определенного (зависит от сложности проекта) времени, то пора эту работу заканчивать». Наступает момент, когда «вроде что-то делаю», но эти изменения не делают работу лучше. Они или вообще не заметны, или просто делают работу другой, а не более крутой. Это для меня главный звоночек к тому , что пора закругляться и двигаться к финалу.

Potata, ползком до релиза — что мешает на пути к финалу Gamedev, Инди, Unity, Гифка, Длиннопост

2. Баги были, баги есть, баги будутБаг - страшное слово для любого разработчика. Последние пара тройка месяцев у нас состояла из исправления багов почти на 100 процентов. Но этот зверь бывает неуловим. На старте баги будут - этого почти невозможно избежать, особенно маленькой инди команде. Вопрос только в серьезности этих багов. Мы поставили себе конечную дату(в третий раз) и решили, что исправим максимум сколько сможем к этому числу и выпускаем игру. Иначе можно опять же вернуться к дате релиза «никогда». Само собой сырой продукт это плохо и ата-та, но вернёмся к пункту №1 этой статьи. Неидеальность своей работы в определенной мере нужно принимать.


3. Неуловимые мстители

Особенно «радуют» неуловимые баги. Баги с тегом «срабатывает иногда». Сложно исправить проблему, когда не знаешь что исправлять. Что-то прекрасно работает в эдиторе, а в билде не работает. Что-то срабатывает по непонятным причинам и с неизвестной периодичностью. Один баг исправлен, победа!...Появилось пять новых. Стандартная история для инди разработчика, да и не только.


4. Приоритеты задач

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


Мы всегда выстраивали определенные приоритеты. В первую очередь, само собой критические проблемы и баги, приводящие к вылетам или невозможности прохождения. Критические баги не нуждаются в объяснении, а вот про невозможность прохождения приведу пример. Проблема может быть не только программной, но и геймдизайнерской. У нас на уровне встречались лифты, спрыгнув с которых назад после начала их движения, игрок оставался навсегда в этом месте, потому что лифт управляется только с самого лифта. Выход был только умереть, а если ещё и сохраниться перед смертью, то прохождение оказывалось невозможным. Да, действие, казалось бы, нелогичное(только нашёл лифт, нажал кнопку и сразу с него спрыгнул назад, а потом ещё и сохранился пошёл на точке сохранения), но такие игровые ситуации нужно продумывать и обрабатывать, «включать дурачка» так сказать. И таких моментов было не мало.


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


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

Potata, ползком до релиза — что мешает на пути к финалу Gamedev, Инди, Unity, Гифка, Длиннопост

5. Волков бояться — в лес не ходить

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


6. Рост как специалиста. Долгая разработка.

За время разработки мы оба прокачались как специалисты, все таки два года прошло. Это, конечно, здорово, но игра базируется на концепатах двухлетней давности. И новым взглядом смотря на них, хочется сделать по-другому. Опасное желание, которое опять же может здорово оттянуть релиз. Я старалась идти по пути улучшения на базе прошлых наработок, гася в себе желание порушить все старое ради нового. Путь бесконечных переделок ведёт в никуда.


7. Знать все на свете не реально, но я, мечту свою лелея…

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


8. Выгорание

Potata, ползком до релиза — что мешает на пути к финалу Gamedev, Инди, Unity, Гифка, Длиннопост

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


9. Усталость и новые идеи.

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


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

Potata, ползком до релиза — что мешает на пути к финалу Gamedev, Инди, Unity, Гифка, Длиннопост

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


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


Главное правило для меня перед релизом: «лучше сделать с недочетами сейчас, чем идеально никогда».


Мы долго работали над нашей игрой и, конечно, очень трепетно выкладывать ее в общий доступ. Надеюсь «Potata» придётся вам по душе. Мы прекрасно понимаем, что проект не идеален. Всегда есть куда расти, всегда можно найти, что сделать лучше. Но это уже в следующий раз, а пока можно погрузиться в доброе приключение вместе с маленькой колдуньей Потатой.


Страница игры в steam: https://store.steampowered.com/app/1044020/Potata_fairy_flower/

Potata, ползком до релиза — что мешает на пути к финалу Gamedev, Инди, Unity, Гифка, Длиннопост
Показать полностью 5
46

Hold my beer! Расширяем механику игры. Часть 11. Подземелья

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

Мне предложили много классных вариантов, но я выбрал другое название. Именно "hold my beer!" произнесет главный герой перед началом всего приключения.

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

Итак, за прошедший месяц (на самом деле за пару дней) в игру было добавлено подземелье и механика смены локаций. Осталась система сохранений и можно набивать контент:)

Ну и кисонька в конце

Hold my beer! Расширяем механику игры. Часть 11. Подземелья Unity, Gamedev, Инди, Мобильные игры, Разработка, Видео, Длиннопост
Показать полностью 1
26

Another realm v0.06

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

Предистория (можно пропустить)
Планировать систему магии я начал уже давно, поэтому на её реализацию до нынешнего состояния у меня ушло не больше недели. Учитывая, что я не мог выделять много времени каждый день и то, что не малую часть времени ушло на попытки перейти к системе "разработки через тестирование" (test-driven development), я считаю, что справился весьма не плохо. Я начал чувствовать, что мои знания и навыки как в области геймдева в целом, так и программирования выросли на порядок, с тех пор как я начал разработку. Если кого-то интересует мой опыт разработки через тестирование в юнити и почему я пришёл к заключению, что лучше не использовать данную методику в этом проекте, могу написать об этом отдельный пост.

Компонентная система заклинаний.
Заклинания в мой игре это по сути комбинации различных компонентов, что позволяет создавать невероятное разнообразие заклинаний из небольшого количества компонентов. Так же эту систему можно будет внедрить в геймплей и позволить игрокам создавать собственные заклинания на подобие того, что было в морровинде и two worlds 1/2. Каждый компонент представляет из себя скриптовый объект( далее "со"), имеет свою реализацию функции "выполнить" и настройки которые он использует в этой функции. При использовании заклинания в сцене создаётся (или активируется из пула) объект, который инициирует и запускает заклинание(я называю его spellEngine или движок заклинания). Его задача в том, чтобы инициировать и проследить за выполнением всех компонентов заклинания и уничтожить(или вернуть в пул) все что с ним связано по завершению. Движок раздаёт компонентам ссылки на себя и следующий компонент в очереди и запускает выполнение первого компонента. Так же он запускает любые корутины, о которых его просят компоненты и следит за ними, чтобы знать, когда все компоненты закончили выполнение. Каждый компонент принимает ссылку на заклинателя, цель, начальную и конечную позицию и использует эти данные по своему усмотрению, а в конце выполнения, запускает выполнение следующего компонента и передаёт ему такие же данные. Весь сок в том, что компонент может изменять передаваемые данные, вызывать следующий компонент несколько раз или с задержкой. Например, компонент АОЕ находит все цели в определённом радиусе от цели и запускает следующий(а следовательно и все последующие) для каждой цели. Компонент "повторитель", запускает следующий компонент по той же цели несколько раз с опциональной задержкой. Компонент "снаряд" создаёт физический снаряд или спецэффект, которые летит в сторону цели или следует за ней и в конце передаёт новую позицию, как из начальную следующему компоненту. Компоненты имею опцию быть параллельными. В таком случае они запускают следующий компонент сразу, не дожидаясь окончания своей функции.
На данный момент имеется 5 компонентов: Урон, визуальный эффект, снаряд, повторитель и область действия. Каждый компонент имеет дополнительную настройку, поэтом можно очень быстро создать новые варианты компонентов. Все это создает очень гибкую систему создания заклинаний. Из минусов, разве что, сложность балансировки всевозможных вариантов заклинаний с точки зрения геймплея.
На данный момент в ближайших планах добавить ещё один компонент: "силу" (имеется ввиду термин из физики, force). Данный компонент позволит отбрасывать, притягивать и подкидывать персонажей и другие предметы применяя к ним физическую силу.
Интересно услышать от вас идеи для будущих компонентов. Возможно, что-то мне понравится и я реализую это в игре.

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

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

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

Танчики. Возрождение!

Ох, ребята! Мы реально 4 суток почти не спали! Ответственность перед новыми 970 подписчиками обязала сделать много работы и быстро! Спасибо всем за участие!

В этом посте:

* Полноценная игра Battle City, отвязанная от Google Play.

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

Поехали! Игра готова:

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

Особенно приятно было в эти бессонные ночи разработать вот такую галочку:

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

С ней сами разберётесь :-)))


Т.к. Google Play для нас не доступен - обновления игры будут всегда выкладываться в тематической группе ВК: https://vk.com/battle_city_online

Ссылки буду стараться выкладывать и на Яндекс.Диск и на гугл-драйв. Позже подумаем про альтернативные АппСторы... но кто их пользует вообще?


Теперь про то, как продвигали игру:
Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

И тут в самом деле нужно согласиться вот с этим комментарием:

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

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

В чем сложность? Ну во-первых это конкуренция. Сейчас рынок мобильных игр очень бурно растёт. Топовые компании в раскрутку игр могут выделять до 20 000$ в... ДЕНЬ (привет Викингам и т.п.). Куда уж сюда соваться студенту со своей лучшей игрой?

Усложняет всё вот что (достал б/у скрин из второго поста):

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

Думаете по какой причине все топовые игры спамят игрока десятками запросов на донат?

Думаете по какой причине в топовых приложениях выскакивает реклама с бесстыдной частотой?

Да потому, что это выгодно GooglePlay и AppStore. Топовая рекламная сеть в GooglePlay - это AdMob и принадлежит она конечно же... Гуглу )

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

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

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


И всё-таки шансы у молодых разработчиков есть. Сейчас я опишу основные моменты продвижения (ASO (Аппликэйшен Стор Оптимизэйшен)):

1) Понимание своей аудитории. Вы точно должны понимать кто основной пользователь вашего приложения. Если ошибётесь.... ну ничего страшного - даже видеокамерой можно забивать гвозди :-) Мотивации для скачивания у 7-летних девочек сильно отличаются от мотиваций 40-летних дядь. Реально: своего пользователя надо знать и понимать чем он интересуется.

2) Составление семантического ядра для продвижения вашего приложения. Т.е. если вы продвигаете Battle City, то ваше семантическое ядро будет состоять из слов "танки", "танчики", "battlecity", "денди" и т.п. Слов таких на старте должно быть около 100. Они дальше разделятся на запросы, которые будут высокочастотными, среднечастотными и низкочастотными.

Пример высокочастотного запроса (тот запрос, по которому чаще всего ищут данное приложение): "танчики". И все конкуренты так же продвигаются по этому запросу, потому с него начинать продвижение будет малоэффективно.

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

3) Собственно формирование текста с описанием вашего приложения. Этот текст должен максимально органично включать в себя все ключевые запросы. Особенно нужно обратить внимание на:

- название

- краткое описание

- первые 160 символов основного описания

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

4) Скриншоты... ОЧЕНЬ важно. Наши первые скрины были вот такими:

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

Потом мы неделю убивались с дизайнером и получили вот это:

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

Иииии! Конверсия в установку выросла почти в 2 раза! (конверсия в данном случае - это показатель людей, которые установили приложение в отношении к тем, которые зашли в карточку приложения).

Если у вас есть лишние тысяч 30-50  - можно еще заказать промо-видео для приложения с бодрой музычкой. Пойдёт в прок.

5) Ретеншен. Какое страшное слово. На самом деле это показатель возвращаемости человека в приложение. Если человек скачал приложение и забыл о нем - это плохо и гугл понимает, что приложение отстой и нужно его понизить в рейтинге. Если человек открывает приложение по 5 раз на дню - это хорошо и гугл повышает приложение в выдаче в отношении к вашим конкурентам. Все бьются за ретеншен, потому очень много игр часто присылают вам "Алё! Зайдите в приложение и заберите свою награду!". "Алё - заходите в приложение каждый день и получайте всё более и более крутые плюшки". Думали, что разработчики добренькие? Нет, они разводят вас на ретеншен :-)))

6) Поведенческий фактор. Это то, с каким качеством и как интенсивно вы тыкаете в сенсор во время пользования приложением. Если ваши пользователи заходят в приложение и закрывают его - это плохо. А если заходят и тыкают и тыкают и тыкают - это хорошо. Гугл думает, что у вас афигенно полезное приложение. И даже если у вас нет рекламы - продвинет вас вперед (в надежде, что жадность вас победит и вы всё-таки прикрутите AdMob и озолотите его).

7) Представление о вас в Интернете. Если кроме магазина приложения о вас нигде не говорят - это плохо. А если на каждом игровом форуме о вас что-то пишут - это хорошо. Гугл любит успешных. Он любит искать информацию. Он же всё-таки гугл :-) Для танчиков я использовал около 50 игровых ресурсов, к примеру, где что-то писал о нашей игре.

P.S. Если написать на 50 ресурсах в 1 день - гугл поймёт, что вы его "разводите" и накажет вас понижением рейтинга.

8) SERM. Управление репутацией. Гугл умный. Апстор, кстати, тоже. Гугл читает комментарии о вашем приложении по всему интернету. И если фигурирует много негатива "да там разводка на донат", "игра глючит", "вылетает" - он понижает рейтинг. Да, даже разводки на покупки должны быть незаметными. Гугл не любит, когда пользователи не довольны. Так что нужно следить за репутационным фоном вашего приложения.

9) Не хотел писать. Но напишу. Мотивированные установки. Это когда вы через специальный сервис платите людям за то, чтобы они установили ваше приложение (и типО оно станет более популярным). Есть такое. Но дело в том, что гуглы/апсторы уже давно научились определять людей, которые качают приложения для мотивированных действий и в 2019 году это очень плохо работает. Мало того, гугл обязательно накажет приложение, если подобное будет замечено.

Видел презентацию одной компании по продвижению - они 60 000$ всадили за неделю. Получили кратковременный пик по скачкам и дальше приложение ушло в долгий банн. Мотивированные установки использовать не рекомендую, хотя с пониманием отношусь к тем, кто их использует. У кого-то это просто бизнес и ничего личного.

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

Пост уже получился достаточно длинным. А каждый пункт требует достаточно плотного описания. И чтобы не быть теоретиком, я думаю, что можно на практике показать, как это работает. Хочу сюда добавить дополнительное объяснение, по какой причине мы танчики делали без рекламы и т.п.: современные методики маркетинга на столько изощренно водят людей за нос, что люди перестают видеть то, что они мало отличаются от армии управляемых зомби. Люди думают, что у них есть право выбора, но на самом деле выбора им не оставляют вообще. Пользователей ставят в условия, когда они перестают быть людьми, превращаясь в "объекты управления".


"Мы не скажем, а покажем" (с)


Чтобы всё это ЯРКО (гиперболезированно) продемонстрировать, мы создадим приложение, которое приносит 0 пользы. Т.е. вообще ничего полезного не делает. Вообще.

Но! Оно будет включать в себя максимум стандартных методик по управлению мнением людей. Пример внедряемых опций:


- награда за вход

- создание внутренней иллюзорной игровой ценности

- получения бонуса по таймеру

- использование энергии людей в распространении приложения

- подмена понятий (человек не реферал! человек - ментор!)

- получение бонуса с некоторой вероятностью

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

- онлайн рейтинг "игроков" по крутости иллюзорных внутриигровых ценностей

- подписка для увеличения шансов получить внутриигровые блага

- понторезки, в виде "каёмочек" на аватарке в профиле пользователя

- ассоциирование эго пользователя с внутриигровыми иллюзорными ценностями

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

- доп. % к бонусам игроку, который привёл другого игрока

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

- конечно же яркие и мотивирующие звуки и визуальные эффекты!


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


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


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


Несколько добрых людей писали вот такие добрые слова:

Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост
Танчики. Возрождение! Battle City, Танки, Battlecity, Unity, Разработка, Продвижение, Игры, Aso, Длиннопост

Сделали. Спасибо.


Всем счастья! Играйте в Танчики бесплатно и без рекламы. Пусть удача поймает вас за хвост!

Танчики качать тут: https://vk.com/battle_city_online

Часть 1: Новый уровень попрошайничества (нет).

Часть 2: Новый уровень попрошайничества (продолжение). Благодарность!

Часть 3: Сколько мы бабла на наркотрафике подняли)

Часть 4: Разборки танчиков в маленьком Гугле или Об адекватных и неадекватных конкурентах

Часть 5: RIP танчики

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

Another Way - текущий прогресс инди Action/RPG

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

Всем привет! Прошло немногим больше месяца и по традиции я спешу поделиться прогрессом нашей авантюры, серии под названием “Через тернии к игре мечты”. Хочу напомнить, что же тут происходит. Мы разрабатываем игру Another way - Нелинейная Action/RPG от третьего лица с элементами интерактивного кино, выполненная в лучших традициях средневекового Fantasy, на базе собственной вселенной. Разработка ведется на Unreal Engine 4 усилиями небольшой, но очень вдохновленной команды.


Предыдущие части этого длинного, но безумно интересного пути вы можете найти у меня в профиле.


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

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

Мы как и прежде уделяем большое внимание деталям, поэтому референсы для пропсов приходится искать в самых разных местах, так как отрисовывать все в 2D не представляется возможным. Но на выходе получается довольно интересно.

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост
Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост
Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

Но иногда отрисовывать просто необходимо, и тогда получаются неплохие референсы для будущих 3D моделей

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

В прошлый раз я показывал наработки концепта главного героя, с тех пор он приобрел финальный вид.

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

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

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост
Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

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

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

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


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

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

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

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

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

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост
Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост

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


Another Way - Main Theme OST (WIP)

Также мы занимались другими вещами, к примеру переехали всей командой в дискорд, начали вести обсуждения по направлениям, перевезли дизайн документ в Hacknplan (кстати хороший сервис, очень рекомендую), там же ведем задачи и статусы, подняли VPN сеть для полноценного пользования Multi User удаленной командой, это заняло очень много времени, колоссально помогло разработке в целом, но об этом не очень интересно читать. Поэтому предлагаю просто вдохновиться великолепной музыкой Jeremy Soule - Njól, где-то на берегу озера, возле деревни Мармид.

Я как и прежде буду рад вашим вопросам, комментариям и мы все еще ждем вас в нашем сообществе Вконтакте в любое время.

Another Way - текущий прогресс инди Action/RPG Indiedev, RPG, Unreal Engine 4, Another Way, Gamedev, Инди, Видео, Длиннопост
Показать полностью 14 2
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: