Главная » Хабрахабр » Как я делал комикс-игру по Лавкрафту

Как я делал комикс-игру по Лавкрафту

Это будет история о тернистом пути разработки 2D-квеста в сеттинге миров Говарда Филлипса Лавкрафта, который целиком оформлен в виде интерактивного комикса. Привет, Хабр! Если вас заинтересовала такая концепция, прошу под кат, где будет больше гифок, технические детали и опыт публикации на основных платформах.
Ну то есть все в игре, начиная от головоломок и заканчивая интерфейсом — это один бесшовный комикс.

Об игре

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

Таких игр существует совсем мало. И я подумал: а ведь игра, оформленная в комикс стилистике — это круто, броско и необычно! Конечно же, это легендарная «Comix Zone», шутер «XIII» (тринадцатый) и не целая игра, а эпизод в «What Remains of Edith Finch». Я могу вспомнить три. Нет, я знаю, что есть люди умудряющиеся разрабатывать платформер в течение 8 лет (Owlboy) и при этом, не растерять мотивацию. Но делать в одиночку / вдвоем платформер или FPS-шутер, для независимого разработчика — непозволительная роскошь — слишком много анимации, слишком сложно, слишком много времени потребуется и высока вероятность, что игра может вообще не дожить до релиза. А вот игра в жанре puzzle / point-and-click — это совсем другое дело! Я искренне восхищаюсь и немного завидую таким людям, но боюсь, это не мой случай. Итак, решено! Тем более, опыт в создании 2D-головоломок у меня есть — некоторые могут помнить меня как автора серии головоломок «Механическая Коробка». Лавкрафта, жанр — point-and-click, визуальный стиль — комикс. Сеттинг — произведения Г.Ф.

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

Это классическая текстовая игра, написанная Грегори Йобом в 1972 году. Игра называлась «Hunt the Wumpus». Как гласит «Википедия», это первая в истории текстовая, а также первая приключенческая компьютерная игра, которая была чрезвычайно популярна в 70-80-е годы прошлого века.

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

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

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

Возвращаясь к Лавкрафту, наш герой направляется морем в Новую Англию, но, очевидно, его планам не суждено сбыться, так как:

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

Это вход в подземелья Храма Безымянных Культов, где в лучших традициях Лавкрафта главного героя не ждет ничего кроме безумия и смерти (в целых шести вариантах концовок!). Подземелья представляют из себя лабиринт из игры «Hunt the Wumpus», но вместо Вампуса в лабиринте обитает Дагон — покровитель Глубоководных. Его нельзя убить сразу, а можно только ранить — все-таки, один из меньших божеств пантеона мифов Ктулху — это вам не шутки! А в роли гигантских летучих мышей здесь прислужник Древних — Шоггот — бесформенная масса протоплазмы с тысячей глаз, щупалец и других невообразимых конечностей. От Шоггота можно убежать. Побег реализован в виде мини-игры, где нужно на время решать простенькие загадки, выбирая одну из трех дверей. Мой экспромт на тему QTE (Quick Time Event) — довольно распространенного приема в видеоиграх, когда нужно быстро выполнять какие-то действия, нажимать определенные клавиши.

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

Разработка

Первый прототип на Unity я собрал довольно быстро, примерно за неделю. И пусть меня закидают тапками, но я понял одну простую вещь — Unity мне не подходит. Да, удобный визуальный редактор, да, море информации, за счет популярности движка. Но… Я большую часть времени потратил на то, чтобы понять, как же из имеющихся кубиков собрать то, что мне нужно. Вместо того, чтобы делать и использовать кубики «нужной формы». Ну и некоторые вещи мне кажутся просто странными (с непривычки, наверное). Например, «зашитые» в анимацию стартовые координаты: если в анимации объект начинает свое движение с позиции (0,0), то при применении этой анимации к объекту, он прыгает на (0,0) в независимости от своего текущего положения. Вы скажете: так это же надо было скачать из Asset Store! Возможно…

Это кроссплатформенный, бесплатный движок на Java. В общем, я выбрал более привычный и понятный мне фреймворк — LibGDX. То есть LibGDX ближе программистам, а Unity тем, кто наоборот, хочет меньше кода и больше «действия». Я где-то слышал мнение, что Unity — это о быстром конструировании, а LibGDX о красивой архитектуре, коде. Ну и то, что это Java, для кого-то может послужить решающим фактором. Из плюсов LibGDX так же стоит отметить легковесность и быстродействие, за все время разработки я не сталкивался с проблемами, что где-то, что-то тормозит.

На форуме gamedev.ru, на мое объявление откликнулся замечательный художник — Сергей Ковалев.
MENJ4-2R5ZJ-HD7AQ
Имея на руках прототип, я стал искать художника, так как понял, что ни требуемое качество, ни объем арта, мне самостоятельно — не вытянуть. Там же, нашелся и композитор — Максим Грачев. Все эти клевые гифки, которые вы тут видите — его рук дело. Для каждого из нашей маленькой команды, это был проект «в свободное время». Гифки звук не передают, конечно, но все, кто играл в игру, говорят, что звук в игре — очень атмосферный. Поэтому, долго ли, коротко ли, но спустя полгода выходных и вечеров после работы, игра приблизилась к завершению.

