The StoryTale - как гоблины бросали курить и другие сложности портирования

Всем привет! Меня зовут Максим и я автор сказки-платформера “The StoryTale”. Сегодня я поведаю добрым волшебникам, почему перед выходом игры на Nintendo Switch гоблинам из мира нашей игры пришлось завязать с вредными привычками.

The StoryTale - как гоблины бросали курить и другие сложности портирования

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

The StoryTale - как гоблины бросали курить и другие сложности портирования

Игра вышла в Steam летом прошлого года, но её разработка началась аж в 2015-ом году. Я тогда не имел за спиной больших завершенных проектов, а пробовал свои силы на джемах, попутно разбираясь в Game Maker Studio. Тема одного из джемов носила название «бесполезные супер-способности», и мной было сразу решено отойти от идеи супергероики, чтобы не затеряться в бесчисленных пародиях на супермена и человека паука. В поиске другой идеи мне помогла моя девятилетняя дочь Арина. Она придумала концепт, повествующей о принцессе, спасающей принца и располагающей арсеналом весьма своеобразных заклинаний, а более того – неспособной выбрать нужное.

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

The StoryTale - как гоблины бросали курить и другие сложности портирования

Игра не заняла призовых мест, но сделала гораздо большее – она положила начало четырехлетнему периоду разработки более крупного проекта. Участие в джемах уже стало привычкой, и, даже занимаясь таким большим для меня проектом как The StoryTale, я отвлекался на разработку маленьких игр. Как ни странно, в ограничениях по времени и возможностям проще генерировать идеи, и множество механик, придуманных на этих джемах, успешно переносились в игру. Одна из механик, которая прочно закрепилась в финальном билде, это механика, привносящая в игру псевдо-пошаговость. Враги и ловушки двигались только тогда, когда двигалась сама принцесса, словно бы это 2D-версия игры SuperHot.

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

The StoryTale - как гоблины бросали курить и другие сложности портирования

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

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

В 2017 году к нам присоединился художник-аниматор Сергей, и игра зацвела новыми красками. Пара других художников обеспечила новоиспеченным анимациям замечательные фоны, что тоже благотворно сказалось на внешнем виде the StoryTale. Принц с принцессой стали подвижнее, а гоблины, которые являются основными обитателями мира The StoryTale, стали куда одушевленнее.

Также мы начали показывать нашу сказку-платформер на выставках и фестивалях со стендами инди-игр. Это был увлекательный и незаменимый опыт общения с игроками и другими разработчиками. Если вы показываете где-то игру и есть возможность использовать большой телевизор, обязательно этим воспользуйтесь. На одной же из выставок я познакомился с разработчиком игр Славой Грис, который пару лет спустя выступит издателем на Nintendo Switch. На мой взгляд личные отношения очень важны в индидеве. И отзывчивые коллеги по цеху - это очень неплохо :)

The StoryTale - как гоблины бросали курить и другие сложности портирования

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

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

The StoryTale - как гоблины бросали курить и другие сложности портирования

Итак, к лету 2019 обросшая кучей механик The StoryTale была доделана и выпущена в Steam. За период разработки персонажи научились останавливать время, летать над землей, проходить сквозь стены, становиться гигантами, сметающим все на своем пути, замораживать врагов, колдовать облака-ступеньки, дышать под водой и много другое.

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

Но на этом история её создания не закончилась, ибо впереди замаячила возможность выпустить ее на Nintendo Switch. Терять «независимость» при работе с крупным издателем мне не хотелось, и портирование-выпуск осуществлялись таким же инди-методом, как и сама её разработка. Получить Devkit от Nintendo в Россию самостоятельно очень сложно, но один мой знакомый – Слава Грис - все-таки это сделал магическим способом (а в сказках иначе и не бывает) и именно он выступил в роли моего издателя.

The StoryTale - как гоблины бросали курить и другие сложности портирования

Я уже на собственном опыте познакомился с процедурой публикации игры в Steam – вы оформляете страницу, делаете билд, проходите очень скромную проверку, публикуете игру. В этом процессе есть, разумеется, сложности и подводные камни, но с тщательностью просмотра игр, выпускаемых на Switch, Steam не сравнится. Работа над портом началась еще в январе 2020го, а релиз состоялся сегодня – 30 июня 2020го. Что же заняло столько времени?

The StoryTale - как гоблины бросали курить и другие сложности портирования

Первый запуск The StoryTale на девките состоялся весьма быстро. Игра сразу заработала на необходимых 60 кадрах/секунду. Но на больших уровнях производительность могла снижаться раза в два и пришлось дополнительно оптимизировать код.

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

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

