Кроссплатформенная разработка
Создание на Flutter MMO, достигшей $14k MMR в закрытом тестировании
Я создаю свои собственные игровые проекты в качестве хобби с 10 лет, но до этого я не выпускал ни одной из своих игр больше, чем для пары десятков человек.
В этой статье автор рассказывает о своем пути разработки игр на Flutter.
Следуя недавней тенденции ретроспективных и информативных постов, я хотел бы поделиться своим опытом разработки игры с помощью Flutter.
Я также написал подробный пост о первом годе работы над игрой на нашем собственном сабреддите, и вы можете прочитать его здесь.
Если вы хотите ознакомиться с самой игрой, вы можете сделать это на сайте https://walkscape.app.
Предыстория
До того как начать этот проект, я изучал информатику в университете и работал IT-консультантом. Я создаю свои собственные игровые проекты в качестве хобби с 10 лет, но до этого я не выпускал ни одной из своих игр больше, чем для пары десятков человек. Я из Финляндии, что имеет значение, когда речь идет о простоте открытия бизнеса. В Финляндии также довольно высокая стоимость жизни, что имело большое значение, когда я думал о том, чтобы бросить все остальное и посвятить этому все мое время.
Выбор Flutter
Когда у меня в голове возникла идея объединить прогрессию типа RuneScape с фитнесом и создать еще один свой хобби-проект, чтобы помочь себе стать здоровее, я начал с Unity.
Первый прототип, который я хотел сделать, должен был включать базовый пользовательский интерфейс и иметь возможность получать данные с шагомера, когда игра даже не находится в фоновом режиме. С Unity это оказалось очень сложно. Нативное программирование в Unity — это большая морока, а в Unity Marketplace был доступен один пакет, который стоил около 20 долларов. Не самое лучшее начало.
Мне удалось сделать прототип, но шаги считались только тогда, когда игра была открыта, и я понял, что создание игры, состоящей в основном из пользовательского интерфейса, будет очень медленным. Кроме того, несмотря на то, что игра представляла собой простой пользовательский интерфейс с шагомером, она заставляла мой телефон нагреваться и расходовала много заряда батареи.
Я начал искать альтернативы и нашел Flutter. На самом деле это мой первый проект на Flutter.
Мне удалось создать аналогичный прототип на Flutter за один вечер с гораздо лучшим пользовательским интерфейсом, а для работы с шагомером на iOS и Android было доступно несколько бесплатных пакетов с открытым исходным кодом. Приложение работало очень хорошо, не потребляло практически никакого заряда батареи, считало шаги даже в фоновом режиме, и, что самое важное, Flutter имел отличный инструментарий для быстрого создания пользовательского интерфейса и горячую перезагрузку, которая сохраняла состояние. Кроме того, Flutter имеет собственный движок рендеринга, с которым я могу возиться сколько угодно, и это делает его единственным жизнеспособным вариантом для работы по сравнению с такими вещами, как React Native.
Я не могу не подчеркнуть, насколько крута горячая перезагрузка для разработки игр. Я могу запустить свою игру и добавлять новые функции, которые обновляются в режиме реального времени! Я был бесповоротно очарован этим, особенно если учесть, что сохранение кода в Unity иногда может занимать несколько минут.
И самое главное, я мог делать все с помощью только VSCode и разрабатывать игру, используя конвейеры разработки программного обеспечения. Использование такого простого инструмента, как git, в Unity может быть очень сложным, поскольку даже шаблон проекта по умолчанию может занимать сотни мегабайт.
Начало бизнеса
В 2023 году я начал публиковать информацию об этом проекте на Reddit, где он набрал популярность. Поскольку люди хотели оказать финансовую поддержку разработке, я открыл аккаунты Buy Me a Coffee и Patreon. Мы начали с ежемесячного регулярного дохода в размере около 100 долларов, который постоянно увеличивался.
То, как мы справлялись с этим ростом, определялось финскими законами. Здесь прием пожертвований запрещен без разрешения полиции. Однако если сторонники получают что-то взамен, это считается покупкой, а не пожертвованием. Если дать сторонникам Patreon и Buy Me a Coffee специальные роли в Discord и гарантированный доступ к закрытой бете, это уже не будет считаться пожертвованием.
В то время в Финляндии действовал лимит безналогового заработка в размере 10 тысяч евро, после чего требовалась регистрация компании и уплата НДС. К концу лета 2023 года мы приблизились к этому порогу, что сделало логичным создание компании. У этого шага было дополнительное преимущество — предприниматели имеют право на ежемесячную социальную выплату в размере 800 евро в течение одного года, независимо от дохода. Такая поддержка позволила мне приостановить учебу в университете, оставить работу и полностью сосредоточиться на проекте.
Запуск закрытой беты
Изначально мы планировали запустить игру в 2023 году, но, как это часто бывает в разработке, это оказалось нереальным. После нескольких недель напряженной работы игра была готова к выпуску 18 января 2024 года. Однако процессы проверки TestFlight и Google Play отложили запуск до 19-го.
Запуск был невероятно напряженным. Хотя в первой волне закрытого бета-тестирования приняли участие всего 752 игрока, в тот момент это казалось огромным числом. К тому же на следующий день после релиза мне предстояло лететь в Лондон на игровой конвент.
К счастью, стресс быстро спал. Несмотря на некоторые ошибки и проблемы, отзывы тестеров первой волны были в подавляющем большинстве положительными. Мы увидели всплеск числа сторонников на Patreon, желающих получить гарантированный доступ к следующей волне, что, вероятно, было вызвано сарафанным радио от наших первых 752 игроков.
Вот некоторые данные о том, как развивалась игра:
- Волна 1 (19 января 2024 года): 752 игрока закрытого бета-тестирования и 4 948 зарегистрированных аккаунтов.
- Волна 2 (28 февраля 2024 года): 4 718 игроков закрытого бета-тестирования и 10 447 зарегистрированных аккаунтов.
- Волна 2.5 (1 июня 2024 года): 12 085 игроков закрытого бета-тестирования и 21 864 зарегистрированных аккаунта.
- Волна 3 (20 августа 2024 года): 19 811 игроков закрытого бета-тестирования и 30 115 зарегистрированных аккаунтов.
- Волна 3.5 (15 декабря 2024 года): 24 683 игрока закрытого бета-тестирования и 47 290 зарегистрированных аккаунтов.
Хотя я не уверен в типичном количестве пользователей для закрытого тестирования TestFlight и Google Play, достижение более 20 тысяч загрузок без присутствия в магазинах приложений кажется огромным достижением.
Мы создали значительную инфраструктуру для поддержки такого масштаба, поскольку Google Play Closed Testing и TestFlight не были рассчитаны на такое количество пользователей. Наш собственный сервер (построенный с помощью Dart!) следит за сторонниками на Patreon и Buy Me a Coffee, а наш сайт позволяет пользователям привязать эти аккаунты к своему профилю WalkScape. После привязки они получают доступ и инструкции по скачиванию игры через TestFlight или Google Play.
Ретроспектива: чему я научился
Я хотел бы выделить ключевые факторы, которые способствовали нашему успеху.
Прозрачность и общение с сообществом
Задолго до запуска закрытой беты я начал писать блог о разработке на Reddit каждые две недели, и мы придерживаемся этой практики до сих пор. В этих блогах я отдаю предпочтение честности и прозрачности в описании нашего прогресса, и мы отвечаем на вопросы и отзывы так часто, как это возможно. Такой подход завоевал нам доверие в сообществе. Вы можете читать блоги разработчиков на r/WalkScape.
Установка стандартов и их соблюдение
В нашем первом сообщении в сабреддите я изложил основные обещания: никакой хищнической монетизации (например, покупок в приложениях), никакой рекламы, прозрачность и ориентация на развитие под руководством сообщества. Мы придерживаемся этих принципов.
Простота маркетинга
Во время волн релизов я делюсь обновлениями в соответствующих сабреддитах. Кроме того, игре помог сильный “сарафанный” маркетинг: игроки регулярно рассказывают о ней друзьям и близким.
И вот несколько ключевых уроков, которые я извлек.
Управление бизнесом включает в себя гораздо больше, чем разработка
Особенно в играх, где приходится выполнять множество ролей: поддержка клиентов, серверные технологии, маркетинг, юриспруденция, бухгалтерия, государственная бюрократия и HR. Эти обязанности отнимают много времени, особенно когда вы запускаете свой первый бизнес и осваиваетесь.
Ошибки случаются, и признавать их полезно
Я совершал ошибки, но мы открыто рассказываем о них нашему сообществу. Иногда ошибки невозможно предотвратить: моей самой большой неудачей было потратить два месяца на создание шагомера для устройств на базе Android, а затем Google выпустил свой Recording API, который решил все проблемы в одночасье. Эта работа стала ненужной, но это часть пути.
Масштабирование от личного хобби-проекта до MMORPG с тысячами игроков — сложная задача
Это мой первый проект на Flutter и первая MMORPG, что делает его амбициозным, особенно учитывая, что я начал его как соло-разработчик.
Если бы я знал, каких масштабов должны достичь наши системы, я бы, возможно, изначально сделал другой выбор. Однако многие аспекты невозможно было предугадать, и зачастую лучше сначала сделать что-то, а потом улучшать.
Я уже писал о том, как недавно переделал наш игровой движок, сделав его многопоточным, выделив логику в отдельный пакет и сделав его stateless. Вы можете прочитать об этом здесь. Жаль, что я не сделал этого с самого начала.
В будущее
В этом году мы планируем довести игру до состояния, когда мы сможем выпустить ее в открытое бета-тестирование, чтобы любой желающий мог ее скачать.
Что касается Flutter, то я также стремлюсь принести как можно больше пользы сообществу и экосистеме. Я уже имел удовольствие общаться с Google и Very Good Ventures, и как бизнес, мы хотим помочь их Flutter Commercial Roadmap, чтобы сделать все возможное для развития экосистемы. Нам повезло, что у нас на руках такой проект, и он может помочь повысить осведомленность о Flutter в сообществе разработчиков игр.
От Flutter я всегда жду новых возможностей и поддержки, связанных с разработкой игр. Impeller был отличной разработкой, и я с нетерпением жду, когда же Flutter получит поддержку GPU и 3D в готовом к производству виде. Эти функции, на мой взгляд, поднимут Flutter на новый уровень, если речь идет о разработки игр.
Дополнительно
Я мог бы рассказать еще о многом, но этот пост уже получился довольно объемным. Пожалуйста, не стесняйтесь задавать любые вопросы — я постараюсь ответить на них.
Вот несколько интересных дополнительных фактов.
- В самом начале я получил судьбоносное предложение о приобретении от другой компании. Я отказался, и я уверен, что это было правильное решение. Этот проект никогда не был направлен на получение быстрых денег — я искренне доволен своей жизнью.
- Юридическая команда Jagex обратилась к нам и предложила лицензионное соглашение, позволяющее нам использовать их IP в нашем маркетинге, что было невероятно удачным событием.
- Найм разработчиков игр существенно отличается от найма разработчиков программного обеспечения. В то время как технические навыки имеют значение, страсть к разработке игр является решающим фактором. Многие кандидаты имели сильное техническое образование, но без демонстрации интереса к разработке игр они не подходили.
- Несмотря на 14 тысяч долларов MRR, мы едва выходим на безубыточный уровень. Наш первый год принес 62 тысячи евро общего дохода и 2 тысячи евро прибыли. С четырьмя членами команды, офисом в Хельсинки, несколькими серверами, внутренними службами, бухгалтерскими сборами, налогами и обязательными пенсионными выплатами наши расходы весьма значительны.
- Конвенты жизненно важны для индустрии разработки игр. Финская игровая индустрия невелика — всего 4,100 человек, а мировая индустрия, хотя и компактна, но хорошо связана между собой. Я настоятельно рекомендую посещать мероприятия, чтобы расширить свои связи. Для меня это было бесценно. Во многих странах существуют организации разработчиков игр, которые организуют мероприятия по налаживанию контактов и координируют групповые поездки на международные конференции, помогая распределить расходы.
Заключит ельные слова
Я надеюсь, что это было не слишком длинное изложение, и, возможно, кому-то из вас оно показалось интересным.
Как уже говорилось, я постараюсь как можно подробнее ответить на все вопросы, которые могут возникнуть у людей. Я надеюсь, что, поделившись своим опытом и тем, что я узнал, я помогу другим людям найти успех и узнать о разработке игр с помощью Flutter, что принесет пользу экосистеме для всех нас.
Спасибо за участие, продолжайте ходить и не забывайте пить воду! ❤️
-
Видео и подкасты для разработчиков4 недели назад
SwiftUI: алхимия приложений — превращаем идеи в реальность
-
Разработка4 недели назад
30 уроков от 30 лучших продуктовых лидеров
-
Новости4 недели назад
Видео и подкасты о мобильной разработке 2025.3
-
Магазины приложений1 неделя назад
Приложение Hot Tub появится на iOS в EC