Разработка мобильной инди-игры и другие события из жизни

Всех приветствую. Недавно я завершил разработку мобильной инди-игры на Java (нет, это не 3 в ряд, а довольно не типичный для мобильных платформ продукт), которую мы начинали делать компанией друзей в 2020 году и ставили срок на разработку - 3 месяца. А в итоге я завершил свою часть лишь пару недель назад.

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

НАЧАЛО ПУТИ

О том, что я хочу связать свою жизнь с геймдевом, я понял еще в 15 лет, когда прочитал, кажется, в Стране Игр сборник интервью с персонами индустрии. Особенно на меня тогда произвело впечатление интервью с Уиллом Райтом о его творческом пути. Там было много всего: о том как пришла идея симса, про школу, про изучение технических наук, но больше всего мне запомнился эпизод, когда он участвовал в битве роботов и, проявив неординарность мышления, собрал робота, который опутывал девайсы соперников клейкой лентой. И после прочтения того материала я четко для себя решил, что когда повзрослею - стану геймдизайнером.

Если забежать чуть-чуть вперед, то основным костяком в разработке проекта, о котором в этой статье идет речь, были 4 человека. Я, Миха, Мария Безрукова и Макс. Так вот с Максом меня познакомил мой школьный друг Денис. И позднее школьное/раннее универское время я, Макс, Миха и Дэн проводили за совместной игрой в All Point Bulletin, где мы с Максом близко задружились и начали думать о будущих совместных проектах.

В универе я учился дистанционно на IT-специальности. К 4 курсу и выходу на ВКР я уже понимал, что прикладных технических знаний, необходимых для достижения моей мечты стать геймдизайнером, я не получаю. И на том моменте совпало 2 фактора: 1) МТИ, ВУЗ в котором я учился, потерял аккредитацию и переформировывался в МосТех, предлагая временно сдать экзамены в Синергии, потратив как минимум год; 2) я понял, что при трудоустройстве и реализации в геймдеве, куда более важны твои умения и портфолио, чем сомнительного вида бумажка.

После принятия решения оставить мое высшее образование неоконченным, мы с Максом решили вместе стартануть в геймдеве и стали выбирать системы для обучения. Под Unreal Engine тогда еще не было внятных курсов, да и сразу начинать работу над большим проектом на перспективу было бы опрометчиво с финансовой точки зрения. Поэтому, немного повникав в рынок, мы решили начать с андроид разработки.

В качестве языка для изучения была выбрана Java по нескольким факторам. Во-первых: java объектно-ориентированный язык, зная синтаксис которого можно относительно безболезненно перейти потом на плюсы и блюпринты; во-вторых: как раз-таки Java - это до сих пор основной адекватный мультиплатформенный язык для андроид-девелопмента; ну и в третьих, если не пойдет с геймдевом, то можно уйти в Enterprise Edition и делать клиент-серверку/бэк.

Перебрав несколько курсов, мы с Максом остановились на комбе из до сих пор актуального бесплатного Интуита и Javarush. Тогда курс джва-раш был еще из 30 уровней и стоил 15 тыщ рублей, которые мне задонатила мама. И, гайз, какое же это было топовое вложение по уровню наполненности знаниями в сравнении с 4 годами уника. Кстати, кто ищет джампинг поинт в джаве, даже сейчас рекомендую Javarush, не смотря на возросшую стоимость курса. Ценность знаний и качество преподаваемой информации несравнимо выше, чем в местах, где рисуют пончики и играют в морской бой.

ПЕРВЫЕ ШАГИ В РАЗРАБОТКЕ

На момент 2017 года среди детской аудитории на Play Market были популярны тесты а-ля "Какой ты песик?/Какой ты котик?". Плюсом для создания такого рода приложения была еще и простота визуализации. Андроид Студио позволяет собирать простые visual-UI во встроенном конструкторе, ну и сам java-код под логику теста - это хорошая проверка сил джуна.

Первым нашим с Максом приложением стал забавный тест под названием "Какой ты гусь?!". Миха нарисовал нам иконки, картинки с изображениями гусей, Максон закодил тестовую логику, а я сделал Layout-развертки под разные размеры экранов. К сожалению, скрины оригинального "гуся" с общего студийного аккаунта у меня не сохранились, но есть пара с обновленной версии уже с моей личной 11th Studio, где арты помогала рисовать в том числе и Мария Безрукова.

