Продолжаем разработку, оптимизацию и осваиваем новые платформы #2
Наполнение контента в игре продолжается. Сейчас в игре игроку доступно более 10 видов кораблей. От легких истребителей, до крейсеров и дредноутов. Каждый со своими особенностями и вооружением.
С увеличением размера кораблей мы постарались передать чувство управления чем то тяжелым и неповоротливым. А если оно взрывается, то расталкивает всё вокруг! Мы решили использовать возможностями физического движка и добавили физику взрывов 🙂
Ложка дегтя
Новый контент - это хорошо, но еще надо следить и за производительностью. При тестировании новых кораблей были выявлены просадки FPS. Что весьма логично, ведь общее количество полигонов могло достигать 200 тысяч на экране. И с этим что-то нужно было делать. Мы решили упростить модели кораблей, чтобы более простые использовать в игре, а более детализированные - в предварительном просмотре в магазине. Таким образом, нам удалось уменьшить количество полигонов у каждого корабля с 4-8 тысяч до 1-2 тысячи.
Было - Стало.
Это не реклама, но в упрощении моделей очень помогла программа Polygon Cruncher. Она имеет триал-версию на 7 дней, но если программу не закрывать, то можно продлить этот период 😃
Итого, общее количество полигонов удалось снизить с 200 тысяч до 60 тысяч на экране! Это превосходный результат!
Мы также немного поработали над тем, чтобы уменьшить визуальное подёргание камеры и кораблей игрока:
Код движения камеры перенесли в метод LateUpdate, а у кораблей в компоненте Rigidbody поменяли свойство Interpolate с None на Interpolate.
Сравнить и увидеть разницу можно с предыдущим видео
Itch.io
Мы решили опробовать новую платформу и опубликовали веб-версию игры. Для этого нам пришлось немного переделать интерфейс и добавить поддержку клавиатуры.
Альбомная ориентация экрана
Для всех желающих - вот ссылка на веб версию
Конечно, не обошлось без ошибок. После релиза на itch.io выяснилось, что весь прогресс игрока пропадает после публикации новой версии игры.
Дорогие инди-разработчики! Не используйте PlayerPrefs для WebGL. Под капотом оно сделано так, что Вы имеете доступ к PlayerPrefs, пока у Вас постоянная ссылка на сборку. На Itch.io при добавлении новой версии, сборка размещается в новой подпапке, что создает новую область для PlayerPrefs и считать старые значения будет уже невозможно.
Для исправления бага нам пришлось разработать сохранение данных в файл, причем со своими нюансами. Данные файла и PlayerPrefs хранятся в IndexedDB, после записи файла нужно правильно выполнить сохранение в БД. Вот такие костыли 😔 Надеюсь, это поможет сэкономить кому-то время.
Чтобы "триггернуть" сохранение в БД, нужно явно вызвать метод сохранения в PlayerPrefs
Главное - удалось исправить ошибки, пусть на это и было потрачено несколько дней.
На этом статья заканчивается. Надеюсь, было интересно! Впереди еще больше контента, пишите комментарии, замечания, отзывы - мы рады всем!
А для тех, кто дочитал до конца - #комплиментдня
Разработка игры и подготовка материала занимает много времени. Но всё это сделано не зря, если в игру поиграл ты - мой самый требовательный игрок
UPD:
Поправили кусок кода сохранения в файл -> pastebin.com