Как мы сделали «Пыльного торговца» для Android и выпустили отдельную версию на ПК
«Пыльный торговец» начинался как небольшой рогалик для Android про торговца в мире постапокалипсиса. Игрок разъезжает между поселениями, покупает и продаёт товары, следит за расходом топлива, состоянием машины и старается не остаться без всего, где-нибудь посреди маршрута.
Сначала мы делали игру под Android. И запустили её в Google Play и RuStore и после мобильного релиза решили сделать версию для ПК. Первые билды и тесты показали, что просто перенести мобильную игру на ПК, недостаточно. В итоге у Android и ПК осталась общая база, но интерфейс, часть контента и всё, что связано с платформой, пришлось разделить.
Сейчас версия для Windows доступна в VK Play. И сейчас мы готовим релиз в Steam.
Что это за игра
«Пыльный торговец» — это стратегия с элементами roguelike.
Игрок управляет старым броневиком и ездит между поселениями. В одном месте можно дёшево купить воду, металлолом или медикаменты, в другом — продать их дороже.
При этом нужно учитывать запас топлива, броню, вместимость, деньги и свою репутацию.
Во время рейса постоянно приходится выбирать:
- какой груз брать;
- куда ехать дальше;
- хватит ли топлива на дорогу;
- стоит ли брать срочный контракт;
- рисковать ли ради артефакта;
- ремонтировать машину сейчас или оставить деньги на закупку;
- тратить ресурсы на случайные события или ехать дальше.
Ошибки в игре имеют свою цену. Если слишком много потратить на покупку товаров, через пару дней может не хватить денег на ремонт. Если забить кузов товаром, придётся оставить найденный артефакт. Если неправильно рассчитать маршрут, машина может остаться без топлива вдали от поселений.
Почему сначала Android
Для мобильной версии отлично подходил формат коротких игровых сессий. Открыл игру, посмотрел карту, что-то купил или продал, выбрал следующую точку, проехал несколько событий и закрыл.
Проект написан на HTML5 и JavaScript при участии 2 человек и Codex.
На первых этапах это было удобно: можно быстро менять интерфейс, баланс и тексты. Но довольно быстро игра начала обрастать надстройками.
Нужно было обрабатывать сворачивание приложения, возвращение в игру, кнопку «Назад», потерю фокуса, остановку музыки, восстановление звука после рекламы, работу без интернета и отключение автоматической блокировки экрана во время игры и много других системных штук.
Как росла сама игра
Первый рабочий прототип был намного меньше нынешней версии.
Постепенно к карте и торговле добавились:
- расход топлива и повреждения машины во время поездок;
- случайные события;
- контракты;
- четыре класса: Торговец, Контрабандист, Механик и Медик;
- три уровня сложности;
- артефакты;
- коллекция;
- постоянный гараж между рейсами;
- ежедневные задания;
- сохранение текущего рейса;
- 30 достижений;
- русский и английский языки.
Одной из основных проблем стал интерфейс.
На экране телефона одновременно нужны карта, ресурсы, информация о текущем месте, стоимость поездки, погода и кнопки действий. При этом элементы управления нельзя делать слишком мелкими.
Поэтому интерфейс переделывался несколько раз. Менялись главное меню, карточки, достижения, экран поражения и расположение отдельных кнопок.
В первых версиях часть обозначений была сделана обычными эмодзи. Позже мы заменили их собственными игровыми иконками.
Также появились музыка и отдельные звуки.
Сохранения
Сначала казалось, что с сохранениями всё будет довольно просто.
Но чем больше становилась игра, тем больше данных нужно было восстанавливать после запуска: текущую точку, открытые места, исследованные маршруты, груз, активные контракты, репутацию, гараж, статистику и достижения.
При изменении формата сохранения старые данные нужно было корректно переводить в новый. Иначе после обновления игрок мог потерять часть прогресса.
Причём такие ошибки не всегда сразу заметны. Игра может нормально загрузиться, но, например, «забыть» исследованные ранее дороги.
Поэтому миграция старых сохранений со временем стала обычной частью разработки.
Реклама
Android-версия бесплатная, поэтому в неё встроена реклама.
Мы используем несколько вариантов:
- показ при запуске приложения с ограничением по частоте;
- полноэкранную рекламу после поражения;
- просмотр рекламы при поражении для вызова эвакуатора;
- займ денег у ростовщика за просмотр рекламы;
- дополнительные награды после некоторых контрактов.
Для рекламы за награду пришлось учитывать ситуации, когда ролик не загрузился, игрок закрыл его раньше времени или рекламная сеть вернула ошибку.
Отдельно пришлось разбираться с повторными нажатиями, состоянием кнопок и экраном после поражения. Например, если все возможности спасения за рекламу уже использованы, соответствующая кнопка не должна продолжать работать.
Это небольшие вещи по отдельности, но ошибок здесь было достаточно.
Публикация в магазинах
Отдельный объём работы оказался связан не с самой игрой, а с требованиями Android и магазинов.
Приходилось следить за:
- актуальным target API;
- версиями сторонних SDK;
- релизной подписью;
- политикой конфиденциальности;
- настройками рекламных SDK;
- карточками приложения, скриншотами и обложками;
- возрастным рейтингом.
После публикации эта работа не заканчивается. Google Play периодически меняет требования к уровню API или сообщает об устаревших библиотеках.
Поэтому Android-версию приходится обновлять даже тогда, когда в самой игре ничего существенно не меняется.
Что стало понятно после мобильного релиза
После выпуска стало ясно, что основной игровой цикл работает и его можно развивать дальше.
При этом вертикальный экран начал мешать. На карте становилось всё больше объектов, в игре появлялись новые системы, а арты приходилось сильно уменьшать.
Тогда мы решили попробовать сделать отдельную версию для ПК.
Сначала мы просто растянули мобильную игру
Первый вариант для ПК был почти тем же мобильным интерфейсом, только в альбомной ориентации и на большом экране.
Работал он нормально, но выглядел плохо.
Панели растягивались, связанные элементы оказывались далеко друг от друга, а на экранах 21:9 появлялось много пустого места.
Крупные мобильные кнопки тоже выглядели странно при управлении мышью.
Дополнительно начали мешать обычные браузерные элементы: системные полосы прокрутки, стандартные окна подтверждения и другие вещи, которые на телефоне не бросались в глаза.
В результате интерфейс начали переделывать отдельно под ПК.
Новый интерфейс
Так в версии для Windows появились отдельное главное меню, большая карта и боковая панель основных разделов.
Торговля, мастерская, грузы, контракты и журнал получили собственные экраны.
Также добавили:
- управление мышью;
- горячие клавиши;
- собственный курсор;
- масштаб интерфейса;
- настройку количества визуальных эффектов;
- настройку погодных эффектов;
- обучение.
Обучение пришлось делать так, чтобы оно не ломало уже существующее сохранение. Игрок может пройти его поверх текущего прогресса, а не начинать всё заново.
Переделка карты
На телефоне карта в основном использовалась для выбора следующей точки.
На ПК мы сделали её значительно крупнее и добавили постепенное исследование мира.
При этом отдельно отображаются маршруты, по которым можно ехать сейчас, и дороги, которые игрок уже проезжал раньше.
Также на передвижение влияет погода:
- снег;
- туман;
- жара;
- пылевая буря;
- кислотный дождь.
Погода меняется со временем.
Для самой карты и экрана поездки используются разные эффекты.
Контент и иллюстрации
На большом экране намного заметнее, когда одна и та же иллюстрация используется слишком часто.
Поэтому вместе с ПК-версией начали расширять и сам контент.
Появились новые ситуации, регионы, модули грузовика и постоянные персонажи. Некоторые из них встречаются в нескольких рейсах и помнят решения игрока.
Звук
Для ПК-версии мы также расширили звуковые эффекты.
Добавили несколько фоновых композиций и отдельные эффекты для интерфейса, торговли, ремонта, контрактов и поездок.
В некоторых ситуациях используются короткие реплики на русском и английском языках.
Полностью озвучивать все события не стали. В игре много текста и вариантов, поэтому объём быстро стал бы слишком большим.
VK Play
Для VK Play понадобилась отдельная сборка.
Мы подготовили версии для 32- и 64-битных систем, файловые сохранения с резервными копиями, облачную синхронизацию части прогресса и достижения VK Play.
Игра запускается через Игровой центр.
Часть проблем обнаружилась уже при подготовке дистрибутива.
То, что локальная сборка нормально запускается через EXE, ещё не означает, что она так же нормально установится и запустится через магазин.
Пришлось отдельно настраивать архитектуры, дополнительные исполняемые файлы, параметры запуска, файлы сохранений и облачную синхронизацию.
Это не самая заметная часть разработки, но без неё игру просто нельзя нормально выпустить.
Что осталось общим
Основные игровые правила, контент и большая часть данных у двух версий общие.
Отдельно работает всё, что связано с конкретной платформой.
Из-за этого поддерживать две версии сложнее
Сейчас игру можно скачать здесь:
- Windows: VK Play
- Android: RuStore
- Android: Google Play
Следующий этап — подготовка версии для Steam.
Если будете играть, нам особенно полезны ваши отзывы: понятно ли, как работает торговля, удобно ли пользоваться картой и в каких местах интерфейс вызывает вопросы.