WarCraft 3 Web - работа над ошибками
Всем доброго дня! Недавно рассказывал здесь о переносе классической WarCraft 3: The Frozen Throne 1.26a в браузер.
Первый блин, как говорится, вышел комом. Было много багов и недочетов. Первая версия, можно сказать, вышла неиграбельной без полной предварительной загрузки. Но проделанная работа решает эти проблемы.
▶ Опробовать можно тут
Запись примера запуска игры без предварительной загрузки (запись экрана без звука, но в игре он есть):
Ниже будет описание решения каждой из значимых проблем.
Раздельные лобби для языков
Было ошибкой делать разные лобби для игроков, которые выбрали разные языки в игре. Теперь лобби общие. Вне зависимости от выбора локализации игры, игроки будут добавляться в первую по списку свободную лобби.
Низкая скорость загрузки
Скорость загрузки была поправлена с помощью банальной смены железа, на которой развернут сервис. Переход с HDD на SDD улучшил ситуацию.
Фризы и непрогруженные звуки
Перекомпилировання версия продолжала использовать логику, что она может читать файлы с диска. И игра честно ждала загрузку каждого файла в кэш. И мне сначала показалась неплохой идея вынести логику загрузки необходимых аудиофайлов (так как они достаточно много весят) в отдельный асинхронный процесс.
Как показала практика, идея была плохой. Фризы не ушли, так как игра продолжает подгрузку других ресурсов, а асинхронная загрузка просто привела к исчезновению аудио. Реплики подгружались не сразу, фоновая музыка начинала играть с задержкой.
Главным решением конечно было просто предварительно загрузить всё в кеш. Но хотелось добиться, чтобы можно было начать играть без предварительной загрузки файлов. Для решения сначала была реализована пакетная загрузка файлов. Собираем все файлы, которые нужны одновременно для сцены, и загружаем не по одному, а несколько параллельно. Но этого было далеко недостаточно.
Хорошо ситуация изменилась, когда были введены две очереди загрузки: очередь файлов, которые вот прямо сейчас нужны игровому перекомпилированному движку и очередь фоновой загрузки. Пока вы в главном меню игры или ждете какой-то загрузки игра в фоне догружается, но эта загрузка не мешает, если вы создали игру и начали играть. Схема получилась примерно такой:
Но всё ещё главным советом остается предварительно загружать файлы кеша через настройки на сайте)
Прочите изменения
Уменьшен размер WASM
Исправлены ошибки, возникающие, когда один игрок резко закрывает игру в матче
Исправлены ошибки рендера графики
Улучшена стабильность работы на macOS, iOS (играть удобнее с компьютера, так как нужна мышка)
Всем удачи и приятной игры!



не знаю как вам это удалось.. никто из близзард не смог сделать, но ваш варкрафт не лагает при отображении меню на моём эйре!