Публикация

Так как это Java, то билды под разные платформы, по сути, сводятся к поставке одного и того же кода с нужной для платформы JRE (Java Runtime Environment). Я сразу решил выпускать игру для всех основных ОС: Windows, Mac, Linux, Android и iOS. Не буду подробно останавливаться на мобильных сторах, а расскажу лучше о Steam. Тем более, это мой первый опыт размещения игры в магазине от Valve.

Регистрация занимает несколько дней, Steam якобы проверяет данные, заполненные по налоговой форме W-8BEN. С недавних пор, продавать свои игры в Steam может любой желающий, достаточно пройти процедуру регистрации и заплатить взнос в 100$ (за каждую игру). В других случаях, когда мне приходилось заполнять эту форму, хватало просто ксерокопии. Не очень понятно, зачем, правда.

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

Можно собирать и загружать билд. После утверждения, страница становится видна всем пользователям, и игра попадает в категорию «Скоро выйдет». Во-первых, надо сделать чтобы игра запускалась на весь экран, для этого добавляем в DesktopLauncher следующий код: Расскажу немного подробнее как это происходит в случае с LibGDX.

LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.vSyncEnabled = true;
config.width = LwjglApplicationConfiguration.getDesktopDisplayMode().width;
config.height = LwjglApplicationConfiguration.getDesktopDisplayMode().height;
config.fullscreen = true;

Во-вторых, нам нужно собрать бандл из исполняемого файла (стартера), нашего jar файла, который будет исполняться и JVM под нужную платформу. Для этого есть множество инструментов. Я бы акцентировал внимание на двух: это, многим знакомая утилита, Launch4J. И Packr, разработанный командой LibGDX. Что использовать, дело вкуса, лично мне ближе Packr. Делаем конфигурационный файл и одной строкой собираем билд, например, под Linux (можно хоть автоматически):

Пример конфигурации для Packr

{ "platform": "linux64", "jdk": "/Users/me/Documents/builds/jdk1.8.0_191-linux-x64.zip", "executable": "My-Game", "classpath": [ "desktop.jar" ], "output": "EFIBB-ZIY32-8Q569", "mainclass": "com.puzzle.comix.desktop.DesktopLauncher", "vmargs": [ "Xmx1G" ] }

Далее, нам нужно загрузить сборки в Steam, их у меня три: для Windows, Mac и Linux. Описание этого процесса есть в документации (на русском), поэтому, я просто перечислю ключевые пункты:

  1. В Steamworks создать «Хранилища» для соответствующих ОС. Я создал «Windows content», «Mac content» и «Linux content».
  2. Там же включить эти «Хранилища» в «Комплекты».
  3. Скачать SDK Steamworks — с помощью него происходит загрузка в Steam.
  4. В примерах скриптов загрузки заменить ID приложения и хранилищ на свои. Прописать локальный путь к файлам игры.
  5. Запустить загрузчик. В моем случае (Mac OS), команда выглядит так:

bash ./steamcmd.sh +login "user" "password" +run_app_build ../scripts/app_build_xxxxxx.vdf +quit

Вот, собственно, и все. У меня раза три вылетел steamcmd с ошибкой сервера 500, с четвертого раза все загрузилось. После этого отправляем уже сам билд игры на модерацию. Плюс 4-5 дней и можно нажимать заветную зеленую кнопку «Опубликовать».

Альтернативные площадки

Сейчас, как грибы после дождя, появляются альтернативные Steam магазины: Discord, GOG, Green Man Gaming и т.д. Все активно обсуждают анонс собственной площадки от Epic Games (есть надежда, что у них получится составить реальную конкуренцию Steam). А я хочу сказать пару слов про itch.io. Если вы меня спросите, как я вижу идеальный магазин для разработчика? Я без колебаний отвечу — itch.io. Я понимаю, что идеальный магазин для разработчика и для игрока — это немного разные вещи. И вообще itch — это утопия. Но как же классно и просто здесь все сделано! Мега-удобный редактор страницы игры, все очень продуманно, быстро и современно. Никакого нагромождения кнопок и действий, всего пару-тройку кликов и ваша игра доступна всему миру!

Я получил фичеринг на главной странице, просто написав создателю itch.io в почту (да, это возможно и даже несложно). Проблема одна, та же, что и у всех альтернативных сторов — небольшая аудитория. И с учетом этого, у игры было всего ~200 просмотров страницы в день и несколько ленивых продаж.

У itch есть такая фишка: вы выставляете минимальную, «обязательную» цену игры, а покупатель может ее увеличить по своему желанию, чтобы поддержать разработчика. Но то небольшое сообщество, которое здесь есть — очень дружелюбное! В отличие от Steam, где токсичности и комментариев «купил бы за 15 руб» — слишком уж много. И такие продажи, выше установленной цены, вполне частое явление!

