Привет! В этой статье я расскажу о результатах публикации одной визуальной новеллы и поведаю о второй, при разработке которой я попытался учесть полученный опыт…
Перед интенсивной разработкой небольшой игры (aka хакатоном) важно решить чего вы хотите: программировать, повеселиться или создать готовый продукт? У меня есть друг, который очень хочет сделать игру, но раз за разом он начинает с создания графического движка, на базе libgdx. Возможно, что такой путь приводит к шедеврам вроде {$TitleCoolIndieGame}. На мой же взгляд, ему просто хочется попрограммировать. Так, что Читатель, если же Вы действительно хотите сделать игру, лучше не начинать с абсолютного нуля или читать эту статью, а приступить к конкретной работе! Тем более, что под катом не success story, а согласование макетов полуголой девушки, вакуумные маффины в коне, безумная работа над переводом сомнительного юмора и ещё более сомнительных отсылок, описание ненормальной соло разработки, да немного программирования, чтобы соответствовать тематике.
Под катом десяток мегабайт графики и более десяти страниц текста.
Ну а пока мы ещё находимся под красивой девушкой из промо картинки, я благодарю Lertmind, veshurik, lain8dono, PapaBubaDiop, jehy, kekekeks, SamVimes и всех остальных, кто уделил мне своё время, предоставив дельные советы, критику и комментарии. (Кроме того парня, который назвал меня школьником в паблике Хабра) Кстати, у вас всё ещё есть шанс почитать серьёзный материал MrNixon о разработке кинетической новеллы, а не мою возню.
Как и обещал, сначала я расскажу о итогах запуска прошлой игры. Почитать про неё можно по ссылке.
Результаты запуска симулятора тян
По моим прикидкам, сотня установок в день былом пределом для такой игры, но игра стартовала лучше чем я ожидал!
Видимо, сказалось то, что я оставил ссылку на игру во многих группах ВК и сайтах…
Сначала я ориентировался только на паблики о разработке игр и визуальных новеллах. Затем добавил в список аниме сообщества и группы о инди разработке. Но сюрпризом для меня стало то, что после “сползания” опубликованных постов (публиковали примерно каждую пятнадцатую запись; все хотят деньги за “рекламу”) основным источником траффика стала органика маркета!
Впрочем, это же сыграло со мной шутку. Приглашаемая мной аудитория (мужчины возрастом 20-40 лет) была “подготовленной” к неожиданной развязке и оценивала игру на 4.8: в описании к ссылке я везде указывал, что это приложение шутка и розыгрыш. Описание приложения в маркете было составлено без этого нюанса… Органический траффик (женщины возрастом 16-20 лет) опустил оценку до 3.5. Особенно, остро на грубые концовки игры реагировали иностранные пользователи. В их понимании, такое было бы оправданно только при наличии скрытой хорошей концовки, которой у меня не было. Низкий процент «органических» установок лишь подтверждает мои подозрения.
Но знаете, всё это меркнет по сравнению с тем, что иностранный ютуб блогер записал прохождение моей игры. И оставил довольно неплохой отзыв! Это реально круто… Я увидел, что человек повеселился: у меня получилось передать эмоции!
Фактоперерыв
А ещё Google блокировал игру из-за ачивки с горничной, прикрывающей руками свою грудь на скриншоте. А потом извинился, разбанил, но грудь убрать таки попросил.
Завязка
Игра стабильно приносила по 2-3 маффина в день. Этого вполне хватало, чтобы я задумался о разработке ещё одной новеллы. Нужно же доказать, что я не сексист! А как сделать это лучше чем, создав игру про сильную, но наивную героиню? Тем более, что органический трафик явно был бы рад отомэ (визуальная новелла с флиртом для девушек) на русском. Но какая же Фейк Новелла, если это будет обычный симулятор свиданий для девушек? Нужно было определиться с фейк элементом, а для этого выбрать сеттинг и набросать сюжет… Я посмотрел прохождения не одного десятка отомэ на Youtube, почти безвозвратно погубив свой список рекомендованных видео, но определился с сюжетом: монстры. Вампиры, оборотни и прочая нечисть, что должна поддаться очарованию представительницы человеческой расы! Но в моей игре монстры будут монстрами: они съедят героиню. В каком-то смысле это даже образовательный элемент: нечего мутить романы с теми, кто может вас съесть. Осталось придумать, как объединить таких разных персонажей в рамках одной истории, но ответ уже был вокруг меня. Место, что объединяет афрофранцузов, китайцев, белорусов и казахов: общежитие!
Пускайте титры… Перед вами история разработки игры “Фейк Новелла: Адская Общага”.
Фактоперерыв
Самой популярной девушкой стала “Сестрёнка”. Второе место заняла Горничная, а третье разделили Яндере и Цундере. Интересным совпадением стало то, что размер груди персонажа оказался прямопропорционален его популярности.
Введение
Конечно, для разработки я вновь выбрал привычный Unity3D вместо RenPy, который является неким стандартом в области. Использование собственного движка для игры с парой фраз было вполне оправданно, но в этот раз мне хотелось добавить больше действий до развязки. Да и неправильно выбранная архитектура даже в рамках небольшой игры генерировала разнообразные ошибки. К счастью, Lertmind рассказал мне о Fungus — фреймворке содержащем множество инструментов для создания визуальных новелл. Сначала я сомневался: ведь во мне было велико желание писать код, а Fungus казался очень казуальным. Тем не менее, подавив свою гордость, я изучил документацию и не пожалел: он содержал всё, что я хотел. Единственным минусом стало отсутствие встроенной системы сериализации для сохранения/загрузки. (обещается в новых версиях) Протестировав его на кошках, я начал разработку новой Фейк Новеллы.
Фактоперерыв
Анализ отзывов иностранных пользователей показал мне, что женская логика интернациональна и поднятый мною вопрос актуален во многих странах мира.
Концепция
“Король Лев 1” шёл по сюжетной канве Гамлета; “Король Лев 2” взял в основу историю Ромео и Джульетты; “Король Лев: Львиный Отряд” это какая-то супергеройская история. Мне до Диснея далеко, поэтому, завязкой моей истории стала “Красная Шапочка”. Юная (но совершеннолетняя) девушка несёт любимой бабушке пирожки. Несёт она их по тёмному лесу поздней ночью (ведь все любят поесть после шести) в ярко красных туфлях. (чтобы не было стыдно перед поисковиками) На этом мой творческий гений закончился и далее следует Deus ex Machina сценариста — лентяя: орлы “неизвестная волшебная фиготень” переносит героиню в основное место действия.
Для описания текущий диспозиции в игру был включён персонаж “Комендант Общежития” у неё несколько собственных концовок (в том числе секретная) и одновременно через неё осуществляется выбор мужского персонажа.
Само общение с мужским персонажем я сделал довольно банальным: монстр показывает свою истинную сущность и игроку даётся выбор: попытка приручения монстра или побег. Любая попытка приручения разумеется проваливается, а побег приводит к небольшой потасовке.
После сражения игрок должен выбрать путь для побега. Тут я тоже решил особо не мудрствовать: прыжок в окно или побег через выход. Побег через окно будет несколько раз подряд приводить к гибели: у девушки не хватает сил его выбить и её съедают. Кстати, с окном и связана одна из секретных концовок: если в нескольких прохождениях пытаться его разбить, то в итоге, попытка увенчается успехом. Об этом я даю намёк игровыми средствами.
Ну а побег через вход и будет приводить к хорошей концовке: комендант видит бегающую по территории девушку и отправляет её домой.
Фактоперерыв
Первоначально я хотел дать девушке имя одной из героинь The Path, но потом решил, что это перебор делать отсылку к такой фантастической игре в моём трешачке. Немного, поразмыслив я назвал её в честь принцессы Сисси, а общежитие было наречено названием её родового замка.
Сюжет
В слегка провалившемся подкасте о разработке визуальных новелл, говорится, что сценарист должен быть скорее автором пьес чем просто писателем. Я полностью согласен с этой точкой зрения.
Для разработки сюжета я использовал Google Docs. В моменты вдохновения я описывал ключевые сцены: диалоги и диспозиции персонажей, а затем переносил их в движок игры, соединяя филлерными переходами. Несмотря на то, что в эстрадно-танцевальном институте не преподают сценарное мастерство, воду я лить умею.
Дополнительная механика
Ещё с самого начала, мне хотелось бы добавить в игру что-то кроме выбора ответа. Этим «что-то» стала защита от монстра выполненная в стиле кликинг файтинга.
На механику кликкинг боя меня вдохновил Sakura Clicker.
Фактоперерыв
Вообще, эту игру я делал, пока художники рисовали графику для моей версии данной игры. (кликера) Я хотел сделать масштабное приключение в подземельях и поединки с девушками-монстрами… А тут сами Sakura взяли и анонсировали полную копию моей задумки! Не круто в общем (
Дизайн костюмов
В Google Play скриншоты должны быть приемлемы для возрастного рейтинга 3+. Действительно, дети уже отлучены от груди и видеть её для них теперь строгое табу.
Я делаю игру с нескрываемым фан-сервисом (этти/софтверная эротика) и это приводит к проблемам с нарядами. После множественных блокировок цензура для меня стала больным местом и я очень параноидален в некоторых вопросах. Например, вот первоначальный скетч костюма Госпожи Коменданта.
Хотя костюм и закрыт, но открыта ягодица и может показаться, что попа целиком оголена. В итоге, используя Paint я создал дизайн костюма, проходящего мою внутреннею цензуру! Итоговый вид персонажа можно увидеть ниже.
Кроме изменения основных элементов, был добавлен бейджик, как элемент униформы.
Сводка
Есть такая штука, как “сводка”. Это процесс при котором всех персонажей помещают на один большой холст для сравнения пропорций и стилистики. Чем раньше происходит этот процесс, тем меньше вероятность, что карлик в игре окажется больше великана. Я думал о таком и просил художника следить за размером персонажей; она и следила. Причём, ещё и фон был масштабирован относительно них. Только вот…
Я по своей нетерпеливости встраивал в демо версию не скетчи major версий, отправленные документами, а вырезал персонажей прямо из скриншотов графического редактора. Это привело к тому, что размеры персонажей с которыми я тестировал игру оказались в полтора-два раза больше размеров персонажей подготовленных художником.
Привело это к тому, что в некоторых местах, элементы интерфейса закрывали собой важные элементы персонажей. Интерфейс-то я сдвинул, а вот масштаб фонов улетел в тартрары так, как был расположен с учётом различных отношений разрешений и никак не соотносился с масштабом персонажей…
Свою лепту внёс и демон, который из-за сверх длинных рогов задавал пропорции роста всем остальным персонажам. Чёртовы комплексы по поводу размеров рогов! Пришлось отрезать парню часть ног и самый краешек рогов, чтобы добиться приемлемых масштабов, но увы его головы всёравно кажется слишком мелкой.
Масштаб фонов спасло то, что художник спросила у меня почему это самый высокий персонаж не занимает всё место по высоте. А действительно, почему? Это было обусловлено механикой Fungus: для отображения графики он использует Unity UI. Изображения персонажей имеют активированную опцию сохранения соотношения сторон. Но так, как ширина была меньше высоты, картинка сжималась. Увеличив ширину отведённую на персонажа, я добился желаемого результата.
Локации
Конечно, масштабы у меня не очень крупные: я обошёлся пятью локациями: тёмный лес, холл общежития, комнаты парней. Для некоего разнообразия были добавлены спрайты окна и дверей.
Комната оборотня показывает, что он вполне такой большой пёс, который любит своих родителей и не гнушается человечиной.
В обители вампира разумеется имеется гроб, запасец крови и плюшевая летучая мышь.
У демона всё завалено книгами и в комнате в целом царит рабочий беспорядок. Чтобы всё было не так скучно, у него есть свеча, которая генерирует дым со стилем магии телепортации.
Но конечно, дьявол кроется в деталях: будь то плюшевая летучая мышь, нога в миске или торшер в форме черепа… Кроме того, важно подобрать такие цвета, чтобы на локациях было хорошо видно всех персонажей, что могут там появиться.
Выбор названия
Разумеется, что с первой частью названия вопросов не было; это “Фейк Новелла”. А вот какое под-название? Оно должно было быть интригующим, использовать сленг и не отпугивать парней; ну и конечно, хоть немного охарактеризовать саму игру.
Я решил сконцентрироваться на месте действия: общежитие демонов. Первоначально я остановился на “Демоническое Общежитие”. Но это название было слишком длинным и недостаточно экспрессивным. В итоге, я остановился на “Фейк Новелла: Адская Общага”; ну и в переводе “Fake Novel: Infernal Dormitory”. Хотя я очень долго думал не сократить ли «Dormitory» до «Dorm», чтобы сделать его более сленговым, но решил остановится на полной форме.
Разработка описания
Описание должно содержать максимум ключевых слов (но так чтобы не забанили) и немного описания. Почему немного? Потому, что большинство юзеров (не путать с пользователям) описания не читают.
Давайте рассмотрим описание игры, которое я составил:
Красным я отметил памятку для сами знаете чего. Оранжевым пометил мем: какое описание без мема? Голубым цветом я отметил сюжет и особенности игры, а зелёным обозначены ключевые слова.
В общем, старайтесь впихнуть максимум функционала в минимум текста.
Локализация
Пожалуй, что это самая масштабная работа для меня в плане перевода это куча тупых шуточек, отсылок, да ещё и говорящие имена. Страшно подумать, что было бы, если я делал полноценную новеллу на многие тысячи слов…
В связи с тем, что Alconost всё ещё не принимает маффины, как основное средство оплаты, я попросил помочь с переводом на английский своего знакомого, а к услугам своей любимой фирмы прибегал лишь в сложных случаях вроде адаптации имён. Кто любит перевод имён? Достаточно посмотреть одно видео, чтобы понять масштаб проблемы…
Перевод на английский
Первым сложным моментом стал перевод фразы “И попутешествовала и пирожок сберегла!”. Нужно было передать тонкий деревенский юмор и не угодить в бан Google Play… Благодаря помощи зала при переводе на английский пирожок превратился в вишнёвый, но не смотря на столь невинное решение я удалил этот момент из финальной версии.
Немало вариантов было предложено и для перевода имени “Азазаюшка” (Азазель + Азазаз + Заюшка). В английской локализации он превратился в “Lucipal”. (Люцифер + бро)
Кажется, что с переводом имени оборотня проблем не должно было возникнуть: выбери популярную кличку для собаки, да радуйся… Но например, какой “Дружок” из того, кто съедает человека? В итоге, нетолерантный “Дружок” стал активным “Шариком”, затем нейтральным “Бобиком” ну а в переводе превратился в “Spikey”.
Как же не упомянуть имя главной героини? В русском варианте оно является отсылкой к Елизавете Баварской. (императрица Австрии) Так-же можно заметить схожесть её имени с некоторыми физиологическими признаками. (Я как автор концепции заявляю это лишь странное совпадение) Кроме того, на Герцогиню Баварскую указывает название общежития “Possenhofen Castle”. (её родовой замок) В переводе же версии так и напрашивается Sissy, — сленговое описание психотипа героини!
Огромное количество крови выпил перевод обращения “Госпожа”. Дело в том, что в первоначальном варианте было две Госпожи: Госпожа Комендант (отсылка к dominatrix) и “Госпожа Сисси” — обращение Азазаюшки к ГГ. При переводе это приводило к неоднозначности. Статья на википедии гласила, что для сохранения сомнительной отсылки для перевода статуса Комендантши необходимо использовать термин “Mistress”. Но английский язык был не согласен…
Когда «госпожа» — это влиятельная гражданка или хозяйка дома/офиса/собачьей будки — это «miss» если не замужем, и «missis/mrs» если замужем (или была).
Когда «госпожа» — это чья-то хозяйка, это «mistress». Поэтому когда Азазаюшка обращается к ГГ он может называть её только «mistress». А вот комендантше подходят оба обращения. Метод исключения говорит, что комендант должна стать «miss», но тогда теряется отсылка. К сожалению, эту проблему так и не удалось решить… В английской версии остались две “mistress”. В русском же тексте ГГ стала “Хозяйкой”, хотя это слово и не совсем подходило по сюжету, но стало лучшем аналогом.
Впереди же ещё оставались отсылки к Гарри Поттеру, Зверополису, Гравити Фолз и даже Луи де Пон дю Лаку. В связи с тем, что переводчик был вырван из другого культурного контекста (Камю, Лавкрафт, Дэвид Боуи...) строки с таким контентом были снабжены небольшими пометками и ссылками на разнообразные Wiki. К счастью, csv схема Fungus по умолчанию имеет поле для заметок.
Фактоперерыв
Вы знаете как лают собаки по английски? Чтобы узнать правду, достаточно спросить Google!
Серьёзно, иногда простые запросы очень помогают выбрать фразы для перевода.
Перевод на испанский
Испанский это третий язык в интернете и заодно один из самых «дешёвых» среди неСНГшных. Но перевод на него я решил делать скорее потому, что у меня в «похожих» висит испанская визуальная новелла с десятью тысячами установок. Такой уж я импульсивный… Кстати, существует Испанский (Мексика) но мы ведём речь о Испанский (Испания).
При переводе на Испанский стоит помнить, что в языке используются своеобразные знаки препинания и нелатинские символы. Важно убедиться, что шрифт их поддерживает.
С подготовкой текстов тоже не всё так просто. Например, стоит указать контекст с использованием «Вы». Иначе, может получится неловко.
Так уж вышло, что я ужасно знаю английский (Это ни в коем случае, не вина моего любимого и древнейшего электротехнического университета в Европе) но уже год по работе мне приходится составлять задания для переводчиков. Лучшим подспорьем мне стала Википедия: очень удобно ссылаться на неё при наличии некоторых терминов. (Хотя и существует специальный Викисловарь)
К сожалению, Испанская Википедия меньше Английской. Некоторые слова мне пришлось искать по более известному контексту. Например, слово «План» имеет статью — описание на Английском. На Испанский нужное мне значение не переведено. Зато, есть страница о D&D на которой указано дополнение «Planescape» материал о котором содержит нужный мне термин: «planos de existencia».
Английский и Испанский очень похожие языки. Но они похожи так-же как и Русский с Чешским. Например, при переводе на английский язык для «Общежития» было выбрано слово «Dormitory». В Испанском имеется его аналог, который даже предложит Google Translate — «Dormitorio». Но на самом деле, испанское слово будет обозначать «спальню». В таких случаях, достаточно просто ввести слово в Google.Картинки и изучать результат.
Для меня всегда Че Гевара был «комендантэ», а «комендант» обозначал сугубо хранителей общежития. Только при работе с Испанским узнал, что слова «комендантэ» не существует! Жестокий мир.
Очень большая проблема это то, что некоторые отсылки при красивом переводе будут теряться. Например фразу «Я не могу оценить этот артефакт», логично перевести, как «Я не могу понять, что делает этот артефакт». На взгляд переводчика, всё ОК, но теряется отсылка к заклинанию "Оценка" из D&D.
Я уже не один раз написал, как важно указывать любые шутки и отсылки. Даже самые очевидные на ваш взгляд… Например, я забыл указать контекст для слова «булки» во фразе с «булками шляться». Так, как героиня ходила с корзиной пирожков, было выбрано слово «empanadas» хотя на мой вкус больше бы подошло слово «bollos». (Не смотрите, что оно обозначает; просто поверьте мне на слово)
Если честно, я очень переживал за Испанскую версию. Сначала очень долго искал переводчика в тематических сообществах, но все попытки были тщетными, а потом сдался и обратился в обычную группу переводчиков. Хотя Евгения и не была знакома с некоторыми отсылками, она действительно хорошо постаралась, чтобы не упустить их, а я получил крутой опыт работы с Испанским. Хотя о результатах наших трудов судить конечно игрокам.
Фактоперерыв
Слово «комендант» можно перевести, как «пилот». Так что испанцы будут играть с госпожой пилотом…
Аудиосопровождение
Я абсолютно не разбираюсь в музыке. Поэтому, было бы логично попросить помощи у того, кто разбирается и даже делает собственные треки: у девушки, переводчика, сестры или соседей почтивтороков. Но какой смысл всегда поступать правильно?
К этому вопросу я подошёл с тем же планом, что и в прошлые разы; искал на opengameart музыку с эмоцией, которую хотел передать в тегах; подобрав несколько вариантов, советовался с теми, кто разбирался. Был человек, который предлагал свои услуги, как продюсера по музыке, но не сложилось.
Сложнее было со звуковыми эффектами. У меня не всегда грамотно поставить свою мысль на русском. что уж говорить о английском с которым у меня явные проблемы? Одно дело, когда ищешь “magic teleport”, а другое, когда “male groan”. Чего только не заливают на freesound… Брр…
Разработка иконки
Из глубин сессии мною был призван автор предыдущий иконки! В этот раз она работала не просто по словесному описанию, но референсу (составленному мной) с подробными комментариями.
О это было нечто! За несколько часов мы совместными усилиями сделали иконку моей мечты… Конечно, хватало промежуточных скетчей, но в этот раз их было меньше.
Довольно интересный опыт: я слушал лекцию о поступлении в магистратуру и одновременно пытался понять, как нужно исправить линию груди. (так и не понял) Можно заметить, что персонажи не очень синхронизированы между собой и с окружением в плане освещения и теней, но эта резкость лишь притягивала взгляд на демо-страницах.
Иконка была пущена в продакшн без изменений в таком диссонирующем виде.
Продвижение
В этот раз я уже имею базу пабликов, которые опубликовали информацию о предыдущей игры. Теперь, они будут первыми в очереди на публикацию «анонсов». Кроме этого, я создам темы в сообществах посвящённых именно визуальным новеллам, а не ограничусь ВК и GameDev сайтами.
Взаимодействие с пользователями
Страница в Google Play это конечно хорошо, но мне хотелось чуть большего взаимодействия с игроками. Поэтому, я решил завести Twitter для англоязычных игроков и страницу ВК для русскоязычных.
Чтобы управлять траффиком я решил сделать небольшой сайт. Или нечто похожее на сайт. (Ну мы же все знаем шутки про дизайн от технарей...) Конечно, базовые знания в вёрстке и разворачивании лэндингов у меня были (спасибо родному Элтеху) но это определённо не моя специализация. Тем не менее, за пару дней мне удалось собрать нечто работающее на старом добром WordPress. Оказывается, под CMS действительно легко делать темы, а все вопросы легко гуглились. Я решил обойтись одноколоночной страницей на Bootstrap; вёрстка не всегда ведёт себя идеально, но меня устраивает.
Пара дней, тройка плагинов (оптимизация JS, кэширование страниц, локализация) и простой сайт готов.
Чтобы сайт смотрелся веселее даже придумал для него небольшую легенду ну а для полного веселья добавил трансляцию новостей из социальных сетей. Наверное, я дольше выбирал движок и подбирал домен чем разрабатывал сам сайт… Думаю, что многим это знакомо.
Fungus
Не мог не написать немного о фреймворке… Он очень удобный в плане интерфейсов и API, но к сожалению, реализация хромает. Window с Flowchart убивает у меня всю оперативку за несколько часов работы; ускоренное перемещение персонажей работает неадекватно (с рывками); обычное перемещение работает через альфу…
Этот проект заставил меня задуматься о разработке собственного велосипеда или кастомизации «Грибка» под мои нужды на более сложном уровне чем разработка кастомных команд.
[CommandInfo("Social", "Report Achievement", "Full open Achievement")]
public class ReportAchievement : Command
{
public string Achievement_ID;
public override void OnEnter()
{
if (Achievement_ID != null) {
OpenAchievement();
}
Continue();
}
public void OpenAchievement()
{
AchievementsController ac = AchievementsController.GetInstance();
ac.AddAchievement(Achievement_ID);
}
}
Постскриптум
Ну вот и закончилась очередная моя статья. Я повеселился, выпустив игру и расслабился, написав этот материал. Надеюсь, что мне удалось показать, что разработка любой игры стоит больших трудов.
Впереди меня ждут ответы на неадекватные отзывы, расчёт убытков… Но самое главное, я смогу лучше понять результат популярности (выше среднего) прошлой новеллы. Я не уверен, что стало основным источником траффика “визуальная новелла на русском” или “симулятор девушек”…
Спасибо, что уделили мне своё время. Буду рад ответить на любые ваши комментарии. Надеюсь, что моя публикация никого не оскорбила присутствием несколько сомнительного юмора. Тем более, я боюсь, что потерял свой стиль в сравнении с прошлым материалом и в некотором смысле «исписался».
P.S. Всех выпускников с дипломами и с аттестатами!
P.P.S. Представляете, в этот раз игра прошла в маркет с первого раза!
Автор: BIanF