Уже не очень мы все тут веселые, но работягу нарисовала Маша<br />
Уже не очень мы все тут веселые, но работягу нарисовала Маша

Ну, и кто хочет ознакомиться с классикой, можете потыкать. У гусей есть описания.

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

В 2017 году я познакомился с Марией Безруковой. Она играла на пианино и стримила это на Твиче. Кроме того она исполняла разные песни, в том числе и собственного сочинения. Этим же она и занимается до сих пор.

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

Раз Маша - музыкальный стример, то и механики в боте были тоже по тематике. Зрители могли вызывать друг друга на караоке баттл, успех которого зависел от скиллов "персонажа". Скиллы можно было прокачивать, получая и используя предметы, дропающиеся за время просмотра Машиного стрима. Причем предметы были песнями на диске, а чтобы прослушать песню, нужен был в инвентаре плеер. Да-да, не удивляйтесь 2018-2019 год твич, а не эти ваши баллы. Хоть бд по первости и глючила, и кто-то что-то терял, со временем бот приводился в порядок.

SF-36: Индекс здоровья - приложение, где и Миха, и Маша делали дизайн и задники. У него до сих пор 5 звезд. Ну и сам одноименный американский тест sf-36 я перевел на русский первым в рунете. Сейчас его, к сожалению, не скачать на андроид выше десятке вроде бы или типа того, потому что для создания анимаций итоговых графиков была подключена устаревшая библиотека на Kotlin, которой сейчас нет ни в каком виде в Maven Central, чтобы сделать апдейт, но люди до сих пор пользуются приложением, что несомненно греет мне душу.

Первые опыты с анимациями. Эмодзи-слайдеры и анимированные графики.<br />
Первые опыты с анимациями. Эмодзи-слайдеры и анимированные графики.

В 2019 году я решил сильнее углубиться в изучение параллакса, взаимодействия спрайтов, синхронизации 2D-объектов и хитбоксов. В интернете я нашел довольно подробный курс для создания основы движка двумерной игры. При создании этого мини-движка я обучаюсь таймингам смены кадров анимации, созданию сцен и переходов между ними, а так же базовым менеджментом потоков движка. В моем движке было реализовано 2 основных потока с разницей в 5мс. Первый - update, где просчитывается вся игровая логика, а второй -drawing, в котором происходят изменения отображения визуализации, согласно просчитанным и произошедшим на экране событиям. Понимание работы этой системы является очень важным аспектом в работе программиста, в том или виде она реализована и в Cry-, и в Unreal Engine.

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

На 2 версии движка Klest Engine работает игра Keeper's Curse: the Prologue<br />
На 2 версии движка Klest Engine работает игра Keeper's Curse: the Prologue

ZEK 2020

В том же 2019 году на ютубе становятся популярны каналы ауф-тематики. На всякий случай: не поддерживаю, не романтизирую, не призываю, не пропагандирую и осуждаю всю тематику приложения "Тест на Зека 2020". Приложение, описанное ниже является вымышленной фикцией. Тоже самое есть в дисклеймере. Ну и почитывая книжку про структуры и алгоритмы, я ставил на фон каналы Мишевый Плюшка и Станислав Андреевич, где авторы рассказывали тюремные истории. Оба канала пропагандируют возвращение к честному образу жизни и не заблокированы на территории РФ. А Стас вообще еще и ретрогейминг стримит.

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

И после этого, мы с Машей-сестрой стали чаще общаться, чем она старше становилась. В 2019 году Маша уже знала про приложения, которые я разрабатываю, тоже поддерживала и как-то увидела мои рекомендации на ютубе и сказала: "А чо тебе не сделать свой тест на зека? Мы в школе проходили))". Да-да, не удивляйтесь, в ВСЖ 10-летние девочки проходят в школе тест на зека. И я подумал: а почему бы мне реально не сделать, основываясь на рассказах, которые я слушал, текстовое приключение с нелинейными моментами, а назвать приложение "Тест на Зека", чтобы поиметь больше скачиваний. Я тогда рассказал об этом Михе и Миха сказал, что азаза, кому это будет интересно в нашем хай тек Ту Кей Твенти.

