Pull to refresh

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

Reading time4 min
Views67K

Здравствуй, Хабрасообщество. Думаю, многие задавались вопросом, существует ли рабочий порт 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 пакеты, подробности — тут (англ.).

Всё сломалось после обновления браузера!


Попробуйте отключить и заново включить плагины, а так же выполнить команду:

sudo pipelight-plugin --create-mozilla-plugins


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


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

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

Выводы и P.S.


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

P.S. Буду рад любой конструктивной критике касательно поста, пожеланиям, а также указаниям на ошибки, оговорки и опечатки в личку.
Tags:
Hubs:
+16
Comments19

Articles