Инди Maxim Chudaev
2 471

GOINUND — война решений

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

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

Привет! Меня зовут Максим Чудаев. 24 июля вышла моя первая игра — GOINUND. Я работал над ней один, и, за исключением музыки, звуков и пары анимационных ассетов, всё, что можно увидеть в ней, моих рук дело. Разработка Goinund заняла у меня около пяти месяцев работы, и сейчас мне кажется, что это непозволительно много. Я разрабатывал игру на Unreal Engine 4, и готов расхваливать движок в отдельном материале.

Проект изначально планировался как dungeon crawler, однако спустя время концепцию пришлось изменить под тяжестью сроков разработки, из-за которых игра рисковала не увидеть свет вовсе. Я принял решение и начал упрощать. В итоге превратить игру в аренный шутер с полчищами демонов оказалось довольно просто, сложнее было сделать игровой процесс интересным. Получилось ли у меня, решать, конечно же, игрокам. Рыночек порешает, как говорится. Основной мотивацией урезать и сместить релиз на ближайшее время был совет Extra Credits — Fail Faster.

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

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

Unlit (Shadeless)

Перовое, что бросается в глаза, и о чём стоит рассказать, это отображение текстур. У разработчика есть возможность поставить Unlit в качестве шейдинга. Это значит, что на материал никоим образом не будет влиять свет. Присмотритесь к скриншотам. Во всей игре нет ни одного источника света.

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

Плюсы тут заключаются в экономии времени на настройку света. Нет света — меньше нагрузка на систему.

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

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

Арена

Изначально, арена была больше и шире, но однажды мне показалось, что геймплей недостаточно интенсивен. Тогда я решил уменьшить арену на 20% в общей сложности. Эффект сработал отлично: начиная с мидгейма у игрока не оставалось времени для передышек. Кроме того, уменьшение размера арены подразумевало уменьшение количества монстров, ищущих свою смерть. Меньше нагрузки на систему!

Сильно бросалась в глаза однообразность геймплея. Монстры появляются, собираются в «паровоз» и бегают за игроком по кругу, пока игрок не упадёт с арены или не наткнется спиной на врага. Решением этой проблемы стали платформы, поворачивающиеся на 90".

  • Со временем количество одновременно поворачивающихся платформ росло. Максимум — 5 одновременно перевернутых.
  • Платформы выбирались рандомно из общего числа.
  • Время поворота платформы позволяло игроку сбежать или использовать blink, если платформа начала поворачиваться прямо под ним.
  • Каждые 2 секунды Navigation Mesh перестраивался, благодаря чему противник с плохой реакцией мог благополучно провалиться.

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

Визуальные изменения платформ по ходу разработки

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

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

Пример внезапно появляющейся стены

Цвет поможет

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

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

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

Горизонтальность

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

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

Going under?..

Название игры в конечном итоге появилось из названия проекта в «Анриле». Так как слово Goinund отсутствует в английском и русском словарях (да и во многих других), мне было довольно легко отследить игру в Твиттере, YouTube и интернете в целом. Это помогало мне выходить на контакт с создателями контента.

#Goinund очень хорошая игра тоже (надеюсь)

Просто ужасно

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

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

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

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

Мотивация спорной полезности

Я прекрасно понимал, что core loop очень слабенький и рискует быстро надоесть. Поэтому я придумал следующее: намекнуть игроку, что у игры есть конечная цель, чтобы поддержать его мотивацию. Поэтому после смерти высвечивалась надпись: «Ты не стал дьяволом». Эта фраза должна была намекнуть, что есть какая-то конечная цель, к которой нужно стремиться.

По лору игры, когда достигаешь определенного уровня — включается кат-сцена, в которой [спойлер], после чего игроку выдаётся достижение — тогда игру можно считать пройденной. Однако и «экран смерти», и описание на страничке Steam, и висящее достижение в магазине, судя по всему, не производят впечатление, что в игре есть конечная цель.

Один из стримеров предложил мне ввести хэштег с рекордом, на что я ему ответил, что в игре есть концовка, поэтому выше определенного значения не подняться. Он очень удивился и побежал снимать видео в духе «world first»(кстати, до сих пор не опубликовал).

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