Почему я много времени уделяю рассказу про это приложение? Потому что это ценный жизненный урок, дорогие малята. Если гореть тем, что делаешь и делать то, что нравится, то это принесет свои плоды. Я написал авторам упомяных каналов, не против ли они, если я использую часть их историй для своего приложения, а взамен оставлю на них ссылки. Получив добро, я сел на 2 недели писать и редачить текст, который по итогу перерос в 3 сюжетных приключения на 3 разных зонах: black, red и отдельной клоунской с шутками, прибаутками и загадками, взятыми из того самого "клюквенного" теста.

Насколько у меня получилось интересно? Много ли контента я украл? Нууу, скачайте и посудите сами, ребята. Как минимум, попробуйте ввести в имени персонажа слово "петух", в балдурс гейте такого нет))

Игра взлетела настолько, что я даже сам не ожидал. 10к скачек за месяц и под 90к сейчас. Буду кстати безмерно благодарен, если поднажмем, и добьем психологический барьер, чтобы гугл нам нарисовал красивую цифру в виде >100к загрузок. Осталось совсем немного. Ну и любым отзывам тоже буду рад.

Family Curse: the Prologue

В 2020 году, Миха уже давно занимался 3D-дизайном и тоже раздумывал о том, чтобы поучаствовать в создании инди-игры. А делать игру в компании друзей - это, как правило не душно, не напряжно и можно реализовывать разные творческие задумки.

На начальном этапе Я, Миха и Макс определились с концепцией, которая будет интересна всем, распределить обязанности и за 2-3 месяца наметили выкатить технодемку, которую можно будет показать в качестве демонстрации возможностей студии и собрать денег на реализацию полного видения истории.

Чуть-чуть поразмышляв над концептом игры, мы решили сделать приключение с Лафкрафтианскими вайбами, готической стилистикой, и слегка переосмысленной Шумерской мифологией, где героиня будет молодой девушкой, место действия - особняком 20 века, а сам геймплей в демо-версии подогнанным под мобильные особенности point and click квестом с несколькими головоломками в наличии. Немного сумбурно, но нормально, чтобы показать, как студия может работать с разными тех. задачами и объединять концепции в единое решение. Кроме того, мы сразу пришли к виденью, что в нашем проекте обязательно должна быть озвучка, которая будет некой фишкой на фоне аналогов.

Я, так как уже имел опыт работы с двумерным движком после выпуска Межзвездной Кисы, должен был программировать ядро. А Макс, тоже имевший опыт в Java - помогать мне с логикой.

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

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

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

Разработка мобильной инди-игры и другие события из жизни

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

Весь дом существует в виде реальной 3D-сцены, которую при желании можно импортировать в Анрил и походить внутри. То, что вы видите в игре - это рендер по сечению. <br />
Весь дом существует в виде реальной 3D-сцены, которую при желании можно импортировать в Анрил и походить внутри. То, что вы видите в игре - это рендер по сечению.

Марию Безрукову мы также подключили на самом раннем этапе разработки. Она озвучила главную героиню, уже получившую имя Эмили. А также с первого раза попала в настроение игры, написав 3 атмосферных трека, и стилизовав музыку из своей авторской песни "НЛО" под старинную граммофонную пластинку. Думаю, Маша не обидится, если я выложу главную музыкальную тему игры здесь, а остальные она опубликует сама, если захочет.

Также Маша нашла нам часть актеров на озвучку других персонажей, среди которых есть тот самый Стас Саксон с Донатион Алертс (брат Оляши).

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

Разработка мобильной инди-игры и другие события из жизни

Ну а дальше начались те самые "другие события из жизни".

ГОДЫ С 2020 ПО 2024

Закончив свою часть, Мария Безрукова покинула проект. А мы с Максоном опять конфликтанули по поводу концовки, из-за чего СПОЙЛЕР:

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

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

Кошка: Киса Говниса<br />
Кошка: Киса Говниса

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

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

Получилось так, что я родился в далеком 1993 году. Мать учительница, у отца редкое генетическое заболевание, передающееся по наследству "несовершенный остеогенез" или болезнь стеклянных костей, воздействующая преимущественно на ноги. У меня было более 50 операций, а переломов и того больше - так что с 6 лет я не хожу. А ту самую статью про Уилла Райта я прочитал, когда лежал в Кургане в Илизаровской Клинике.

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

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

