Quake II портировали в веб-браузер с поддержкой технологий HTML5 и Javascript

3/04/2010 10:11

В рамках проекта GWTQuake несколько разработчиков компании Google портировали игру Quake II на Javascript и технологии HTML5, такие как WebGL и элемент Canvas для рендеринга графики, WebSocket для работы в сети, Storage API для локального хранения данных, тэг "audio" для вывода звука. Игра была представлена вчера под видом шутки, но суть розыгрыша была в том, что проект оказался реальным.
В качестве основы для GWTQuake был использован код проекта Jake2, в рамках которого ранее был создана реализация игры Quake II полностью переписанная на языке Java и запускалась на ОС Android. Для преобразования Java-кода в веб-приложение, разработчики использовали инструментарий Google Web Toolkit (GWT), предназначенный для разработки динамических веб-приложений на языке Java, которые затем при помощи специального транслятора преобразуются в представление на базе JavaScript и HTML (GWT использован при разработке таких сервисов, как Google Maps и Gmail).
Для организации вывода 3D-графики OpenGL-вызовы преобразованы в поддерживаемое некоторыми браузерами WebGL-представление, что дает возможность организовать рендеринг аппаратно ускоренного 3D контента без привлечения сторонних плагинов, используя только HTML5-конструкцию "Canvas" и специальный JavaScript API. Для организации многопользовательской сетевой игры, базирующийся на UDP протокол Quake реализован при помощи разработанного в Google JavaScript API WebSocket, позволяющего организовать двунаправленный обмен данными между веб-приложением и сервером. Для сохранения настроек и записи текущего состояния игры была сэмулирована файловая система при помощи Storage API, который поддерживает хранение данных на локальной системе в формате ключ/значение.
В настоящий момент запустить игру можно только в тестовых версиях веб-браузера Chromium, запущенного с опцией "--no-sandbox" (модель безопасности Chromium ощутимо замедляет вывод графики) и одной из последних ночных сборок Webkit. Что касается поддержки Firefox, то разработчики сообщают, что принципиальных проблем нет, в тестовых версиях Firefox поддерживается Canvas 3D и WebGL, но производительность JavaScript-движка Firefox в настоящее время не может обеспечить приемлемую для игры частоту кадров (в WebKit на MacBook и MacBook Pro удалось достичь 20-25 и 40-45 FPS).
Источник