Gamedev Дмитрий Чижов
3 237

Опыт создания игры за один месяц

Первая статья на DTF. Хочу поделиться личным опытом создания игры.

В закладки

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

В конце января начал делать, в феврале закончил, а в марте уже выпустил в стиме (Paint It Black). Потратил на её разработку примерно 30 дней: сюда входит и продумывание уровней (всего 27, какие-то делал по несколько дней, некоторые за полдня), написание звуков, музыки, само программирование, графика (хоть и кажется, что её нет, но она есть, просто очень примитивная), немного маркетинга.

Скриншоты Paint It Black

Идея

Вдохновлялся флеш-игрой Yellow, которая уже есть и в Play Market. У успешной игры, ожидаемо, появилось куча клонов. Моя не то, чтобы клон, но часть уровней похожи.

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

Жанр — логическая экшн-игра, для некоторых уровней нужна не только логика, но и реакция, от чего у некоторых вызывает горение.

Концепция игры — сделать всё чёрным. Есть только экран, мышь и твой мозг, который должен помочь в этом. Но большинство загадок довольно простые, моей целью не было создание игры с логикой, которую невозможно понять. Только сейчас уже смотрю, надо было выбирать «правильные» приятные глазу цвета, а то чисто FFFи 000 могут вызвать боль.

Игровой движок

Unity 2018. Так как я уже с ним работал на тот момент уже полгода, хотелось попробовать 2D-возможности движка и реализовать идеи, которые давно сидели в голове. Дополнительным плюсом является поддержка нескольких платформ без особых усилий со стороны разработчика, поэтому игра доступна на Windows, MacOS и Linux.

Маркетинг

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

Steam-кураторы — все уже писали —тоже толку нет. Да я слал многим (до 100), где-то треть приняли ключи, и написали обзоры около 13. DTF, спасибо за обзор и включение в подборку!

Был еще Keymailer(сервис для маркетинга игр для инди-разработчиков, где напрямую можно отсылать ключи стримерам и ютуберам, смотреть кто сделал «покрытие» — обзор на YouTube, твит, стрим на Twitch или хотя бы запускал игру), но тоже не особо помог. Ожидаемо, большинство стримеров не делали обзоров — принимали ключ и всё. Естественно, там много обычных людей, так как зарегаться как «influencer» может любой. Но те, которые снимали обзоры — делали это очень качественно, и было довольно приятно наблюдать, как незнакомые люди на другом конце земного шара играют в твою игру. Так что откидывать эту возможность не стоит, тем более, что это ничего не стоит.

Одними из первых сделали обзор на игру, получив ключ через Keymailer

Звуки и музыка

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

Для трейлера записывал отдельный слегка измененный фрагмент мелодии. Сам трейлер делал в Movie Studio (бывший Sony Vegas), опять же без навыков работы в нем, всё усваивал по ходу.

Геймплей

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

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

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

В игре я не использовал ни одного текстового блока и компонент Canvas в Unity. Стартовый текст — Sprite, которые закрашивается (по факту — стирается). Про механизм закраски я бы написал отдельную статью, но она скорее техническая. Получился довольно гибкий инструмент рисования по спрайтам с кистью, которую можно настраивать, в этой игре она конечно фиксированная.

Я добавил ачивки после каждого уровня, чтобы можно было отследить, где отсеивается большинство игроков (более 50% игроков прошли 17 уровней, что составляет 63% от общего числа уровней).

Время, проведенное в игре

Среднее медианное время, которое игроки проводят в игре — около часа. 1% более 10 часов — это я, пока тестил игру в Unity с включенной библиотекой Steamworks Facepunch, которая работает с функциями Steam API (ачивки, лидерборды, статистика и тому подобное). Вообще, работа со Steam и его API тот ещё ад, да и сам партнёрский кабинет убогий, очень долго привыкаешь к нему. Вот они интерфейс самого магазина меняют, а этого нет — разработчики должны страдать. Заливка игры (если архив с билдом игры весит до 256 мегабайт, то намного проще загружать сразу через веб-интерфейс) как в прошлом веке, давно можно было бы это упростить, а так приходится кучу ненужных действий ручками делать, надо написать свое приложение для автоматизации этого процесса.

Результат

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

