Все новости
Это интересно
Сейчас читают
Годнота
Аватар RTry Harder RTry Harder

Project Unknown или статья от инди-разработчика

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поводом для вдохновения при работе - послужили stealh-моменты из Last of Us и Evil Within, геймплей серий Resident Evil и Dead Space, а также мрачная атмосфера первых частей Silent Hill. По сути, я постарался взять из своего игрового опыта те моменты, которые нравились мне больше всего. Положительное влияние на работу оказала и популярность данных игр. Их концепция с годами не потеряла актуальности, отчего потребности прототипирования проекта я не ощущал. Я точно знал, какие вещи стоит добавлять в игру, а какие нет. Было четкое представление о механиках, которые дают сбой при неправильном применение, а какие работают как часы.

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

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

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

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

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

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

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

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

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

Читать далее
Планируете покупать PlayStation 5 Pro?
Уже купил
353 голоса, 8.3%
Куплю попозже
244 голоса, 5.7%
Да, но не за такие деньги — жду больших скидок
450 голосов, 10.6%
Ни за что не куплю эту штуку
3217 голосов, 75.4%
Теги: Годнота, Креатив, Разработка Игр, Хоррор, Unreal Engine 4, Инди
Аватар RTry Harder
RTry Harder
231 подписчик