До начала ковида 2020 года мы с т.н. батей уже нормально общались. Он ночевал в моей хате (живу один с 2018 года), я помогал ему с его документами и другими моментами.

После первой половины 2020 года мы с Михой остались вдвоем на проекте. А затем и в наш маленький городок пришел коронавирус. И вышло так, что моя мама заболела очень сильно уханьским штаммом. Лежала долго в больнице, самая лучшая медицина мира сожгла ей желудок и наспавнила камней в желчный пузырь неправильно-подорбранными В КОВИД АНТИБИОТИКАМИ, из-за чего пришлось ей удалять желчный. Ну и вышло так, что я помогал маме, готовил и передавал ей по диете еду из пароварки, затем заболела кошка, ее надо было лечить, поить со шприца и возить на капельницу. И когда сил уже не было я позвонил бате и сказал: "бать, приедь или пришли денег, сил нет, не могу". Т.н. отец был в запое и сказал мне, что денег нет, а машина в холод не заведется. На что был закономерно раз@бан по фактам его действий на протяжении жизни и послан. В 2022, он сделал то, что делал всегда в сложных ситуациях лучше всего - нашел себе очередную скам-бабу и начал донатить в ее детей. До сих пор не оставляет попытки выйти на контакт, но поезд уехал, увы. Мне было тогда так тяжело, так одиноко, но я выжил.

В начале 2021 года я попробовал прийти в себя и сказал следующее: "Миха, я буду стараться доделать фэмили керс"

Где-то на днях после этого мне пишет Гриша (имя изменено) один из парней нашей с Михой компании из детства. Он на тот момент начал работать в одной из местных тестерских студиек. Гриша меня спрашивает о том, не нужна ли мне помощь с керсом. Я говорю, что нет, спасибо. Гриша не сдается и пишет мне настойчевей: а давай мы тебе поможем с кодом и ИГРУ ИЗДАДИМ. Тут я удивился в негативном плане, но вида не подал, сказав: "Нет, спасибо".

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

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

Позволю себе еще отступление: когда Гриша еще не был тестером, а просто челом, то у него была девочка. И как-то раз Гриши и девочка захотели себе ГТА5. Гриши попросил меня: "Васек, закинь нам на гта5." Для меня никогда проблемой не было. Я говорю: "Гриш, без проблем, давай завтра только, ок? У меня сейчас только наличные." На что он мне говорит: "Ну мы бы сегодня хотели поиграть." И вот темно, холодно, зима, рыхлый снег, но так как это же мой "друган". Я поехал на электрической коляске тогда через треть микрорайона в стиле SnowRunner закидывать на терминал Грише и девочке без отдачи. К слову, о том, почему я могу каждое лето гулять на местном пляже - вот у меня есть ortonica pulse 210, купленная на личные средства, чтобы играть весну-осень в MudRunner и преодолевать сначала висячий под углом вбок и вперед мост к озеру, а потом самые лучшие в мире дороге, а у многих парней и девчонок нет такой возможности. Справедливо? Не очень.

Теперь мы здесь. Гриша в том разговоре даже не спросил, как у меня дела. Но зато сказал, что они не знали всего бэка (хотя на самом деле знали) и пообещал, что уже с новой на тот момент девочкой Леной1 (имя изменено) они мне сделают рисунки для зека, ведь нейросеток на тот момент не было. Ну ладно, прошло уже 3 года. Может, когда-нибудь однажды.

С сестрой Машей мы общались к концу 2021 года почти каждый день. Маше было очень тяжело. Из того, что я сейчас могу сказать - Маше ставили очень высокие планки по учебе при средних способностях. Успехи воспринимались, как должное и не поощрались должным образом. А фейлы, причем даже тривиальные двойки вызывали очень негативный фидбек. Маше никогда не дарили того, что она самом деле хотела ни на НГ, ни на ДР. Мелочи вроде скетчбука только.

Маша часто говорила о плохом и рассказывала вещи, которые могла сказать только мне. Я старался ее мотивировать и настраивать на позитивное будущее. Не грузил лишним, так в общих чертах. Она же хоть и умная, но маленькая. Говорил, вот подрастешь, сделаем с тобой общую игру. И на новый год 2022 я подарил ей смартфон. Я не мог быть с ней постоянно рядом и отвлекать от токсичной среды, но вот телефон, сяоми, но нормальный, она могла наконец-то играть в Геншин, как хотела.

