Какие браузеры поддерживают юнити. Включение unity web player в Google Chrome

19.11.2020 0

Помимо обычного «сёрфинга» в интернете (например, обзор сайтов, чтение новостей, проверка/отправка почты) и просмотра/прослушивания онлайн-видео и музыки, юзер также может использовать свой интернет-браузер в качестве «игрового пространства». А благодаря специальному плагину Unity Web Player пользовательский браузер и вовсе способен превратиться в «мультимедийную игровую площадку».

  • 2 Перечень браузеров с поддержкой технологий Unity3D (Unity Web Player)
  • 3 Установка и настройка Unity Web Player для браузера Internet Explorer
  • 4 Установка и настройка Unity Web Player для браузера Mozilla Firefox

    4.1 Браузеры без поддержки технологии Unity3D: как выйти из ситуации

    4.1.1 Видео: как активировать плагин Unity Web Player в браузере Google Chrome через NPAPI

  • 5 Причины прекращения поддержки Unity Web Player
  • Что это такое

    Игровой движок Unity — инструмент, улучшающий воспроизведение сетевых игр. Платформа использовалась для разработки трехмерных игр и приложений. Внимательный читатель подумает. Нужно скачать браузер с поддержкой Unity Web Player. Это не так. Разработчики создали дополнение, помогающее воспроизводить игры в браузере. Unity — плагин, запускающий игровые приложения и проигрывающий масштабированные трехмерные сцены. Дополнительный софт устанавливать не нужно. Используется в соцсетях, для открытия 3D приложений.

    Способ 1. Загрузка EXE-файла

    Чтобы установить приложение Юнайти Web Player для Оперы, выполним следующие шаги.

    • Зайти на официальный сайт разработчика плеера. Нажать на кнопку загрузки.
    • После скачивания, запустить файл «UnityWebPlayer64.exe» из места загрузки.
    • Принять условия лицензии и следовать инструкции установщика для завершения инсталляции.

    Что делать, если тормозит браузер Опера

    • Перезагрузить ПК.

    Приложение устанавливается и внедряется в систему, как кодек. Отображения окна программы или других внешних изменений после инсталляции не последует. Если Опера была открыта во время установки, необходимо перезапустить ее и открыть любимую игру.



    Что сделать в первую очередь

    Описанные действия будут одинаковый для любого обозревателя. Перейдите по адресу: https://unity3d.com/ru/webplayer. Нажмите «Загрузить».

    Нажмите два раза ЛКМ по инсталляционному «exe» файлу. Начнется установка. Согласитесь с лицензией.

    Путь для установки выбирать не нужно.

    Инсталляция пройдет автоматически. Нажмите «Finish».

    Internet Explorer активирует плагин автоматически. Дополнительных настроек не нужно.

    Unity Doorstop

    За внедрение в код Unity отвечает библиотека UnityDoorstop-BSIPA. Она лежит среди файлов BSIPA и написана на чистом C. UnityDoorstop-BSIPA (исходный код) — это тоже форк, оригинальный проект можно найти здесь. Далее для простоты буду вместо UnityDoorstop-BSIPA писать Doorstop. Лозунгом Doorstop является фраза “Run managed code before Unity does!”, что в примерном переводе звучит как “Запускай управляемый код до того, как Unity сможет это сделать”. Напомню, что “управляемый код” — это в нашем случае код C#. Выше мы уже выяснили, что ядро движка Unity написано на C++, а пользовательские скрипты для игровой логики и некоторые части самого Unity — на C#. Значит, Doorstop каким-то образом позволяет нам вмешаться в логику, когда ядро Unity уже загрузилось, а C#-скрипты — еще нет.

    Когда мы запускаем игру на Unity (например, Beat Saber.exe), то в память одной из первых загружается библиотека UnityPlayer.dll. Она прилагается ко всем Unity-играм и отвечает за запуск и выполнение самой игры. У этой библиотеки есть таблица импорта, в которой говорится, что UnityPlayer использует функцию GetProcAddress из библиотеки kernel32.dll. GetProcAddress — это функция WinAPI, которая возвращает адрес функции из определенной библиотеки по ее названию. Я не видел исходного кода Unity, но судя по тому, что я видел в BSIPA и Doorstop, в UnityPlayer должно быть что-то вроде такого:

    mono_dll = LoadLibrary(“Mono.dll”); init_mono = GetProcAddress(mono_dll, ”mono_jit_init_version”); mono = init_mono(…); // дальше используем mono, чтобы загрузить и запустить код игры

    mono_jit_init_version — это функция, которая отвечает за инициализацию и запуск Mono. Подробнее можно прочитать здесь. Doorstop вмешивается в этот процесс. Делается это в два шага.

    Шаг 1. Проксируем GetProcAddress

    Когда библиотека Doorstop.dll загружается в память компьютера, вызывается ее DllMain и, если reasonForDllLoad == DLL_PROCESS_ATTACH, то выполняется код, который в упрощенном виде выглядит так:

    HMODULE targetModule = GetModuleHandleA(«UnityPlayer»); iat_hook(targetModule, «kernel32.dll», &GetProcAddress, &hookGetProcAddress);

    Полный код DllMain, полный код iat_hook

    Этот код находит в памяти уже загруженную библиотеку UnityPlayer.dll, берет ее таблицу импорта (Import Address Table, IAT), находит в ней GetProcAddress из kernel32.dll и заменяет ее на нашу функцию hookGetProcAddress из Doorstop.dll. hookGetProcAddress в упрощенном виде выглядит так:

    void * WINAPI hookGetProcAddress(HMODULE module, char const *name) { if (lstrcmpA(name, «mono_jit_init_version») == 0) { init(module); return (void*)&ownMonoJitInitVersion; } return (void*)GetProcAddress(module, name); }

    Полный код hookGetProcAddress

    Подробнее про IAT Hooking можно прочитать здесь. Получается, что hookGetProcAddress проксирует все вызовы GetProcAddress. Прокси-функция смотрит название функции, которую у нее запрашивают. Если это НЕ mono_jit_init_version, то hookGetProcAddress просто вызывает настоящую GetProcAddress и возвращает то, что у нее попросили, тем самым не мешая нормальной работе. Если у нее запрашивают mono_jit_init_version, то тогда она возвращает переопределенную функцию ownMonoJitInitVersion. Пользуясь случаем, прокси-функция получает указатель на библиотеку, в котором ищется mono_jit_init_version, и берет из нее настоящие функции Mono с помощью GetProcAddress (внутри init(module);):

    /** * brief Loads Mono C API function pointers so that the above definitions can be called. * param monoLib Mono.dll module. */ inline void loadMonoFunctions(HMODULE monoLib) { // Enjoy the fact that C allows such sloppy casting // In C++ you would have to cast to the precise function pointer type #define GET_MONO_PROC(name) name = (void*)GetProcAddress(monoLib, #name) // Find and assign all our functions that we are going to use GET_MONO_PROC(mono_debug_domain_create); GET_MONO_PROC(mono_domain_assembly_open); GET_MONO_PROC(mono_assembly_get_image); GET_MONO_PROC(mono_runtime_invoke); GET_MONO_PROC(mono_debug_init); GET_MONO_PROC(mono_jit_init_version); GET_MONO_PROC(mono_jit_parse_options); GET_MONO_PROC(mono_method_desc_new); GET_MONO_PROC(mono_method_desc_search_in_image); GET_MONO_PROC(mono_method_signature); GET_MONO_PROC(mono_signature_get_param_count); GET_MONO_PROC(mono_array_new); GET_MONO_PROC(mono_get_string_class); GET_MONO_PROC(mono_string_new_utf16); GET_MONO_PROC(mono_gc_wbarrier_set_arrayref); GET_MONO_PROC(mono_array_addr_with_size); GET_MONO_PROC(mono_object_to_string); GET_MONO_PROC(mono_string_to_utf8); GET_MONO_PROC(mono_dllmap_insert); GET_MONO_PROC(mono_free); }

    Шаг 2. Переопределеяем mono_jit_init_version

    ownMonoJitInitVersion сначала вызывает настоящую mono_jit_init_version, чтобы создать Mono. Затем она с помощью Mono загружает сборку IPA.Injector.dll и запускает из нее статический метод Main. В (очень) упрощенном виде код ownMonoJitInitVersion выглядит так:

    void *ownMonoJitInitVersion(const char *root_domain_name, const char *runtime_version) { void *domain = mono_jit_init_version(root_domain_name, runtime_version); // Load our custom assembly into the domain void *assembly = mono_domain_assembly_open(domain, dll_path); // dll_path — это путь к IPA.Inhector.dll // Get assembly’s image that contains CIL code void *image = mono_assembly_get_image(assembly); // Create a descriptor for a random Main method void *desc = mono_method_desc_new(«*:Main», FALSE); // Find the first possible Main method in the assembly void *method = mono_method_desc_search_in_image(desc, image); mono_runtime_invoke(method, NULL, args, &exception); return domain; }

    Полный код ownMonoJitInitVersion

    Мы уже рассмотрели выше, что IPA.Injector содержит код, который внедряет плагины в Beat Saber. После того, как IPA.Injector завершает свою работу, ownMonoJitInitVersion отдает Mono в Unity. Unity даже не в состоянии понять, что что-то было не так. Если б он вызвал настоящую mono_jit_init_version, то он бы получил Mono и начал бы дальше с ним работать. Если Unity запускает переопределенную ownMonoJitInitVersion, то он тоже получает Mono — он просто не в курсе, что этим Mono успели воспользоваться для чего-то еще.

    Обозреватели без поддержки технологии

    Поддерживают Unitu3D браузеры: Internet Explorer, Amigo и Safari. Как запустить в других браузерах. Скачайте и установите старую версию обозревателя. Для:

  • Яндекс.Браузер — до шестнадцатой;
  • До тридцать шестой — Opera;
  • Firefox — до пятидесяти второй;
  • Chrome — до сорок четвертой.
  • Возможные проблемы и пути решения

    К недостаткам дополнения можно отнести отсутствие интеграции с Yandex браузером, Chrome, Orbitum, UC браузером, Maxthone.

    Во всем прочем, это необходимая и простая в установке утилита, позволяющая погрузиться в мир современных интернет-игр с 3D графикой и широким функционалом возможностей. Но без проблема никуда не денешься, и с веб плеером юнити бывают проблемы. Просто не запускается игра, отказывается грузиться в браузере и все. В таких случаях обычно начинаешь расстраиваться.

    Но не стоит отчаиваться. Давайте постараемся решить эти проблемы, если вы конечно же используете браузер который поддерживает технологию unity. В других случаях все ниже перечисленные манипуляции будут тщетны.

    И не забываем, что технологию unity 3dweb player поддерживают только браузеры: Амиго, Firefox, Opera, Internet Explorer и Safari.

  • Проверить корректность времени. Нужно установить в настройках часов ОС автоматически устанавливать время время (Касается Windws 10). Время и дата должны быть правильные.
  • 2. Отключить антивирус. Отключите Ваш антивирус, и расширения в браузере от этого антивируса, в некоторых случаях антивирус мешает нормальной работе юнити плееру.

    3. Нужно удалить Unity 3Dweb Player. Удаляем расширение через Программы и компоненты для windows 7 и Установка и удаление программ для windows 10.

    4. Очистить кэш юнити плеера, сделать это можно через браузер.

    Попадаем в настройки расширения юнити для браузера. далее выбираем «Delete All» и снова выбираете «Delete All» как показано на картинке ниже:

    5. Нужно очистить кэш браузера. Можете зайти сочетанием клавиш Ctrl+Shift+Del, выбрать очистить историю, «за весь период» и нажать очистить. Дождаться очистки и выйти с настроек.

    6. Почистить системные и временные файлы windows с помощью ccleaner.

    Качаем программу CCleaner с офф.сайта:

    Заходим в программу, выбираем Очистка > Windows > Очистка. Можете сначала нажать на Анализ а потом уже на очистку.

    Исправить проблемы с реестром windows. Тем же самым ccleaner нужно устранить проблемы с реестром. Это несколько требование а совет. И возможно не столько действенный способ, как решит некоторые проблемы в windows.

    7. Скачиваем с сайта unity 3d web player и устанавливаем

    Обратите внимание, установку лучше производить в самый последний момент, когда проделаете все шаги выше

    Дистрибутив установки:

    Запускаем игру и наслаждаемся! Должно все работать.

    Давайте подведем итоги. Мы с Вами разобрались, как скачать Unity 3D Web Player для игр Вконтакте, на примере игры Контра Сити. Игрушка популярная и бывают случаи, что не запускается. Но мы теперь знаем, как с этим бороться.

    Надеюсь статья была вам полезна, вы смогли скачать веб плеер юнити, установить, а при возникновении проблем смогли решить их с помощью данного руководства.

    Способ для установки на Firefox

    Если нет желания использовать устаревший обозреватель, существует способ активировать работу плагина. В адресной строке пропишите:

    Далее:

    Пропишите:

    Установите значение как на скриншоте: Активируйте созданный конфигурационный файл. Нажмите на нем два раза ЛКМ. Значение изменится на «True». Перезапустите обозреватель. Плагин будет активироваться автоматически при необходимости.

    Устаревшие версии браузеров с поддержкой Unity

    Ниже представлены популярные браузеры и их последние устаревшие

    на текущий момент версии, которые все еще поддерживали Unity Player. Обновленные версии интернет-обозревателей
    отказались от поддержки Юнити полностью
    .

    Opera

    (версия
    36
    и старее)

    Mozilla Firefox 32 бит

    (до
    52
    версии включительно)

    Google Chrome

    (до
    44
    версии)

    Яндекс.Браузер

    (
    16
    версия и ниже)

    Использовать устаревшие версии браузеров для воспроизведения Юнити-игр не рекомендуется. Главная причина — интернет-обозреватели, не обновленные до актуальных версий, могут иметь уязвимость системы безопасности

    .

    Установка и активация Unity Player в браузере Internet Explorer

    Плагин поддерживается версией браузера Internet Explorer 11. На более ранних версиях, установка не тестировалась.

    Сначала нужно дважды кликнуть мышкой по файлу UnityWebPlayer.exe

    , предварительно скачанному с официального сайта, после чего традиционно принять лицензионное соглашение, а затем завершить установку плагина на компьютер, нажав кнопку «
    Finish
    ».

    В интернет-обозревателе Internet Explorer 11 плагин Юнити Веб Плеер включается автоматически

    , не требуя никаких дополнительных настроек, и даже опций таких в меню браузера не предусмотрено. Все что нужно сделать, это запустить какое-нибудь браузерное 3D-приложение и наслаждаться потрясающей графикой.

    Установка и активация Unity Player в браузере Mozilla Firefox (до 52 версии)

    В популярнейшем браузере Firefox веб-плеер Unity будет отлично работать на версиях до 52. Начиная с 53 версии

    в Mozilla Firefox поддержка всех плагинов NPAPI была удалена.

    Руководство по установке (для версии Firefox 50.0.2)

    Установив плагин на свой компьютер, откройте веб-обозреватель и нажмите на значок с изображением решетки в верхнем правом углу.

    В раскрывшемся меню необходимо выбрать иконку с надписью: «Дополнения»

    , после чего откроется страничка браузера со всеми установленными на нем расширениями и службами. В меню слева выберете опцию:
    «Плагины»
    . Найдите в списке установленных плагинов
    Unity Player
    , наведите курсор мыши на меню справа, и выберите параметр: «Всегда включать». Если по каким-либо причинам вам понадобится отключить плагин Юнити, в том же меню можно выбрать опцию: «Никогда не включать», и плагин будет полностью деактивирован.