Скорее-всего, если быстро вникнете в суть и не застрянете на какой-нибудь головоломке, вы сможете пройти ее за час. Да, игра небольшая. Поэтому, в Steam я поставил максимально честную и бюджетную цену в 99 руб. Я понимаю, что заработать какие-то серьезные деньги у игры шансов нет. Тем не менее, требуют скидку в 50%, пишут про 15 руб и вообще «раздавать бесплатно для продвижения имени разработчика» (чтобы это не значило). Пожалуй, ни для кого такая сумма не будет существенной. Просто это мое «больное место». Впрочем, я отвлекся. Я, как никто, знаю сколько усилий вложено в этот условный час геймплея и меня это задевает, признаю.

Маркетинг

Расскажу о нескольких мероприятиях, которые я предпринял, чтобы как-то заявить об игре. Во-первых, Keymailer. Этот сервис на слуху, но будет не лишним рассказать принцип его работы. Вы регистрируете игру и загружаете в сервис какое-то количество Steam-ключей для раздачи блогерам. С другой стороны, блогеры регистрируются в сервисе и могут запрашивать у вас ключи, чтобы сделать обзор игры. В теории, звучит неплохо. Но это только в теории. Жаль я не погуглил предварительно отзывы про Keymailer.

На бесплатной подписке, практически весь функционал обрезан. Этот сервис монетизируется за счет разработчиков, я ничего не имею против, просто имейте в виду. Да, запросов на ключи от «блогеров» при этом значительно больше. Я закинул 50$ на рекламу — игра отображается неделю где-то на видном месте Keymailer-а. Более-менее крупному каналу не нужно заниматься запросами ключей через какой-то Keymailer, у них и контента хватает, и покупка новинок никаких сложностей не вызывает. Но, мне кажется, порочна сама идея этого сервиса, если задуматься. Может я ошибаюсь, но мне показалось, что Keymailer используется, в основном, недобросовестными пользователями для выманивания бесплатных ключей, для себя или на перепродажу.

Раздал 65 ключей, 47 из них активированы, еще 18 где-то до сих пор продаются, наверное (например, я нашел свою игру на плати.ру). Я акцептовал запросы только от каналов с подписчиками (ну хотя бы 5-10 тыс.) и галками «Accredited» от Keymailer. С парой десятков просмотров… Не повторяйте моих ошибок. В результате, я получил 6 (шесть) видео на YouTube и один твит.

Неплохо показала себя старая-добрая рассылка писем вручную по Ютуберам. Но не все так печально. Критерии отбора простые: обозревал инди игры, не очень много подписчиков (но и не совсем мало, я выбирал от 100 тыс.), не специализируется на ААА-играх, не специализируется на какой-то конкретной игре (Майнкрафт, Танки). Потратив вечер и доказав Гуглу множество раз что «Я не робот», я собрал на YouTube где-то 30 email-ов русскоязычных, подходящих летсплееров.

Если мне не изменяет память, эти советы я прочитал у Сергея Галенкина (ссылку давать не буду, известный человек в игровой индустрии). Дальше нужно правильное письмо. В моем свободном пересказе они звучат так:

  1. Максимально лаконичное описание игры, не больше двух предложений: «Игра в сеттинге произведений Говарда Филлипса Лавкрафта, которая целиком оформлена в виде интерактивного комикса».
  2. Что вы хотите? «Было бы круто, если бы вы поиграли в мою игру на канале».
  3. Интересная гифка до 2 Мб прямо в теле письма (я вставил сундучок, который выше).
  4. Ссылка на Steam и ключ. В общем, главное — это кратко и по сути.

И хочу сказать, что отклик вполне себе! Целых 4 канала опубликовали ролики по игре и даже один «миллионник» ответил на письмо. Это само по себе, достижение! Учитывая, что игра далеко не суперподходящая для стриминга. Правда, аналогичная рассылка по англоязычным блогерам, к сожалению, провалилась. То ли виноват мой неидеальный английский, то ли я не смог правильно подобрать целевые каналы.

Заключение

Уф! Пора уже подвести какие-нибудь итоги. Топик становится длиннее, чем я планировал. Давайте подведем финансовые, что ли. На Steam мы наторговали примерно 1000$, еще 70$ — itch (хочу пожертвовать их на развитие магазина), плюс с мобильных сторов должно набежать пару сотен долларов. Хороший ли это результат? Я считаю, неплохой! Учитывая, что в современном мире для инди почти не осталось места, если ты не «звезда», конечно. А я обычный «середнячок», надо признать. И хоть игра получилась небольшой, но именно такой, как я себе представлял. А главное, законченной и цельной. Так что я доволен.

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


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Перевезти дата-центр за 14 400 секунд

Всем знакома пословица «Один переезд равен двум пожарам». Смысл этой народной мудрости в том, что процесс переезда сопряжен со стрессами, суетой, переживаниями и, конечно, беготней, которые бывают и при пожаре, а подчас и с утратами ценного имущества. К тому же, ...

Дорожная карта математических дисциплин для машинного обучения, часть 1

Вместо предисловия Допустим, сидя вечерком в теплом кресле вам вдруг пришла в голову шальная мысль: «Хм, а почему бы мне вместо случайного подбора гиперпараметров модели не узнать, а почему оно всё работает?»Это скользкий путь — вы думаете, что достаточно пары ...