Veliri: Planet of Machines - devlogПривет! Разобрал некоторую долю фидбека как с запуска, так и нет, и накопилось на небольшой девлог :)
В целом из обратной связи я вижу 4 направления, которые делают игрокам больно:
- Рывки камеры
- Full Loot
- Управление
- Интерфейс, но тут всё стабильно плохо :)
Рывки камеры
Вообще, тут я не совсем понимаю, о каких рывках камеры говорят игроки, но после запуска я решил изучить этот вопрос подробнее, добавил lerp-эффект камеры и увидел это
Так как камера раньше была прибита гвоздями к машинки, это было трудно заметить, а с lerp-эффектом стало всё как на ладони. Эту проблему имели ввиду или нет, но проблема серьёзная и её надо решать.
Как я ни пытался, я не смог определить источник этих лагов. Я ковырял:
- локальную производительность;
- неткод, профилировал время отклика от сервера, стабильность серверных тиков;
- встроенную интерполяцию, которой я пользовался через tween.
По приборам всё выглядело в норме ¯_(ツ)_/¯. В итоге я решил проблему тем, что с бэкенда начал передавать не только позицию, но и вектор движения, на основе вектора экстраполировать позицию на несколько тиков вперёд и интерполировать с задержкой.
Не сказать, что это прям полностью решило проблему, но стало всё намного стабильнее, а камеру оставил на резинке, и она теперь 100% будет плавной.
До:
После:
Бонусом управление машинки стало чуть отзывчивее, а пинг уменьшился, потому что я удалил эту строку :D
while (messagesQueue.serverMsgCount > serverLag)
Hardcore -> Midcore
Очевидно, потеря всего за одну смерть очень фрустрирует игрока, а в Veliri очень низкий TTK, и смерть может быть вызвана даже неудачным поворотом в репейник.
При этом в игре в целом весёлые бои, которые полностью ужимаются full loot системой, потому что игроки боятся рисковать/воевать.
При этом если упразднять эту систему, то это будет отражаться на потенциальном рынке предметов в игре.
Ну так воооот — изменение, которое мне очень тяжело далось :)
В игре изменена формула full loot системы. Цель — сохранить остроту и риск, но снизить фрустрацию от неожиданных смертей.
Как было раньше:
- Смерть — часть снаряжения выпадала как лут.
- Всё остальное безвозвратно уничтожалось.
- Игрок покупал новый корпус или катался на «ведре».
Как стало:
- Смерть — небольшая часть снаряжения может выпасть как лут (1 к 15).
- Всё остальное снаряжение и корпус возвращаются в ангар, но получают очки износа.
- Инвентарь (груз) теряется/выпадает как и раньше весь.
- Починился — поехал дальше.
Очки "износа"
- За каждую смерть снаряжение/корпус получает 3-7% износа.
- Снаряжение и оружие: При 100% износа предмет ломается и исчезает.
- Корпуса: Не уничтожаются, но получают дебаффы:
- — Каждые 5% износа дают -1% к скорости и HP.
- — Максимальный дебафф: -20% к скорости и HP.
- — Чем выше износ — тем дороже ремонт (до ×6 при полном износе).
Таким образом, я хочу смягчить негодование от смерти, но и не сломать рынок. Очевидно, спрос на корпуса сильно упадёт, но не исчезнет, а соло-игрок может кататься на «зомби»-корпусе, компенсируя дебаффы навыками и прокачкой.
И бонусом:
- После смерти игрок теперь видит окружающий мир ещё пару секунд.
- После смерти игроку даётся отчёт по утерянному и сломанному снаряжению/предметам.
Управление
Управление остаётся без изменений, но думаю, эта тема стоит раскрытия и как история о том, как фидбек может приносить не только пользу, если слепо ему следовать.
Из чего состоит управление в игре в целом?
- Машинки в игре не умеют моментально поворачиваться и имеют вес, инерцию.
- Оружие в игре поворачивается не моментально.
- При повороте корпуса поворачиваются и орудия.
- Разные типы шасси компенсируют или усиливают эти эффекты.
И каждое из этих решений бесит игроков, особенно когда они видят игру похожую на обычный 2D top-down шутер, но моя игра в жанровой принадлежности ближе к 2D космосимам, просто без космоса.
Сложное это управление? Ну, наверно, да, но у него есть как противники, так и сторонники, и моё наблюдение такое, что это в большей степени зависит от игрового бэкграунда. Если игрок залипал в какой-нибудь Starcom, Sunless Skies или что-то типа Вангеров, то им в целом всё понятно и просто, если не играл — то ему больно.
Буду ли я его менять? Нет, это очень сильно ударит по иммерсивности и глубине боя, однако я попытался адаптировать управление по мотивам треда https://steamcommunity.com/app/2828170/discussions/0/819205866079144783/.
Чем сильно выстрелил себе в колено. Сейчас в игре есть “упрощённое” управление, которое работает относительно экрана, но:
- полностью нивелируются все плюшки “шасси”;
- игрок в нём не контролирует в полной степени корпус, что сводится к постоянному сведению оружия, что выливается в “кривое управление”;
- в итоге казуальным игрокам это никак не помогло, всех остальных могло отпугнуть, если они выбрали упрощённое управление вначале.
На текущий момент упрощённое управление всё ещё есть в игре, оно может быть удобно для мобилок или Deck, но пока я ориентируюсь на ПК, скорее всего, я его спрячу.
И всё?
Не всё)
Раз я не могу “исправить” управление, я попробую сделать его более читабельным, чтобы игрок, заходя, сразу понимал, куда смотрит его пушка, какой путь преодолевает, куда смотрит его машинка и как двигается.
Я добавил HUD вокруг машинки, который показывает:
- вектор движения;
- нос машинки;
- направление оружия;
- траекторию поворота оружия.
Ха, я могу рисовать интерфейсы вокруг машинки!
5 minutes later
И тут меня понесло. Некоторые игроки жаловались, что читабельность графики очень плохая. Отлично, давайте сделаем из экрана не просто камерой в мир, а тактический экран!
Основная идея: на экране должны подсвечиваться точки интереса в зависимости от выбранного режима машинки.
Если выбрано оружие: подсвечиваем машинки, турели, HUD оружия и движения. Всё лишнее скрываем.
Если выбран бур: подсвечиваем все ресурсы, с которыми он может взаимодействовать.
Слои могут накладываться друг на друга: например, бур + лапа + насос и т.д. Исключение тут только боевой режим — он исключает всё остальное.
Пеленгатор
Для реализации подобной системы нужен “компас”, и у меня он уже реализован, но криво и включается отдельным модулем.
Возьмем его за основу, сделаем инструментом доступным всегда и приемлемый вид)
Пеленгатор отображает все объекты на круговой шкале. Чем длиннее полоска, тем сильнее сигнал и, соответственно, чем ближе объект. Если объект находится прямо в центре круга, он отобразится точкой.
- Включается и выключается клавишей V или кнопкой на нижней панели.
- Постоянно потребляет небольшое количество энергии.
- Базовая дальность: Радар х2.
- Модуль пеленгатора увеличивает дальность, если установлен и включён.
- Объекты с малыми и средними корпусами сложнее засечь из-за их размеров.
Пеленгатор адаптируется и показывает сигналы от объектов, с которыми можно взаимодействовать выбранным инструментом:
- Манипулятор: предметы на земле, объекты с инвентарём, ящики.
- Оружие: машины, строения, опасная фауна.
- Бур / Насос / Пылесос: залежи руды, нефти или гранул.
- Комбайн: вся флора и фауна.
- Переработчик: обломки, которые можно переработать.
- Сканер инвентаря: машины, ящики, строения с инвентарём.
- Ремонтный инструмент: машины, ящики, строения, которые можно чинить.
Цели
Выделяем машинки других игроков/ботов. Теперь все машинки обведены тонкой "рамкой".
Рамка показывает отношение к игроку:
- зелёное — хорошее;
- красное — плохое или цель для атаки;
- синее — машинка боится и хочет убежать.
В обычном режиме рамка почти не заметна, но когда выбрано оружие или машинка выбрана как приоритетная цель, то она становится жирной.
Если бот или игрок достал оружие, то рамка начинает немного пульсировать, намекая на опасность
Бонусом у тех, у кого установлен сканер, будут ещё видеть дополнительно энергию и загруженность трюма машинки :)Нативные подсказки о предметах/ресурсах
В зависимости от режима автоматически появляются подсказки над объектами, с которыми можно взаимодействовать.
Когда ничего не выбрано, показаны все подсказки на валяющиеся предметы, которые можно забрать. Подсказки не перекрывают друг друга и реагируют на нажатие так же, как на предмет.
Подсказка при наведении появляется как и раньше без фильтров.
Вооот, как-то так)