Но сотрудник отдела тестирования предположил, что кнопки на экране демонстрируют какую-то другую консоль (game boy advance?) и велел в строгом порядке переделать обучение. Слава предложил перезаписать 40 GIF изображений с новым интерфейсом. Но я потратил еще несколько дней и написал обходное решение, располагающее отдельные кнопки поверх этих гифок.

The StoryTale - как гоблины бросали курить и другие сложности портирования

Стоит также иметь в виду, что Nintendo очень щепетильно относятся к названиям собственных кнопок. Так, например, на Switch, оказывается, отсутствуют триггеры. Слово триггер использовать нельзя. Так же нельзя использовать Press Any Key – должно быть четкое указание кнопки, например Press A to Play. Когда игра уже переведена на кучу языков, такая смена формулировок может вызвать отдельную головную боль. Интуитивно догадаться какой порядок слов нужно выстроить на европейских языках еще можно, а вот китайский – это подстава. Благо у Nintendo есть определенный словарь их терминов на нескольких языках, который, может быть, кому-то и поможет.

The StoryTale - как гоблины бросали курить и другие сложности портирования

Также сотрудники отдела тестирования проводят безумное количество опытов над вашей игрой. Я не могу представить, что еще с ней пытались сделать перед тем, как развернуть очередную сборку по причине того, что игра отображается не на весь экран если подключить ее к телевизору с разрешением в… 480р. Где взять такой телевизор, чтобы проверить в чем косяк самостоятельно – тот еще вопрос, так что решено было исправлять этот баг почти вслепую, запуская сборку на ПК и меняя разрешение монитора на 480р.

Ещё в их требованиях четко указано, сколько раз игра может писать сохранения в минуту. При тестировании оказалось, что что иногда игра сохранялась аж 42 раза за 60 секунд. В ПК-версии для упрощения тестирования и контроля происходящего процесса в любой сохраняемый параметр сразу открывает файл, записывается туда и закрывает файл. Что оказалось неприемлемым для прохождения игры проверок от Nintendo.

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

А теперь вернемся к курению. Когда столько раз получаешь отказы от отдела тестирования Nintendo - уже может потянуть расслабиться не очень полезным способом.

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

Дело в том, что Steam не требует получения и указания возрастных рейтингов, а для релиза в Nintendo eShop это процедура обязательна. Возрастной рейтинг присваивается цифровому продукту в следующем порядке: после регистрации названия продукта в магазине, издателю выдается «тикет» в рейтинговую систему IARC. Там издателю предоставляется здоровенная анкета, с пунктами вроде «есть ли в вашей игре секс?». Если поставить галочку, напротив «да», то анкета обрастет еще бОльшим количеством вопросов о том, какие части тела персонажей вы показываете и насколько близко расположена к ним камера. В зависимости от ваших ответов, игре присваивается рейтинг в большинстве стран – Pegi, ESRB, ACB, Russian (у нас не особо задумывались над наименованием, да) и так далее.

Немного интересной информации: для получения CERO (рейтинг в странах Азии) нужно заплатить две тысячи евро, записать прохождение игры на японском, ужатое в один час, и прислать им в Китай… DVD с этой записью.

The StoryTale - как гоблины бросали курить и другие сложности портирования

Кроме очевидного секса и насилия в анкете есть куча вопросов про алкоголь и про злосчастные сигареты. Так вот, без сигарет у нас стояла галочка только напротив cartoon violence, что давало игре в некоторых странах 3+, а ESRB вообще пометил ее как «для всех возрастов». Но стоило упомянуть, что в игре есть раковые палочки, как возрастной рейтинг почти во все странах взлетел до 18+, что является неприемлемым, когда ты собираешься выпустить в e-shop добрую сказку, где нельзя никого убивать.

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

Если вам приглянулась сказка-платформер The StoryTale – добро пожаловать в Steam или e-shop, где результат пяти лет моей работы уже доступен.

А курить вредно не только для здоровья, но и для рейтинга. Так что бросайте это дело или даже не начинайте и спасибо за чтение!

Страница игры в Steam: http://store.steampowered.com/app/629230

Страница игры в Nintendo eShop:

3737
6 комментариев

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

Ответить

Ну.. будем ( ͡° ͜ʖ ͡°) 

1
Ответить

А если это не сигареты, а вейп какой-нибудь? Это ведь даже злее.

Ответить

нужно искать вейпы с белой магией)

Ответить

Хочу CupHead в псевдопошаговости

Ответить

псевдопошаговость в каждую игру!

Ответить