Инди
Данил Свечков
5811

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

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

В закладки

Всем привет. Неделю назад я выпустил на сайтах Itch.io и Gamejolt.com свою первую игру. Называется она Write.Write.Push! и сделана на Unity3D.

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

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

Как создавалась игра

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

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

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

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

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

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

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

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

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

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

Да и не умею я в 3D. В 2D, впрочем, тоже не умею. К счастью, pixel art в геймдеве играет ту же роль, что и майонез на кухне — скрасит любое ужасно приготовленное блюдо (либо украсит хорошо приготовленное).

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

Так как Photoshop на моём стареньком ноуте работать отказался, всю графику я рисовал в Gimp. Набор функций примерно тот же, но зато программа абсолютно бесплатная (рекомендую, кстати).

Unity3d я изучал по урокам с YouTube — стал завсегдатаем таких каналов, как Brackeys и Blackthornprod. Если просто пошагово повторять всё, что эти ребята делают в своих видео, то месяца через полтора вы начнёте мало-мальски понимать язык программирования С#, на котором делаются игры в Unity.

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

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

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

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

Самый ранний прототип игры

И вот, изучив основы Unity, я принялся за разработку. Был это декабрь 2018 года. К тому моменту я узнал, что у двухмерных объектов есть свой вес и если у них под ногами ничего не будет, то они будут падать вниз.

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

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

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

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

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

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

Я хотел, чтобы при соприкосновении с «другом» главный герой как бы телепортировался в другую локацию (бар, спортзал, кинотеатр) из которой потом пришлось бы возвращаться в свою квартиру. Это бы отнимало время на таймере, ведущего обратный отсчёт. Сходил побухать с другом? Меньше времени осталось на сочинение романа.

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

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

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

А вот кухня с открытым холодильником. В итоговой игре вы всех этих разносолов не увидите

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

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

Прототип декабря 2018 года и итоговая игра августа 2019-го

Итого разработка заняла у меня восемь месяцев. А проходится игра всего за 20-30 минут. Стоило ли оно того? Наверное, да. Это ж бесценный опыт!

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

Сколько людей скачало игру

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

Как я сказал ранее, игру я загрузил на itch.io и gamejolt.com. Никто про неё не знал, никто её не ждал. И вот чего я смог добиться за неделю после релиза.

Обратите внимание на столб света. Это не спрайт. Это трёхмерное освещение в Unity, которое я проецировал на плоскую картинку. На разных мониторах этот свет смотрится по-разному. Иногда очень плохо. Лучше использовать 2D-имитацию света, как в Hollow Knight

Itch.io

  • 4655 человек за неделю увидели на сайте ссылку на мою игру
  • 51 из них нажали на ссылку
  • 92 - столько всего человек зашли на мою страницу
  • 9 человек игру скачали
  • 1 фолловер появился
  • 3 человека добавили игру в коллекцию
  • 1 англоговорящий пользователь сделал летсплей на YouTube — AprilPandaPlays. Она клёвая. Зайдите к ней что ли на канал, а то у неё всего 93 подписчика.

Gamejolt.com

Тут вообще всё печально. За неделю всего девять просмотров и одно скачивание. На мою страницу зашли четыре человека из России, двое из Бразилии, и по одному из Германии, США и Японии (а что, если это был Кодзима?).

Но с Gamejolt.com всё более менее понятно. Если на itch.io в основном загружаются игры хорошего качества, то на Gamejolt.com пользователи размещают абсолютно любой хлам: игра, над которой работала команда на протяжении пары лет, будет быстро смыта с первой страницы 50-м по счёту клоном Five Nights at Freddy’s, либо 20-м хоррором про Лунтика или Соника (откуда их вообще столько?).

Посмотрев, как игра распространяется на обеих площадках, на второй неделе я стал заниматься её продвижением. Опять же, ради эксперимента.

Я опубликовал пост про игру на reddit.com в подсайте r/Unity3D. Ну как пост... английский-то мой так себе. Поэтому я просто опубликовал там видео с геймплеем в начале разработки и в конце, а потом спросил завсегдатаев: «Ну как оно вам?». Получил семь положительных комментариев и три перехода с Reddit на страницу моей игры в itch.io. И ноль скачиваний.

Также я закинул сообщение о своей игре в несколько групп во «ВКонтакте», посвящённых инди-играм. Пока лишь две из них опубликовали мой пост. Это дало мне 1 дополнительный просмотр на Gamejolt.com и 8 дополнительных просмотров на Itch.io.

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

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

Спасибо за внимание. А скачать игру можно здесь:

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

