Unity 3D Web Player на Linux через Pipelight

Источник: habrahabr
Arkham

Думаю, многие задавались вопросом, существует ли рабочий порт Unity 3D Web player под Linux. К сожалению, официально эта платформа (на данный момент) не поддерживается, и веб-плагин работает только под Windows/Mac OS. Некоторые для решения этой проблемы использовали связку Wine + Firefox for Windows + Unity 3D WP for Windows. Однако эта связка работает нестабильно, и существуют проблемы с зацикленным обновлением Unity 3D WP. Сегодня мы рассмотрим более функциональное решение с использованием браузеров под Linux, а сделаем мы это с помощью Pipelight.

Что такое Pipelight?


Pipelight - это враппер Windows NPAPI для Windows плагинов (Unity 3D WP, Silverlight, Flash и т.д.), позволяющий использовать эти плагины в натив-Linux браузерах. Pipelight состоит из двух частей: Linux библиотеки, которая подгружается браузером, и Windows программы, стартующей в Wine. Windows программа эмитирует Win-браузер и подгружает Win-DLL необходимого плагина. Когда вы открываете веб-страницу, которой требуется этот плагин, библиотека посылает все запросы с Linux-браузера через туннель в Windows-процесс, образуя некий "мост" между браузером и плагином. Более подробную информацию можно найти здесь (англ.) .

Установка


Я устанавливал и тестировал Pipelight под Kubuntu 13.10 и Firefox 28. Соответственно, буду описывать процесс под неё, но ваша система и браузер могут отличаться (также поддерживаются: Debian, Arch Linux, openSUSE, Fedora 18/19/20, AVLinux, Slackware, CentOS 6, SteamOS, Mageia 4… и кастомные дистрибутивы).

Установка очень проста и осуществляется всего в несколько шагов, необходимые Wine библиотеки подтянуться сами:
# Добавляем ppa репозиторий: sudo add-apt-repository ppa:pipelight/stable # Устанавливаем пакет: sudo apt-get update sudo apt-get install --install-recommends pipelight-multi # И тут же обновляем: sudo pipelight-plugin --update

Обращу ваше внимание на то, что новая версия пакета называется "pipelight-multi", а не "pipelight", который перешёл в состояние deprecated.
Также из-за первоначальной направленности на Silverlight, Pipelight может вытянуть шрифты, которые защищены лицензией Microsoft. В этом случае вам придётся принять лицензионное соглашение. Впрочем, у меня оно не запрашивалось даже после включения Silverlight'a.

Теперь, включаем поддержку Unity:
sudo pipelight-plugin --enable unity3d

Жмём [Y], после этого запустится Wine приложение, ждём его загрузки, перезагружаем браузер - всё, готово!

Вы также можете включить другие плагины, которые поддерживаются Pipelight (Silverlight или например Flash, так как Linux версия отстаёт от Win):
# Silverlight sudo pipelight-plugin --enable silverlight # Silverlight 5.0 sudo pipelight-plugin --disable silverlight --enable silverlight5.0 # Flash sudo pipelight-plugin --enable flash

Не работает!


Если установка прошла успешно, но Unity Web приложение отказывается грузиться на странице, то, скорее всего, в него встроена проверка User Agent'a, отсекающая не Win/Mac OS системы.
Проблема решается довольно просто.

Устанавливаем один из рекомендованных плагинов (за совместимость с другими плагинами разработчики не ручаются) для быстрой смены юзер агента:

Chrome:
1. Устанавливаем плагин - chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg
2. Для Unity 3D выбираем "Safari / Mac OS X"
3. Для Silverlight - "Windows Firefox 15".

Firefox:
1. Устанавливаем плагин - addons.mozilla.org/en-US/firefox/addon/user-agent-overrider
2. Открываем настройки плагина и дописываем следующие строки:
Firefox 15/Windows: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1 Safari/OSX: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10
3. Для Unity 3D выбираем "Safari/OSX"
4. Для Silverlight - "Firefox 15/Windows".

Всё равно не работает!


Если все работало хорошо, а потом внезапно перестало, попробуйте очистить home папку pipelight:
rm -rf ~/.wine-pipelight/

Загляните в официальный FAQ (англ.) и баг трекер.
Для дистрибутивов отличных от Ubuntu может потребоваться пересобрать специальные Wine пакеты, подробности - тут (англ.) .

Известные проблемы с Unity 3D WP


Pipelight поддерживает большинство Unity Web приложений, однако в некоторых возникают проблемы, над которыми разработчики работают (по их заверениям):

1. Остановка загрузки файла посередине. Решается перезагрузкой страницы: загрузка не обрывается, начинается докачка оставшейся части файла.
2. Постоянно зажатая клавиша левой стрелки (left arrow key). Решается либо перезагрузкой страницы, либо является неразрешимой проблемой для конкретного приложения.
3. Конкретное приложение не запускается вообще. К сожалению, встречается с шансом примерно 1 к 20.

Выводы и P.S.


Pipelight позволяет легко и быстро насладиться Unity 3D Web приложениями в вашем любимом Linux дистрибутиве.
Конечно, это не совсем полноценная работоспособность "как от производителя", но намного легче по ресурсам, чем параллельная VM машина, стабильнее чем Wine, и гораздо лучше, чем ничего :-)

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=36446