В целом, результат не то, чтобы выдающийся, или совсем ужасный, но я им доволен. Где-то за три месяца продано более 330 копий при цене в три доллара (для некоторых стран дешевле, и для России в том числе). Конечно, как и у всех, больше всего покупали в первую неделю/месяц и на распродаже. На разработку было затрачено 6660 рублей (Steam Direct и мини-маркетинг) и месяц работы.

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

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

P.S. Ну и несколько ключиков для быстрых первочитальцев:

  • LDZ6A-B7AMZ-J4YE4
  • B5B4T-LFNI2-NA66Q
  • 3BMEA-T4C3N-TYLKX
  • PJFC7-5T9RY-4ID29
  • LGHRG-IFFM3-CY8ZP
  • LCRVM-XCTX6-CT2EG
  • HPQ8J-Y2V6J-T66JH
  • QM2E5-YKWP0-BRYEY
  • CKL65-PLRLZ-40DYV
  • J30FQ-TDD9R-GCXID
  • RZCAM-WZLX0-PHNEG
  • E5XXW-CXQYT-A86VY
  • 0DYYR-AR4HR-384RX

#опыт

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

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

Написать
{ "author_name": "Дмитрий Чижов", "author_type": "self", "tags": ["\u043e\u043f\u044b\u0442"], "comments": 39, "likes": 49, "favorites": 42, "is_advertisement": false, "subsite_label": "gamedev", "id": 23828, "is_wide": false, "is_ugc": true, "date": "Wed, 25 Jul 2018 21:56:22 +0300" }
{ "id": 23828, "author_id": 50395, "diff_limit": 1000, "urls": {"diff":"\/comments\/23828\/get","add":"\/comments\/23828\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/23828"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "possessions": [] }

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

Популярные

По порядку

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

Потратил 15 минут перед сном. Первый взгляд - хорошо.

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

Ответить
3

Есть ведь SteamPipeGUI, поставляется вместе со всем SDK. Заливать довольно удобно, даже несколько, например языковых билдов, в разные хранилища.

Ответить
0

О, даже не знал про него, спасибо! Надо будет попробовать.

Ответить
1

Выглядит любопытно. Купил игру и обязательно напишу обзор.

Ответить
0

J30FQ-TDD9R-GCXID

Забрал, спасибо.

Ответить
1

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

Ответить
4

Спойлерить не буду, но вы, автор, знатный тролль. Прошёл уровень чисто случайно.

Ответить
0

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

Ответить
0

А вот у меня затык, что делать с двумя белыми квадратиками :( гоняю их уж 5 минут по экрану, ничего не придумывается ~_~'

Ответить
2

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

Ответить
0

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

Ответить
0

На это видимо и было рассчитано «Не еш, подумой!» (:

Ответить
0

У меня даже была идея нажать на клавиатуре Fn + F11, это пауза плеера XD

Ответить
0

Спасибо большое за ключик E5XXW-CXQYT-A86VY и
удачи на поприще разработки игр! \\\\٩( 'ω' )و ////

Ответить
2

Очень необычная, потрясающая игрушка! С одной стороны всё просто, в этом и суть — гениально!

Ответить
–1

Забрал 5 ключей, спасибо

Ответить
0

Чет как-то жирноватенько, не?

Ответить
0

Зачем тебе пять ключей то?

Ответить
0

CKL65-PLRLZ-40DYV
Подхватил. Спасибо.

Ответить
0

I see a red door and I want it painted black

Ответить
0

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

Ответить
0

Прошел, прикольная игруха. Титры в конце интересные )

Ответить
0

Привет, спасибо за текст. Отредактировали его и вывели в соцсети. Если чего поправить хотите — пишите.

Ответить
0

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

Ответить
0

Поправил всё. С жирным лучше не переусердствовать. Маркер для этих целей лучше подходит.

Ответить
0

LGHRG-IFFM3-CY8ZP
Взял ключик, спасибо за игру и текст.
Но почему для такой игры нет поддержки 32-битных систем?

Ответить
0

В стиме очень маленький процент юзеров с данной системой. У вас 32 битная?

Ответить
0

HPQ8J-Y2V6J-T66JH взял

Ответить
0

3BMEA-T4C3N-TYLKX (3й ключик). Спасибо, разработчику за его душевную историю. Обязательно постараюсь пройти до конца! :)

Ответить
0

Автор, молодец, уважаю.

Ответить
0

Short indie game made proper way. Так держать.

Ответить
0

Выглядит любопытно. Купил.

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
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" } } } ]
Узнавайте новости о мостах
Санкт-Петербурга первыми
Подписаться на push-уведомления