Весной 2022 года я говорю Михе следующее, что я навсегда запомнил. "Все, Миха, я укрепился, больше я уже не впаду в такую депрессию. Меня уже ничего так не сможет задизморалить, только смерть моего ребенка, наверное." Лол, какие же тупые слова. Потом происходит пи@дец. Есть такие моменты, что вот оно произошло, а тебе с этим жить. Маша последние недели звала меня в Геншин, а я же Керс делаю. Говорю: "блин, малая, давай попозже. Поиграй пока с подружкой, да и Геншин я не очень люблю, если честно." Обращаясь в ретроспективу, я уже не на столько уверен, что подружка была настоящая.

Машу убило ВСЖ и pills. Жила она, к слову, в другом городе. Привезти бы меня туда из родни, на такой габаритной коляске, конечно, никто не взялся. Звоню Михе, говорю, что надо ехать. Звоню тому мужчине -Владимиру, продавцу сосисонов с пляжа и объясняю ситуацию. Едем в город Исток Свердловской области.

За время посещения Истока помимо вида мертвой девочки в открытом гробу я получил 3 сильных впечатления: 1) Исток настолько передает дух ВСЖ, насколько это возможно. Маленькие нищие домики, школа с разбитыми стеклами, граффити внизу и огромные монументальные таунхаусы, огороженные двухъярусными заборами вверху на горе; 2) Мы тогда не так еще близко с Владимиром дружили, но он без выставления условий и финансового запроса увез нас с Михой и мамой в другой город, а отец родной меня чуть ранее кинул в около-критической ситуации. Тогда я понял, что обязан Владимиру теперь до конца. 3) Когда все поехали на кладбище, мы с Михой пошли гулять и встретили кошку, которая прибилась к тому месту, где мы отдыхали в парковой зоне и она была очень ласковая. Шла на руки к нам, громко мурлыкала. Потом я видел ее или похожую в иных местах дважды.

Разработка мобильной инди-игры и другие события из жизни

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

Сейчас от Маши у меня остались только 2 рисунка, которые я берегу. Это мои сокровища.

Девочка с фиолетовыми волосами<br />
Девочка с фиолетовыми волосами
Кот морковного цвета<br />
Кот морковного цвета

Я просил ее т.н. родителей отдать мне ее рисунки. Не отдали. Ладно. Хоть в рамках 1.5 голосовух исполнил ее мечту. Мечта - это очень важно и они должны исполняться.

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

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

Keepers's Curse: the Prologue

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

Зато желтое платье в первой ревизии игры намекает на беды с башкой у героини.
Зато желтое платье в первой ревизии игры намекает на беды с башкой у героини.

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

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

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

Весь дом расположен на одном общем рендере house.png, а программно, каждая комната - это отдельный двумерный массив RoomArray с объектами типа Room.

Активная комната выбирается из массива после полного прохождения свайпа. В каждой комнате есть свои активные объекты, свои головоломки или места, завязанные на применение предметов из инвентаря. Чтобы снизить общую нагрузку на процессор, функции, которые выполняются или проверяются в общем большом потоке update не висят в Треде все подряд, а берутся в исполнение только те, которые привязаны к конкретной комнате. А вот снизить нагрузку на оперативку не получилось, потому что Java не любит широкоформатные изображение. 600 MB оперативки, которое приложение хавает - не из-за кривой логики, а из-за хайрезных Bitmap-ов и методов их обработки Рендером джавы, постараюсь потом снизить потребление хотя бы до 400 мегабайт.

В структуре каждой головоломки есть объект и его менеджер, чтобы не собирать логику в кашу. Ставьте лойс кстати, кто любит называть один файл по-английски, а следующий транслитом у себя в проекте.<br />
В структуре каждой головоломки есть объект и его менеджер, чтобы не собирать логику в кашу. Ставьте лойс кстати, кто любит называть один файл по-английски, а следующий транслитом у себя в проекте.
Миха поделился тоже неймингом своей структуры проекта<br />
Миха поделился тоже неймингом своей структуры проекта