Написать
{ "author_name": "Данил Свечков", "author_type": "self", "tags": ["\u043e\u043f\u044b\u0442"], "comments": 46, "likes": 225, "favorites": 124, "is_advertisement": false, "subsite_label": "indie", "id": 64762, "is_wide": false, "is_ugc": true, "date": "Tue, 20 Aug 2019 14:39:07 +0300", "is_special": false }
Подкаст «Жиза ГД»: Почему игры столько стоят
Слушать фоном🎧
0
{ "id": 64762, "author_id": 14816, "diff_limit": 1000, "urls": {"diff":"\/comments\/64762\/get","add":"\/comments\/64762\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/64762"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64960, "last_count_and_date": null }
46 комментариев
Популярные
По порядку
Написать комментарий...
4

что ж неплохо

Ответить
29

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

Ответить
10

С раздела продвижение проорал, конечно...
Пока лишь две группы ВК опубликовали мой пост. Это дало мне 1 дополнительный просмотр на Gamejolt.com и 8 дополнительных просмотров на Itch.io.

А я думал у нас все плохо, а мы с двух комментов в /r/PlayMyGame получили десяток развернутых отзывов. И еще могу посоветовать https://roastmygame.com. Не думал сделать мобильный билд? У нас первая игра мобильная набрала несколько тысяч скачиваний.

Ответить
2

За наводочку спасибо)

Ответить
1

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

Ответить
1

Классно) респект, я эту игру тоже скачаю!

Ответить
1

Спасибо за советы))

Ответить
6

Как раз работаю над романом. Возьму на вооружение люк в полу

Ответить
3

но в люке либо соседи снизу, либо подпол и Соленья.

Ответить
1

Огурчииииик Риииик!

Ответить
6

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

Ответить
0

Обязательно, вот только узнаю, что это)

Ответить
1

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

Ответить
4

Статья классная, написано неплохо, ну и сама история рассказанная тоже вполне интересная и показательная.
Советую посмотреть в сторону ньюграунда. Там люди охотно играют в новинки и ставят оценки. В 2 мои поделки поиграли примерно 2.5к человек (по 1200+ на каждую).
Ну, и как уже сказали, небольшие игры действительно лучше компилить под webgl и лить на сайт сразу.

Upd:

https://www.udemy.com/unitycourse/ - тоже очень советую, своих денег стоит. Есть так же 3д курс и какие то совсем адвансд штуки. Если очень очень очень захотеть, можно найти и бесплатно (но я этого не говорил)

Ответить
0

А я этого не слышал ;)

Ответить
4

как я потратил 8 месяцев жизни ради 20 минут геймплея

Сразу вспомнился этот фрагмент :)))
https://www.youtube.com/watch?v=IexKTYg2rRA

Ответить
3

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

Ответить
0

Наверное, займусь этим. Мне ведь даже рассказали здесь, как это сделать можно)

Ответить
2

ну, подписчика для Эйприл вы точно привлекли)

Ответить
1

Пусть порадуется)

Ответить
2

в копилку возможных проблем локализации :)

Ответить
0

А я ведь думал в английской версии назвать его просто Serg, или Sam, или Sally)

Ответить
1

в комментах ей уже объяснили про имя "Sergey"

Ответить
2

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

А я как дурачок жду это чудо.

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

Разрушаемому, было б круто.

Ответить
1

Но ведь Dead Island 2 так и не вышел)

Ответить
2

Поэтому и жду, как дурачок.

Ответить
2

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

Ответить
0

Спасибо за отзыв)

Ответить
2

Тоже похвастаюсь))

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

Ответить
1

Закинул 1 бакс, надеюсь дойдет до разраба

Ответить
1

Спасибо) Вот заодно и посмотрю, как эта система с донатами функционирует

Ответить
1

А почему .rar, а не экзешник? Вроде мелочь, но экзешник гораздо удобнее устанавливать.

Ответить
0

Я посмотрел, как на itch.io игры выкладывают другие и решил не выделяться

Ответить
1

Чисто совет - испоьльзуй лучше .zip, у него поддержка системная есть (в винде точно, за линух и мак не скажу за давностью времени), а для .rar нужно качать что-то ещё.

Ответить
1

Правильно я понимаю, что вы с нуля научились программировать и рисовать, чтобы сделать игру?

Ответить
1

Тогда точно время не зря ушло.

Ответить
1

Был бы билд для linux, я бы даже скачал

эксперимент с продвижением продолжается

забавно было стать его частью

Ответить
1

Об этот пиксель-арт можно порезаться... Мне нравится!

Ответить
0

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

Ответить
1

Про продвижение особенно было интересно. Спасибо за статью

Ответить

Прямой эфир

[ { "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": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovz", "p2": "glug" } } }, { "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, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "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" } } } ]