Unreal Tournament — игра, которая не нуждается в представлении. Как несложно догадаться, она была выпущена в 1999 году и стала одним из величайших представителей мультиплеерных шутеров. Она по праву стоит на пьедестале рядом с HLDM, CS и Quake 3. В неё играли по всему миру, и она была особенно популярна в России.
Unreal Tournament DeathMatch
UT99 в браузере запустили довольно давно: Ryan C. Gordon в 2017 году выложил веб-версию в публичный доступ. В те времена он работал в офисе Epic, и они дали ему разрешение опубликовать этот билд, но только в виде WASM, без исходного кода.
Первый билд UT99/web
Я, конечно же, ничего об этом не знал, а вот мой товарищ по команде DosZone, Никита Аксенов, всегда чётко следит за новыми релизами в браузере. Именно он предложил мне 23 декабря 2024 года запустить UT99 на портале — и не просто так, а сразу в мультиплеерном режиме.
Я мысленно покрутил пальцем у виска и сказал «обязательно, но потом». В самом деле, есть только бинарник, который не то что сетевую часть не поддерживает — он вообще через раз работает. Попробуйте на сайте icculus: какую кнопку ни нажми — он падает.
К тому же бинарник собран без поддержки try/catch. То есть он падает даже на обрабатываемых исключениях, которые вообще-то являются нормальной частью выполнения программы.
К слову, я хотел пойти простым путём: спросить у Ryan, может ли он пересобрать бинарник с поддержкой try/catch. Он общался очень дружелюбно, но почему-то быстро перестал отвечать.
В общем, я про это дело забыл, но Ник — нет. Примерно через неделю или месяц он разобрался, как именно нужно запускать этот веб-билд, чтобы он не падал. То есть условно мы могли запустить любую карту в любом режиме с ботами, но только через консоль, потому что UI по-прежнему падал на любой чих.
UT99
Теперь у нас хотя бы появился шанс запустить UT99 в браузере в режиме тренировок. Но энтузиазма это не прибавило, поскольку мы плотно занимались нашим мультиплеерным хабом, добавляя в него Quake 2/3, Doom и перенося HLDM. Я сам тогда этого не понимал, но разработанная технология сетевых игр сильно приблизила нас к мультиплеерному UT99 в браузере.
Примерно месяц назад я взял все наработки Ника и решил серьёзно засесть за UT99. Чтобы запустить его в сетевом режиме, нам понадобилось:
1. Понять, какие ошибки мешают работать UI.
2. Разобраться, как хостить сервер.
3. Разобраться, как подключаться к серверу.
4. Найти в бинарнике места, куда можно внедриться и подменить весь сетевой слой.
5. Довести игру до ума: добавить мобильное управление, уменьшить размер загрузки, разобраться с режимами, добавить статистику и так далее.
Что бы это сделать пришлось реверс-инжинирить бинарник, ковырять WASM и надеяться на удачу. И у нас получилось — это была невероятная история, о которой я ещё обязательно расскажу подробнее. А сейчас это всего лишь анонс.
Заходите поиграть, релиз сегодня в 17:00.
Ссылка на подключение! (старт в 17:00!)
Наш канал
Титры.
Их разыскивает милиция
Сцена после титров.
Так выглядел первый рабочий билд
Так игра выглядит сейчас
Источник: habr.com