История о том, как я более 400 дней ежедневно разрабатывал свою игру
На самом деле уже 444 дней.
Привет! Меня зовут Сережа, и я разрабатываю свою игру HoBeey про селекцию пчел, а занимаюсь я ей в свободное от основной работы время. Основным источником вдохновения для меня является модификация Forestry для Minecraft, а также дополнения ExtraBees и Gendustry, которые расширяли пчелиную составляющую оригинала.
Мой рассказ получился довольно объемным, поэтому оглавление:
С чего все начиналось
Начну свою историю немного издалека и расскажу, как я пришел к идее сделать игру. Начать можно с того, что в бородатые годы я играл на разных сборках кубача, и сложилось так, что мне очень полюбилась часть, где можно было отстроить свою пасеку и заниматься селекцией разных видов пчел. И позже у меня всплывали мысли из разряда: может быть, сделать мод для факторио, где добыча базовых ресурсов крутилась бы вокруг селекции пчел.
Где-то в 2020-м пришло время писать бакалаврский диплом, и я загорелся идеей: почему бы в качестве темы не выбрать создание игры? Нужно было только немного подогнать идею под академические требования, сказать, что тема диплома: "разработка мобильного приложения для селекции пчёл на основе стохастических процессов", и-и-и… готово! И так появилась моя первая попытка реализации. В целом это выглядело больше как прототип на Unity с попыткой адаптировать селекцию из Forestry под мобилки, но до полноценного релиза довести ее не получилось, так как меня дальше ждали новые приключения.
Прямо под конец бакалаврской работы в 2021 году я узнал об открытии магистерской программы по направлению “технологии разработки игр” в МФТИ, и я загорелся идеей попытаться поступить туда. Изначально мои долгосрочные планы с момента поступления в бакалавриат ЛЭТИ были таковы, что я хотел поступить в магистратуру ИТМО на направление, также связанное с разработкой игр. В итоге, я проходил везде, куда подался и решил флексить дальше на физтех, так как процесс вступительных там попил больше всего моей крови, а я тот еще любитель приключений! И при плотной загрузке уже к концу первого семестра нужно было подумать, а что такое хочется сделать в качестве диплома.
Я решил, что хочу продолжить заниматься своей игрой про селекцию пчел. Правда для мобилок делать игру у меня уже как-то не было энтузиазма, и я подумал, а почему бы и не сделать игру в VR. Как минимум звучит фаново. Правда на тот момент у меня даже не было VR шлема, но кого это останавливало? А еще есть такой отличный мем для механики игры с пчелками!
Ещё я тогда начал подкатывать к нашим преподавателям, чтобы прощупать почву, кто же согласится стать моим научником. В итоге, первая половина 2022 прошла по большей части под эгидой: “успеть по всем предметам в универе и для работы на полставки время выкроить, а также написать какой-никакой диздок для игры”. Также в ходе нескольких довольно жарких сессий обсуждений диплома со своим научником у нас шатались планы, что можно вообще успеть сделать и сделать это хорошо. За что ему большое спасибо, он подтолкнул меня делать больше своих игровых механик, а не опираться на механики из первоисточников.
С начала 3 семестра я уже входил в более активную фазу разработки и начал прототипировать основной игровой цикл. Я начал с простой подмены модельки кубов на модель пчелы.
На тот момент с анрилом у меня особого опыта взаимодействия почти не было. Поэтому я на себе сразу ощутил проблему вкатывания в процесс. Кроме того, VR вставлял мне больше палок в колеса, так как когда ты слабо знаком с движком, а еще и в VR что-то делаешь, то время на итерацию заметно увеличивается. И потом ты просто сидишь: одной рукой держишь шлем, а другой пытаешься подебажить свои спагетти из блюпринтов по какой-то тривиальной теме. Оглядываясь назад, было бы полезно иметь под рукавом сходу вариант плоской версии, где можно какие-то простые штуки в разы быстрее итерировать.
И где-то к концу года я уже прописал всю базовую генетику, которая даже на сегодняшний день особо не поменялась, хоть на нее и большие планы по развитию. Также был какой-никакой улей в котором можно было скрещивать пчел! Да на 99% реализация улья состояла из плейсхолдеров, но как стартовая точка это уже что-то. Также я ловил веселые баги, которые дебажил, удивляясь, что что-то в моих спагетти пошло не так.
Дальше начался 2023 год и финишная прямая семестра для моего диплома. Там был только я, диплом и работа на полставки. Причем дедлайны для дел по игре были ближе к началу мая, так как нужно было время еще и на написание текста самого диплома. К тому моменту у персонажа уже появился инвентарь, в который можно было складывать пчел. Также накинул партиклов при скрещивании пчел, добавил отслеживание прогресса в демо, режим строительства для ульев, замоделил сам улей и какую-то базовую полянку с деревьями из пака.
Между наливанием воды в диплом я успел снять нулевую серию девлога про игру и выложить к 20 мая. В этот день отмечается всемирный День пчел (и это стало мемной датой релиза игры).
Где-то за неделю перед защитой я решил, что у меня ещё есть немного времени, и сделал туториал на коленке. Поправив страшные баги, я решил залить демку на itch и sidequest для солидности. По случайности дата защиты диплома выпала ровно на день одного там восстания, и во время защиты мы сидели и думскролили мемы с новостями. В целом защита прошла на отлично и после этого я решил, что нужно отдохнуть от кранча и пожить, однако дальше я перешел на фуллтайм на работе.
Впоследствии работа над игрой совершалась небольшими наскоками. Только через полгода я добрался до фиксов всех основных косяков, которые были найдены друзьями во время тестов демки. И так как все происходило под Новый год, то я даже решил добавить пчелкам новогодние шапки :)
За 2024 год мои наскоки чаще всего выглядели так: уперся в какую-то фундаментальную проблему: разницу между мобильной версией и десктопом или генерацию иконок в рантайме и просто начинал гореть с анрила. Первые успехи пошли, когда осенью я засел за игру основательно и смог расследовать и победить часть проблем. А также у меня была мотивация обновить версию игры, чтобы показать друзьям на моем дне рождения свеженький билд игры и собрать еще фидбека. В целом по самому простому и полезному фидбеку я сразу и прошелся. Также уже и были записаны первые футажи для трейлера в формате: я в качестве игрока в VR и моя девушка в качестве оператора в режиме наблюдателя. В то время я уже задумался, что классно бы завести страничку в стиме. Но в тот момент еще и в реальной жизни навалилось всего.
Челлендж начинается!
И вот мы наконец-то приближаемся к основной теме всей статьи. К январю у меня начало что-то разгребаться в жизни. И 17 января 2025 года я создал канал в телеге, где решил делиться ежедневными изменениями по разработке игры. В целом меня просто забавлял концепт каналов, где ежедневно выпускали видосы в духе вышел ли силксонг сегодня или что кого-то не уволили сегодня. Поэтому я решил, а почему бы в таком формате не делиться прогрессом в разработке своей игры. Конечно, создание канала не перевернуло мою жизнь и я чаще писал сообщение: “сегодня я не занимался разработкой пчол”. Но первые подвижки пошли, и я начал делать то, что должен был сделать уже давно: плоский режим игры, где не нужен VR шлем, чтобы играть в игру. Наверно это одно из ключевых решений, которое позволило на регулярной основе заниматься игрой. Потому что для того, чтобы сесть и хотя бы немного позаниматься игрой, мне не нужно держать заряженный шлем, а также постоянно надевать и снимать его в процессе дебага и поиска, почему та или иная штука не работает, как я изначально задумал.
После нескольких перерывов в разработке у меня начала появляться насущная мысль, что хочется получать уже какой-то результат. В итоге, я втянулся и регулярно начал что-то делать. Потихоньку занимался оформлением странички в стиме, монтажом трейлера и подготавливал все нужные изображения. В итоге, 19 марта я опубликовал страничку игры в стиме. Трафик на страничку я попробовал привлекать через твиттер и за счет него и нескольких репостов в телеге поста из канала в первые дни удалось набрать первую сотню вишлистов. Увы историей успеха с получением кучи вишлистов в первые дни я точно поделиться не смогу. Дальше я сосредоточенно потихоньку занимался игрой, как-никак больше на маркетинг ставить ставку думаю стоит, когда уже есть хорошая играбельная демка в стиме.
В целом переносить на десктопный вариант игру было очень приятно, а также стало в разы проще вовлечься в разработку игры даже если вечером я довольно вареный после основной работы. Когда был создан такой вариант режима, у меня была цель сделать обновленную версию демки на itch, где будет десктопная версия - даже с рабочими сохранениями для игры.
Также во мне заиграл внутренний челлендж для себя, что я хорошо и регулярно двигаюсь вперед и соответственно почему бы не продолжить заниматься игрой ежедневно. Я поставил для себя планку количества подписчиков на канале, это было где-то 50-60, и я решил, что “ну на такое количество дней меня вполне хватит” (хе-хе). В целом мне даже удалось подгадать тайминги, а именно: к 20 мая, всемирному Дню пчел, я выпустил обновленную версию демки и девлог о том, как я разрабатывал игру на тот момент уже 100 дней.
Расширяем основной цикл игры
В целом где-то в тот момент я и задумался, что классно было бы написать эту статью, хех, и вот мы здесь, а также были идеи для записи шортсов, так как тема для продвижения игры казалась довольно хайповой. Но так как у меня руки всего 2, то на все дела меня не хватит, а еще на тот момент я почти месяц занимался всяким полишингом и мелкими улучшениями игрового процесса. Поэтому душа просила нового геймплея в игру, и я решил взяться за реализацию центрифуги, модельку которой уже больше полугода назад сделала моя девушка, за что ей большое спасибо.
До добавления центрифуги геймплей крутился вокруг того, что ульи с пчелами приносят эфемерный мед. А с центрифугами в ульях появляются рамки с сотами, которые содержат продукцию соответствующую пчеле. Но давайте по шагам, в начале я хотел, чтобы центрифуга могла заработать. Для VR версии я добавил возможность схватиться за ручку и прямо ее покрутить, чтобы разогнать центрифугу.
Намоделил рамку для ульев и немного подкорректировал размеры самого улья, чтобы все сходилось. И после этого уже можно добавлять в центрифугу эти рамки!
Для ульев добавил возможность вытащить крышку из верхней части, а внутри него добавить рамок. Рамки же заполняются пропорционально в зависимости от вида пчел. В идеале я хотел, чтобы и визуально это можно было увидеть, но к этому мы вернемся намного позже…
И вот небольшой новый цикл в геймплее образовался. Да, пока из этой итерации расширения геймплея вылезают предметы из рамок, которые никак не задействованы, но это будет решаться чуть позже.
Потом я загорелся мыслью, что хорошо бы для ПК версии сделать интерфейс инвентаря более дружелюбным к пользователю, а чего не хватало? Правильно drag and drop. В целом из-за специфики разных типов данных, таких как пчелы, рамки и предметы самих рамок я это хранил в разных структурах, поэтому чтобы в итоге все работало как надо, получилась хорошая такая спагеттина!
Следующий шаг расширения цикла геймплея у меня был в виде добавления пчелиного отеля. В него игрок помещает пчел для восстановления конкретного вида пчел в природе. А также реализовал добавление диких ульев, которые появляются на участке в ходе восстановления различных видов. Таким образом, у игрока всегда будет доступ к пчелам определенного вида.
Далее глобально я начал пытаться решить проблему мотивации получения предметов из ульев. И для этого будет использоваться доска с заданиями, которая в обмен на одни ресурсы может дать другие, которые игрок еще не может получить от пчел, которых не вывел. А также игрок получает в награду пчелу, если до этого удача в селекции была не на его стороне.
Второй потребитель предметов это пчелиный алтарь, который игроку потребуется восстановить. Также через него игрок сможет производить исследования для более плавной прогрессии. Дополнительно для прогрессии еще необходимы будут пчелы, которые будут исследоваться в экстракторе ДНК.
Попытки в шортсы и маркетинг игры
Параллельно с геймплеем у меня наконец-то добрались руки поснимать шортсы для игры. Так как я раньше этим не занимался, то решил пойти по самому простому для себя пути и записывать их на русском. За основу решил как раз взять идею, что я их делаю каждый день и за основу сценариев взять посты из телеги.
Помимо ютуба я также пытался выкладывать видео в инсте и тиктоке, но основной буст просмотров давал ютуб. Причем в целом я ожидал, что будет все довольно тухло, но я даже смог пробить 1к подписок, которые мне и не снились в бородатые времена, когда я записывал летсплеи. Я старался держать темп, выкладывать по 1-2 шортса в день. В итоге за 2 месяца я выпустил 72 шортса, 3 из них смогли залететь на 20 тысяч просмотров и вишлистов набралось где-то на дополнительную сотню.
Как итог для себя могу выделить следующее: параллельно делать шортсы и саму игру после работы тот еще хардкор. Иногда просто весь вечер уходил на монтаж и что-нибудь совсем мелкое по игре. И в целом было больше ощущение, что я занимаюсь шортсами, а не работой над самой игрой. Выбило из колеи меня как раз то, что я тупо заболел и не мог разорваться на части. Второй момент, это то, что у игры на то время была довольно слабая визуальная часть, и для вирального эффекта текущего визуала не хватало. Ну и третий момент, все-таки стоит также делать упор на англоязычную аудиторию, так как в целом вишлисты желательно собирать по всему миру. Поэтому в итоге я решил взять паузу с шортсами и больше удариться в визуальную часть игры.
Поднятие визуала с колен
И вот уже к 250 дню у построек начали появляться модельки получше, чем кубы. Обмазался разными референсами и у дикого улья, и у пчелиного отеля появились модельки.
А также я начал двигаться в сторону того, чтобы добавить больше живости в картинку в виде микро-пчелок, которые могли бы летать вокруг ульев или ползать по пчелиному отелю.
Я довольно разрозненно занимался разными частями по настроению. В итоге, для маленьких пчел получилось запечь анимации полета и ползанья при помощи плагина анрила animToTexutre. Таким образом, я смог использовать статический меш пчелы и анимировать его с помощью материала, т.е. без костей.
В Niagara я сделал несколько систем для управления частицами пчел. Для пчелиного отеля пчелки ползали в радиусе ячейки, для экстрактора ДНК летали внутри банки. А для ульев сделал целую систему, где учитывались пчелы в улье и при появлении новых пчел, соответствующие частицы вылетали из улья, а при взятии пчелы возвращались обратно. Интереса ради даже запускал по 60 тысяч пчел без особых помех производительности.
Да и у экстрактора ДНК появилась также своя довольно милая моделька. А также я в процессе всего этого времени итерировал модельку пчелиного алтаря. Долго не мог прийти к какому-то варианту, как я его вижу. Но в итоге, пришел к варианту постепенного восстановления в 5 этапов.
Также мне надоело смотреть на плейсхолдеры иконок для предметов и я решил хотя бы обзавестись баночкой меда и брусками воска, которые точно буду использовать в игре. По остальным предметам это еще хороший вопрос, как лучше их дизайнить. Поэтому уже буду от личных ощущений отталкиваться, когда создам полноценный игровой цикл.
Одним из важных шагов для меня было намоделить свою собственную пчелку. До этого я использовал модель, которую купил за 3 бакса, но она была без костей, рига и всего прочего. И визуально мне хотелось кое-что лучше, а раз все равно буду сам все ригать, то почему бы и не сделать свою модельку. Поэтому я обмазался референсами и начал потихоньку творить.
Параллельно с этим у меня в голове зудела одна идея уже больше полугода. Я хотел реализовать заполнение рамок у пчел процедурно в зависимости от вида и наполненности, но хорошая реализация приходила в голову долго. Остановился в итоге на том, что я могу заполнять текстуру 32 на 32, где один пиксель это гексагон определенного цвета. Оставалось только покипеть над реализацией перевода uv координат в гексагональное пространство. В итоге, я начинал с простых маленьких текстур, чтобы был паттерн текстуры 2 на 2 на котором все наглядно. И потом когда отображение начало работать как надо, я уже подпихивал настоящую текстуру для покраски. И получился какой-то такой результат!
Вернемся к нашей пчелке! В целом не спеша я замоделил постепенно пчелку за 5 дней. И потом уже поправлял некоторые шероховатости и ходил по граблям, пока делал скелет пчелке и экспортировал его в анрил.
В самом анриле же я решил попробовать их модный контрол риг, познакомился с докой и разными туториалами. В итоге, нашел в одном, как можно добавить трясучки вторичным движениям и начал ваять. Какие-то примерные веса накинул, хоть и потом все равно еще пришлось их прикидывать на глаз, когда занимался именно полетом.
Также мне хотелось попробовать внутри анрила сделать анимации для пчел. Отталкивался от того, что нужно 3 анимации: полёта; когда пчелку игрок хватает и она трясет лапками, и движений, когда пчелки делают целуйтес.
Немного пришлось повозиться с переносом скелета со старой модельки на новую, но с этим справился, а также сделал стейты переключения анимаций. Единственное, я не проверял, насколько сетка с костями тяжелее, и если она станет бутылочным горлышком, то я вполне смогу запечь анимации по аналогии с маленькими пчёлами. Дальше навертел немного спагетти и пчелки научились летать от точки к точке, чтобы потом они могли кружить вокруг диких ульев.
Также запилил режим осмотра пчелки, чтобы был какой-то аналог разглядывания пчелы как в VR.
В процессе генерации отображения заполненности рамок я еще наконец-то смог разобраться с генерацией иконок в рантайме, раньше я просто мог сгореть на этом и несколько раз дропал эту тему, тогда просто останавливался на запекании иконок в png и радовался этому. Но так как рамки теперь прям заполнялись, то решил закрыть гештальт! Поэтому теперь можно прям увидеть, как рамка заполнялась.
Ну и финальная точка, над которой я еще успел поработать, это то, что я взял пак с окружением полянки, который был куплен еще в конце прошлого года. И визуально игра прям похорошела.
Будущая главная сложность это попытаться сбалансировать весь этот визуал, чтобы хотя бы на картофельной графике, но комфортно можно было запустить в автономном режиме на шлеме квест 3 (а может и на 2, если его поддержку не дропнут к моменту, пока я закончу игру хех)
Решил также сразу обновить визуал на страничке в стиме, чтобы она стала более презентабельной и с красивыми гифочками. Дальше меня, конечно, ждет еще сборка полноценного уровня с использованием этого визуала, и также нужно будет обновить трейлер.
Итоги
Какие итоги всего этого приключения можно подвести? Для начала стоит отметить прогресс по разработке игры. Думаю, у меня получился довольно положительный опыт стабильного вовлечения в процесс и заметный прогресс. Просто наличие такого длинного беспрерывного периода разработки уже было мотиватором что-то поделать за день. Это очень помогало в промежутки просадки, ведь нельзя так просто и глупо слить стрик и ничего не поделать. Да, важно не начать загоняться и ловить какой-то сильный стресс от этого. Тогда, вероятнее, лучше выходить из такого марафона.
Также, так как у меня есть основная работа, то я не ставил себе каких-то жестких дедлайнов и планов. Большую часть дней я чувствовал себя как самурай, у которого есть путь. Зачастую идеи, что еще можно поделать завтра, появляются в процессе разработки. Конечно, в таком варианте разработки бывают просадки: закрываешь какой-то кусок и потом начинают разбегаться глаза, а в голове мысли “что же взять дальше?”. Вот в такие моменты очень хорошо помогало выписать себе план, декомпозировать задачки в обычный notepad и отмечать по шагам, что было сделано.
Из минусов для меня - просело количество энергии, которое я выделял на социализацию. Кажется, за этот период я совсем перестал быть инициатором каких-либо встреч. Но в целом, если появлялась какая-то утомляемость, то опять же спасал вариант записать и разбить задачки на мелкие и делать хотя бы по одной. В такие промежутки отлично вписывались встречи, релизы игр, в которые хотелось поиграть или просто на гиперфиксе допройти, например, сатисфактори. Так что тут в целом зависит от менеджмента времени и ожиданий, насколько сильно есть ресурс заниматься игрой.
Помимо присутствия некоторой выдержки и дисциплины, я думаю, всего этого челленджа не состоялось бы без поддержки моей девушки, за что ей большое спасибо (и спасибо за вычитку всего этого текста). Также в целом радует, что здоровье за все это время особо не подводило, не считая типичного сезонного, потому что проблемы со здоровьем очень влияют на мотивацию и из подобного марафона разработки игры легко вывалиться.
И в конце могу лишь добавить, если после прочтения вы прониклись лором пчелиной разработки, то мою игру всегда можно добавить в вишлист.
А также вы можете следить за дальнейшей разработкой игры в моем телеграмм-канале.