Программируя мини-игры, я хотел добавить хотя бы небольшой элемент реиграбельности. А также сделать сами головоломки настолько user-friendly, насколько возможно.

И если пятнашки зарандомайзить довольно легко. Да-да, shuffle лежит в открытом доступе на хабре. То для удобства пользователя я реализовал фичу, которая позволяет одновременно сдвигать не только по одной, но и стак из двух или трех квадратиков. Для этого мне удачно послужила такая внутренняя функция Java, как перегрузка методов. Практического профита, наверное, в этом не так много, но есть какое-то эстетическое наслаждение, когда вместе трех функций GoLeft1, GoLeft2, GoLeft3 у тебя 3 метода с именем GoLeft.

Ассеты головоломок, каждый элемент имеет свои свойства и координаты X, Y на предназначенном холсте в коде<br />
Ассеты головоломок, каждый элемент имеет свои свойства и координаты X, Y на предназначенном холсте в коде

Еще один, полузабавный и не душный момент связан с мини-игрой "Взлом Замка" и локализацией. Дело в том, что я решил зарандомайзить 3 скорости бегунков дробными переменными 1.1, 1.2 и 1.3. Тестируя мини-игру на телефонах с языком по умолчанию, отличным от русского и английского, я столкнулся с рандомными вылетами на этой головоломке. Все дело оказалось в том, что в некоторых странах рандом генерирует дробное число не с точкой, а запятой, что компилятор Java не хавает. Решение было таким:

DecimalFormatSymbols типа Locale.US приводит любую генерацию дробного числа под правильно интерпретируемый стандарт дробного числа с точкой.<br />
DecimalFormatSymbols типа Locale.US приводит любую генерацию дробного числа под правильно интерпретируемый стандарт дробного числа с точкой.

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

А еще все предметы для инвентаря - это тоже рендер изначальных 3D-моделей. Никаких нейросеток тогда не было<br />
А еще все предметы для инвентаря - это тоже рендер изначальных 3D-моделей. Никаких нейросеток тогда не было

Если будет запрос, я вообще могу выложить весь код и каждый момент подробнее рассказывать в своей статье. LockPick Mini-Game вообще получился на редкость удачным (а это значит, что код короткий и эффективный), так что можете потом брать полные его исходники и пользоваться в своем мобильном Обливионе.

В целом, мне есть, чем гордиться по итогам сборки данного проекта. Написан он на чистой джаве и даже метод сохранения предметов инвентаря реализован без использования Gson/Json.

Но вообще, ребятки. Поймите тоже одну вещь, можно шутить сколько угодно про заимствования кода из открытых источников и т.д., но 80% его реально писаны с нуля и многое я открывал для себя и реализовывал в первый раз и не в самом хорошем ментально-моральном состоянии. Поэтому, кто умненький, порешайте пятнашки в ручную, не скипайте по кнопке. Один человек сказал, что у него был вылет. Все со временем попатчим. А так же в игре работает авто-сохранение после решения каждой головоломки или активации сюжетного предмета, СПОЙЛЕР:

последний сейв срабатывает на чердаке после появления маски на полу.

С SharedPrefs я тоже раньше не работал, поэтому кого не напрягает, посейвскамьте плз.

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

или на почту студии theeleventhstudio@gmail.com

ВЫВОДЫ

Какие мы можем сделать выводы по итогам статьи? Ну во-первых, я собрал бинго дтфера, прогревающего на донаты. Тут и инвалид, и тяночка покинула проект, и проблемные родители, и кто-то умер, и даже больная кошка: если бы я хотел я бы даже скрины из ветки с чеками и процедурами кинул, но кто-то возьмет да утащит их на двач, а мне потом с ветеринаром объясняться, если всплывет где-то - нафиг оно мне надо.

Второй вывод следует из первого: все, что я притащил сюда имеет большое отличие. Это творческая основа, мечты и их реализация. Я специально писал больше личную историю, упуская избыточные технические подробности, потому что 11th Studio и Keeper's Curse - это история больше про людей и про мечты. Я вот смотрел всякие посты последние год-два. И блин, это реально круто, когда шейхи донатят инвалидам. Но с одним допущением.

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

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

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

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

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