Роковая ошибка

Когда я работал на предыдущих проектах, которые так и не увидели свет, я пользовался диздоками разной степени подробности. Работая над GOINUND у меня никакого диздока не было. Вместо него у меня был Trello, в котором таски добавлялись чаще, чем решались. Из чего я сделал простой вывод.

Работать без диздока плохо. По возможности избегайте этого.

Максим Чудаев

Опишите, как видите игру. Опишите, что будет представлять из себя вертикальный срез. Опишите core loop. Опишите, как будет выглядеть Minimum Value Product (MVP), детализируйте его, поборов лень. Не повторяйте моих ошибок. Сделайте хоть что-то из вышеперечисленного и отталкивайтесь от этого.

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

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

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

Маркетинг своими силами

Пользуясь своим опытом, выскажу несколько мнений:

  • Кураторы в Steam не так полезны, как о них говорят. Из 180 кураторов обзор сделали лишь восемь. В моём случае это дало мизерный прирост в вишлистах. Опираться на эту фичу не стоит.
  • Keymailer.co полезна, если заказывать рекламу. Я заказывал рекламу за 50 долларов, это дало несколько заявок на ключ от стримеров с 10к+ зрителей. Я так же оплатил фичу find gamers, которая позволяла предлагать ключи пользователям, сделавшим обзор на определенную игру. Эта фича почти не помогла мне.

Самый лучший маркетинговый совет, который я для себя выяснил: «Делайте чертовски хорошую игру».

Итог и планы на будущее

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

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

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

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

#опыт

Материал дополнен редакцией

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

Написать
{ "author_name": "Maxim Chudaev", "author_type": "self", "tags": ["\u043e\u043f\u044b\u0442"], "comments": 17, "likes": 46, "favorites": 22, "is_advertisement": false, "subsite_label": "indie", "id": 23965, "is_wide": false }
{ "id": 23965, "author_id": 16281, "diff_limit": 1000, "urls": {"diff":"\/comments\/23965\/get","add":"\/comments\/23965\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/23965"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64960 }

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

Популярные

По порядку

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

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

Z97TF-CHFHX-BP3I6
ECHWA-2WIFR-EH0F2
206M7-HYEMD-8Z6RD
8RKAI-MC64G-N3J9D
IZWJD-ND8Y7-024Y2

Ответить
8

По картинкам игра прям страшная страшная.

Ответить
3

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

Ответить
3

Большое спасибо, Олег! Я рад, что мой опыт оказался интересным и полезным)

Ответить
4

Ключи можете не проверять, их уже все активировали.

Ответить
2

Почему выбор пал на стим, а не на мобилки? Графика не сложная, контента не много самое то под планшеты)

Ответить
3

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

Ответить
3

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

Z97TF-CHFHX-BP3I6
ECHWA-2WIFR-EH0F2
206M7-HYEMD-8Z6RD
8RKAI-MC64G-N3J9D
IZWJD-ND8Y7-024Y2

Ответить
2

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

P.S. 8RKAI-MC64G-N3J9D забрал

Ответить
2

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

Ответить
1

Взял пятый! Интересная статья, спасибо)

Ответить
0

Я разрабатывал игру на Unreal Engine 4, и готов расхваливать движок в отдельном материале.

С нетерпением жду этого материала, очень интересная тема.
Про достоинства Unity в рунете есть множество статей, а про UE4 практически не встречал.

Ответить
2

потому, что все настолько круто, что времени писать отзывы и мнения у людей нет, фигачат игры с НЕРЕАЛьным усилием. (бадум тс)

Ответить
0

Глядя на игру не скажешь, что в ней проявляются хоть какие-то достоинства UE4.

Ответить
0

будет сделано!)

Ответить
0

ECHWA-2WIFR-EH0F2 забрал. Спасибо!

Ответить
0

как devil daggers от 3 лица с препятствиями! недурно.

Ответить
0

Cпасибо! Очень щедрое сравнение)

Ответить
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" } } } ]
EA анонсировала DLC для DLC
для аддона для спин-оффа
Подписаться на push-уведомления