Инди Кирилл Сапрыкин
953

Разработка рогалика с открытыми локациями — часть 1: сбор воедино шести лет наработок

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

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

В закладки
Аудио

Тем, что станет "чем-то", что у меня получится релизнуть за эти 6 лет, я думаю, станет рогалик в сеттинге, смешивающим фэнтези и Sci-Fi. И для того, чтобы мотивировать себя на разработку и совершенствование, а также понимание его недостатков, я решился завести мини-бложик по разработке. Особенно, когда знакомый геймдизайнер уже почти закончил свой "симулятор похода в магазин за пивом".

ПРЕДУПРЕЖДЕНИЕ: Статья написана социопатом с ужасными литературными навыками и позицией "лучше делать, чем говорить". Возможно, кому-то это будет физически больно читать.

Синтез идеи

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

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

Из того, что мне хотелось бы в неё добавить, можно перечислить сюжет, складывающийся из разрозненных историй, а также эпичные босс-файты уровня Dark Souls или Monster Hunter. Но это уже как получится. Наработок хоть и много, но я понимаю, что мне далеко до Кодзимы и многорукой Шивы. Что мне всё это в одиночку осилить просто не по зубам.

День 1. Подъем базовой графики и кода

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

Поднятый шаблон непропорционального мультяшного персонажа (чиби-типа)

После копирования в папку с незамысловатым названием "Новая папка 12" определенного числа файлов (не прона) я засел за создание базового костюма персонажа игрока. Ибо помимо графики было поднято также ядро движка будущей игры. Которое, по сути, является фреймворком, т.к. я в кодинге еще больший рукож... эхем... неумёха, чем в работе с 3D. Но, пожалуй, коллектив серьезных программистов с DTF, которые уж точно не перепутают teather и tether, не станут упрекать за меня за это слишком сильно.

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

И после курса футуротерапии мы получаем вот это

Тут склеим, там скотчем замотаем

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

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

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

Конец второго дня. Фактически четвертого, но если считать фулл-тайм работу, то и вовсе первого

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

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

После этого из Мешка Санты достали UI, который я 1,5 года назад калякал для RPG-выживастика (который вполне мог быть годным, если бы не вышел кривым и неиграбельным). Пересадить сами панели UI было быстро, но перекомпоновка всего этого чуда заняла несколько часов. А потом пара плейтестов и всё... Первое августа... А я еще в Yakuza 0 собирался играть... Но хотя бы на фулл-тайм день набежало суммарно.

К концу третьего дня уже можно хоть как-то играть и делать перекаты.

Почти что демо-прототип

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

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

Первая попытка - сделать на основе старого что-то хорошее. Неудача. Итоговый результат хуже оригинала, который и так был не фонтан.
Вторая попытка - использование вместо конвертации terrain'а в меш и последующего экспорта в редактор, ручного скульптинга. Пол дня, убитые на создание трех базовых тайлов были впустую, т.к. тайл с поворотом вышел кривым, алгоритм не мог его правильно подхватить из-за нарушенной целостности силуэта(44 случая из 100 уходили в ошибочный цикл генерации), а без него получался просто прямой коридор.
Третья попытка - симметричный по двум осям скулптинг только базового тайла. И этим базовым тайлом является тайл-перекресток с дополнительными перекрытиями, формирующими из него поворот или прямую по необходимости. О, бинго! Работает.

И вот после пяти дней, причем далеко не фулл-тайм, есть во что можно побегать минут 15 со скуки. А также есть материал, чтобы написать гайд о том как НЕ надо делать игры :)

Пять дней и игра уже на стадии чего-то кривого и косого, но играбельного

Итог

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

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

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

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

Планы

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

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

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

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

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

И, наконец, сюжет, о котором было сказано выше. Задания, разговоры NPC, описания предметов, записки.

Здесь находится опрос. Но он пока не работает в приложении.

Получилось заинтересовать?

Проголосовать
Переголосовать
Показать результаты

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Кирилл Сапрыкин", "author_type": "self", "tags": [], "comments": 16, "likes": 22, "favorites": 17, "is_advertisement": false, "subsite_label": "indie", "id": 23977, "is_wide": false, "is_ugc": true, "date": "Sun, 05 Aug 2018 21:45:58 +0300" }
{ "id": 23977, "author_id": 22983, "diff_limit": 1000, "urls": {"diff":"\/comments\/23977\/get","add":"\/comments\/23977\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/23977"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64960, "possessions": [] }

16 комментариев 16 комм.

Популярные

По порядку

Написать комментарий...
5

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

Ответить
2

Пора выпускать уже в EA по-моему, а ещё лучше - пойти на кикстартер!

Ответить
1

можно было бы и целиком сайт Главреда, гулять так гулять

Ответить
0

А игра пошаговая?

Ответить
0

экшн с перекатами.

Ответить
2

Значит rogue-lite

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

Наработок много, концептов, набросков сценария. А также фреймворк очень функциональный используется. Через несколько месяцев, возможно, будет на стадии возможного Early Access(в который далеко не факт, что полезу)

Ответить
0

Это не рогалик

Ответить
0

"Данжи" основаны на факторе случайности и рандоме.

Ответить
0

Еще забыли походовость, доступность всех действий, равноправность ИИ с игроком в плане механа.
Сам проектирую такой же роглайт, имхо, это лет на 10...

Ответить
0

зачем считать дни и сообщать об этом нам? может лучше забавную игру сделать

Ответить
0

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

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Новая игра Ubisoft на релизе выглядит
точно так же, как и на E3
Подписаться на push-уведомления