Далее. Воспринимайте игру, как технодемку, как она и задумывалась. Я все ее минусы прекрасно понимаю. Шаблонные диалоги с тавтологиями, не все из которых писал я, но я их качество вовремя не проконтролировал. Тривиальные головоломки. Кривая концовка без подводки. НО СПОЙЛЕР:

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

Если хотите просто подонатить инвалиду - не донатьте.

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

МИСТИКА

11th Studio и мистика - это почти как Оззи Осборн и мистика. Интересный момент в этой истории был в том, что у Марии Безруковой день рождения 23 декабря. У Антохи 23, но не декабря. У сестры 23 марта. Какие мы можем из этого сделать выводы? Остается на совести читателя. Но можем, как минимум, разделить 2 на 3.

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

СЛОВА БЛАГОДАРНОСТИ

Спасибо Михе за крутые локации, персонажей, весь-весь дизайн, а так же за правки на ребилде проекта в 2024 году. Кроме того за часть сайнд-дизайна и сведение уровней звука в репликах. Ну и самое главное спасибо за то, что не дал "друзьям" угнать проект и моральную поддержку в эти 4 адских года. Надеюсь, что будет все-таки получше.

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

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

Спасибо Илье Тураеву за озвучку рассказчика. Раньше Илья озвучивал аудиокниги и стримил. Очень жаль, что я про@бал сроки и не дал на него ссылки, когда было актуально. Пиз@ец стыдно.

Спасибо Стасу Саксону за терпение и очень харизматичную озвучку.

Жанна Шеянова раньше стримила на твиче. Сейчас, насколько знаю, способа с ней связаться нет. Очень стыдно за пр@еб сроков и за то, что не дал ссылки пока было актуально, но спасибо за Луизу. Надеюсь когда-нибудь с тобой поговорить.

Отдельно спасибо за Нору Олесе и Алисе. Девчонки писали на телефон, поэтому не воняйте сильно за разницу в качестве между ними и профессиональными стримерами со студийными микрофонами.

Спасибо Тимуру Ямалдинову за озвучку персонажа в финале :)

Спасибо Dinho Carldinho за озвучку персонажа в финале :) Очень классная харизматичная девчонка, пишет музыку, ведет паблики про реслинг и не только. Все ссылки у нее на странице. Прости тоже, что обещал поработать вместе, но так вышло. Такие были 4 года, it is what it is, не добавить, не убавить. Да и в целом, мне тяжело сейчас дается общение с людьми

САМА ИГРА

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

Ну а пока гугл обрабатыват патч первого дня, вот вам ссылка на саму игру Keepers's Curse: the Prologue. Буду рад оценке и развернутым комментариям. Ваши звезды очень помогают мобильным разработчикам. Ставьте столько, сколько игра по Вашему мнению заслуживает.

Для поддержки:

ТИНЬКОФФ: 5536 9139 2085 6131 Василий

АЛЬФА: 2200 1523 7817 0636 Василий

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

ПРИ ПЕРЕВОДЕ НА КАРТУ ПИШИТЕ ПОМЕТКУ "ЭМИЛИ", ЧТОБЫ Я НЕ СКРЫСИЛ СЕБЕ ВСЕ БАБКИ, А ДЕЛИЛ НА ВСЕХ

11th Studio will return

Из творческих планов дальше: закончить курс от Epic Games по Анрилу. Может быть сделать картинки для существующего зека при помощи нейросетей, а может выпустить версию "Тест на Зека 2025". Ну и потихоньку определяться с анриловым проектом, пушто Java со своими мемори ликами порядком меня подзадолбала, да и своего будущего за бекендом я не вижу, потому что не так много у меня в жизни сейчас есть за пределами мечты. Буду лучше не оптимизированным графоном вас душить, чем не оптимизированным расходом памяти.

Пора мне тоже отдохнуть, пройти киберпанк 2077, перестать жить с синдромом отложенной жизни. Ну и Миха как раз закончил финальный дизайн в рамках совместной деятельности на данный момент, которым все можно подытожить.

Жив буду, сделаю эту татуировку на предплечье.

Любимый писатель и девочка Венди у него за спиной. Пока я жив, я тебя помню.<br />
Любимый писатель и девочка Венди у него за спиной. Пока я жив, я тебя помню.
33
11
1 комментарий

всё оч внимательно прочитал был КАПЕЦ интересно автору респект

1
Ответить