Bhop Jump
Первый настоящий Source-style bunny-hop на мобилках — движение портировано с движка, а продавалось точностью ощущения.
Обзор
Bhop Jump — соревновательная мобильная игра вокруг bunny-hopping: скилловой механики движения из движка Source, где точный тайминг прыжков и эйр-стрейф позволяют разгоняться и нести скорость через карту. Это был заказ. Клиент пришёл с одним чётким требованием — принести настоящий bhop на телефоны. На тот момент этого не сделал никто: была единственная ранняя попытка, и она была кривой. Задача была не «сделать раннер», а заставить саму механику ощущаться достоверно на тач-экране. Игра вышла на iOS и Android в 2017 и принесла **$160K+ только за Q1** — почти целиком на rewarded-рекламе — при примерно 100K загрузок.
Бриф — и спрятанный дракон
Игра делалась под DragonGameStudios (отсюда bundle id `com.dgs.bhop`). Клиент хотел её на своём аккаунте и доплатил 50% сверху за white-label — никакого логотипа студии, никаких упоминаний DragonGameStudios нигде. На одно он согласился: кастомный задник меню. И этот задник — скриншот из CS, в дверь которого тихо вписан дракон студии. Клиент заплатил, чтобы стереть студию, а дракон так и сидит в этой двери до сих пор. Логотип опирается на тот же исходник: контртеррорист в прыжке с ножом, вырезанный руками из скриншота Counter-Strike 1.6, положенный на одну заливку и — после подбора палитры в Figma — сделанный белым по тёмно-серому, потому что так лучше всего читался как иконка на iOS.
Что вообще такое bunny-hopping
В играх на Source ты не просто бежишь — ты прыгаешь раз за разом и рулишь в воздухе. Поймай тайминг приземления-в-прыжок и стрейфь в такт с камерой — и ты набираешь скорость, а не теряешь её. Сделано хорошо — летишь по карте куда быстрее бега; плохо — глохнешь. В этом весь кайф: высокий скилл-силок за простым вводом. Механика награждает консистентность, а не реакцию. Перенести это на мобилку — не упростив до очередного авто-раннера — и было всем проектом.
Порт движения Source в Unity
Bhop нельзя сымитировать. Если кривые ускорения, трение, air-control и тайминговые окна не совпадают с тем, что ждёт мышечная память игрока, — это мгновенно ощущается неправильно. Поэтому движение было не «вдохновлено» Source, а портировано из него. Я вытащил реальные метрики движка, размеры персонажа и поведение, перевёл юниты Source в юниты Unity и фактически переписал эту физику в Unity — чтобы ускорение и эйр-стрейф вели себя как настоящие. Добиться достоверности чисел и тайминговых окон было самой сложной отдельной инженерной задачей в игре.
Мобильное управление — одна уступка
Тач-схема намеренно минимальна. Единственная реальная поблажка под мобилку — **автопрыжок**: игра прыгает за тебя, чтобы пальцы были свободны для того, что важно. Дальше — левый и правый края экрана это твои повороты, и всё. Всё сложное остаётся сложным. Скилл-гэп не в управлении, а в **консистентности движения**: держать линию, попадать в тайминг, нести скорость круг за кругом.
Три режима
Игра делится на три режима, оплачиваемых в BP (внутриигровые очки). **Bhop Classic** — ядро: достоверный bhop на портированных картах сообщества. **Bhop Speed** — его стилизованный двойник, неоновый вайрфрейм-тоннель, сведённый к чистой скорости и таймингу. **Multiplayer** — те самые сессии до восьми игроков, о которых ниже.
Карты: классика сообщества, пересобранная вручную
Карты — это именитые bhop-карты сообщества, которые игроки уже знали. Их использование означало разыскивать авторов ради разрешения, и это была отдельная сага: многие так и не ответили, поэтому в игре прямо в мире висит DMCA-плашка с контактами — на случай, если кто-то из создателей будет против. Занос каждой карты был ручной, муторной работой. Карты вытаскивались как сырые модели и текстуры, а потом пересобирались в Unity вручную — меши, материалы переработаны под рендер Unity, освещение расставлено на глаз, триггеры и зоны старта/финиша прописаны под каждую карту. Умножь это на полный ростер, разбитый на субъективные тиры сложности. Это была самая времязатратная часть всего проекта.
Мультиплеер
Такое точное движение зверски сложно синхронизировать — пара миллисекунд рассинхрона превращает чистый ран в телепорт. Неткод на Unity + Photon: мастер-сервер отвечает за подключение и матчмейкинг, хост поднимает сессию до восьми игроков, и все идут по общему тику. Удалённые игроки интерполируются (лерпинг) между авторитетными апдейтами — это держит движение плавным на каждом экране, вместо рывков в такт сети.
Косметика и экономика
Прогрессия косметическая — скины, выпадающие из ящиков по честному рандому (базовый набор, перчатки и нож, падает как два отдельных предмета). Скины я моделил и текстурил сам в Marmoset и Maya, рисуя прямо по готовой модели, чтобы текстуры легли правильно. BP — внутриигровые очки — открывают ящики, и зарабатываешь их игрой: прохождением карт на время, участием в онлайне — или покупаешь напрямую через внутриигровые покупки.
Монетизация и рост
Модель денег — реклама плюс IAP, и интересен именно сплит: **rewarded-реклама была движком** — основная масса из $160K+ — а внутриигровые покупки давали лишь около 5% от общей выручки. Маркетинг на запуске был скромный: примерно $1.5K на таргетированную рекламу по нишевым сабреддитам, Google и Facebook. Остальное сделали комьюнити bhop и выдача сторов. Трейлер в Google Play тоже был нарочно простым — около полутора минут сырого геймплея с наложенным треком Celldweller.
Истории из окопов
- Сидеть в 3 ночи в скайпе и уговаривать американца-мапмейкера из CSGO пустить его карту в игру.
- Воевать руками с Marmoset и Maya, чтобы кастомные скины легли правильно — рисуя прямо по готовой модели.
- Через три недели после релиза получить от ютуба рекомендацию обзора собственной игры от какого-то школьника — алгоритм подсунул мне то, что я только что выпустил.
Итог
После дележа выручки и трёх месяцев саппорта игра была передана клиенту. Дальше, судя по всему, был какой-то скандал, в котором я уже не участвовал, и за то, чем стал проект, я ручаться не могу — многие говорили, что после смены рук игра скатилась. Что я забираю из этого — инженерию: по-настоящему сложную PC-механику движения, портированную достаточно достоверно, чтобы ощущаться настоящей на телефоне, на ростере вручную пересобранных карт — и продукт, который нашёл аудиторию и заработал именно на этой достоверности.
Выводы
Bhop Jump сработал, потому что отказался от лёгкой версии. Вся ставка была в том, что нишевое, требовательное ощущение настоящего bunny-hopping стоит портировать точно — а не приблизительно — и что аудитория заплатит за оригинал на платформе, где его никогда не было. Сложное было неэффектным: совпасть с физикой движка вплоть до юнитов и пересобрать каждую карту руками. Но именно эта точность и была продуктом. Это напоминание: для скилловых механик «достаточно близко» — не близко; ощущение и есть фича.