Skip to content
Перейти к содержимому
Вернуться в блог
Играйте в Minecraft в браузере с prismarine-web-client

Играйте в Minecraft в браузере с prismarine-web-client

Alexandru Maftei
Alexandru Maftei
@ice
Обновлено
43 просмотров
Быстрый ответ:prismarine-web-client запускает настоящий клиент Minecraft прямо в браузере и подключается к реальным серверам без установки игры на устройстве. Под капотом работает локальный прокси, который переводит WebSocket-трафик браузера в обычный TCP.
TL;DR:prismarine-web-client - это открытый исходный код браузерного клиента Minecraft, который подключается к реальным серверам через WebSocket прокси. Построенный на mineflayer и prismarine-viewer, он работает в Chrome или Firefox без необходимости установки игры.
GitHub - Minecraft проект сообщества

prismarine-web-client (PrismarineJS/prismarine-web-client)

Клиент Minecraft для запуска в браузере

Звезда на GitHub ↗
⭐ 539 звёзд💻 JavaScript📄 MIT

Хотели ли вы когда-нибудь присоединиться к серверу Minecraft со школьного Chromebook, заимствованного ноутбука или любого устройства без установленной игры? prismarine-web-client решает именно эту проблему. Он запускает настоящий клиент Minecraft в вкладке браузера и подключается к реальным серверам Minecraft, без локальной установки со стороны игрока.

Что такое prismarine-web-client

Это не упрощённый 2D клон и не какая-то аппроксимация Minecraft эпохи Flash. Это подлинный браузерный клиент, построенный на двух хорошо зарекомендовавших себя библиотеках PrismarineJS: mineflayer обрабатывает протокол Minecraft и логику клиента, а prismarine-viewer отображает 3D мир. Вместе они создают что-то, что действительно работает.

Проект имеет 539 звёзд на GitHub с лицензией MIT, что означает, что вы можете свободно использовать, форкировать и изменять его как угодно. Он написан на JavaScript, что является одной из причин, почему запуск его в браузере вообще возможен. Экосистема PrismarineJS существует уже много лет и питает множество инструментов автоматизации сообщества и ботов, поэтому это не какой-то выходной проект с разломанной цепочкой зависимостей.

На GitHub Pages размещена живая демонстрация. Откройте её в Chrome или Firefox на рабочем столе прямо сейчас и подключитесь к серверу без установки чего-либо. Это самый простой вариант использования, и честно говоря, хороший способ понять, с чем вы имеете дело, перед тем как беспокоиться о самостоятельном размещении.


Технология под капотом (и почему это умно)

Вот где становится по-настоящему интересно. Протокол Minecraft работает через TCP, а браузеры просто не могут открывать сырые сокеты TCP. Так как же браузерный клиент вообще может подключиться к реальному серверу Minecraft?

Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков
Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков

Ответ - слой прокси, который запускается локально. Ваш браузер подключается к этому прокси через WebSocket. Затем прокси переводит этот трафик WebSocket в TCP и перенаправляет всё на целевой сервер Minecraft. С точки зрения сервера, это просто очередной клиент, подключающийся обычным образом. Он не знает, что вы делаете это из вкладки браузера.

Эта архитектура умна, потому что большая часть кода клиента работает в вашем браузере (логика mineflayer, 3D рендеринг), а прокси обрабатывает единственное, что браузеры принципиально не могут делать. Это чистое разделение. Прокси легковесен и поставляется с npm пакетом, поэтому нечего дополнительно настраивать отдельно.

Стоит отметить: кто-то должен запустить этот прокси где-нибудь. В размещённой демонстрации есть прокси-сервер на стороне сервера. Для самостоятельного размещения он работает на вашей машине.


Установка самостоятельно

Если у вас установлен Node.js, вся установка займёт около минуты. Установите пакет глобально и запустите его:

Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков
Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков
code
npm install -g prismarine-web-client
prismarine-web-client

После этого откройте http://localhost:8080 в браузере. Вы увидите экран подключения, запрашивающий адрес сервера и имя пользователя. Введите их и нажмите подключиться.

Есть несколько вещей, которые нужно понять перед началом. Это запускает прокси-сервер на вашей локальной машине. Любой на этой машине может использовать его через localhost, но он не будет доступен другим, если вы не откроете порт. Если вы хотите поделиться им с друзьями в локальной сети, вам нужно привязать адрес к вашему IP локальной сети и попросить их подключиться к адресу вашей машины на порту 8080. Возможно, но требует базовых знаний сетей.

Для разработки или если вы хотите разобраться в коде, клонируйте репозиторий и запустите:

code
npm install
npm start

Это запускает express и webpack в режиме отслеживания. Сохраните файл, он пересоберётся за несколько секунд, и вы обновляете страницу, чтобы увидеть изменения. Проект также предоставляет несколько полезных глобальных переменных на объекте window для отладки, включая bot, viewer и worldView. Если вы откроете DevTools Chrome и введёте bot.chat('test') в консоль, вы можете использовать внутриигровой чат прямо оттуда. Это приятный штрих для тех, кто хочет разобраться в том, как всё работает.


Что работает прямо сейчас

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

Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков
Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков

Чего ещё нет: управление инвентарём, сундуки и контейнеры, звуки и большинство боевых взаимодействий. В дорожной карте проекта всё это указано как планируемое. Так что если вы представляете себе полный выживаемый геймплей с крафтом, чарованием и торговлей жителями, версия 1.6.0 это не покроет.

Это не критика. Отображение мира Minecraft в реальном времени в вкладке браузера, подключённого к живому серверу, само по себе технически впечатляет. Разрыв между "рабочим клиентом исследования" и "полной паритетностью с Java клиентом" огромен, и то, что они отправили, твёрдо для того, что они ставят перед собой.

Одно практическое использование, пока вы уже в режиме браузера: если вы столкнётесь с блоками, которые не узнаёте, инструмент поиска блоков на Minecraft.How полезен для быстрого поиска без необходимости переключаться на другое приложение.


Что вас может потрясти

Совместимость версий - это самая большая проблема. prismarine-web-client работает со специфическими версиями протокола Minecraft через слой mineflayer снизу. Если сервер, к которому вы подключаетесь, работает на версии, которая не поддерживается, вы получите ошибку подключения без чёткого объяснения. Проверьте GitHub проекта, какие версии поддерживает текущий релиз, потому что этот список меняется по мере того, как команда PrismarineJS обновляет поддержку протокола.

Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков
Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков

Несколько других распространённых проблем, которые стоит знать заранее:

  • Аутентификация на премиум-серверах. Серверы в онлайн-режиме (те, которые проверяют вашу учётную запись в Mojang/Microsoft) более сложны для подключения через эту настройку. Демонстрация и большинство самостоятельно размещённых развёртываний работают чище с офлайн-серверами, где вы выбираете любое имя пользователя и подключаетесь прямо.
  • Производительность в занятых местах. Это настоящий 3D рендер, работающий в вкладке браузера. Плотная местность, большое количество сущностей и переполненные серверы заметно нагружают процессор браузера сильнее, чем открытые площади с несколькими сущностями.
  • Только браузеры на рабочем столе. Chrome и Firefox на рабочем столе - это подтвержденные платформы. Поддержка мобильного браузера отсутствует, и учитывая сложность схемы управления и требования к рендерингу, она не появится в ближайшее время.
  • Держите прокси в работе. Если вы самостоятельно размещаете и процесс падает, страница браузера не может ни к чему подключиться. Если вы регулярно используете это, настройка его как постоянного фонового сервиса стоит дополнительного шага.

Одно, в чём я ошибался раньше при попытке: я предполагал, что это работает только с крошечными локальными или личными серверами. Он подключается к любому серверу, который прокси может достичь через TCP, включая более крупные публичные, если версия Minecraft совпадает и аутентификация не является препятствием.


Стоит ли вашего времени или нет

Это полностью зависит от того, что вам это нужно. Как решение "играйте в Minecraft где угодно без установки клиента", оно работает в пределах своих текущих ограничений. Исследование и базовое взаимодействие с блоками действительно используемы. Полный режим выживания, пока нет.

Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков
Вкладка браузера с 3D миром Minecraft, отображаемым prismarine-web-client, с блоками и сущностями игроков

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

И пока вы уже в браузере, если вы ищете скин для использования на сервере, браузер скинов на Minecraft.How имеет хорошую коллекцию для исследования.

Основные альтернативы, о которых стоит знать: Eaglercraft - самый известный браузерный проект Minecraft, хотя вокруг него есть своя история и вопросы совместимости. Для чистого просмотра мира без игры стоит отдельно знать prismarine-viewer как отдельную библиотеку. И mineflayer, на котором построен этот проект, это инструмент для создания скриптов ботов Minecraft, а не для ручной игры.

Для проекта с открытым исходным кодом, лицензированного MIT и делающего что-то технически столь интересное, 539 звёзд кажется, что он остаётся под радаром. Если вариант использования подходит, пять минут, чтобы его попробовать, потрачены хорошо.

Об авторе
Alexandru Maftei
Alexandru MafteiВедущий автор

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

Поделитесь с друзьями!

Часто задаваемые вопросы

Как установить и запустить prismarine-web-client?
Установите пакет командой npm install -g prismarine-web-client, затем запустите prismarine-web-client. Откройте http://localhost:8080 в браузере, введите адрес сервера и имя пользователя и нажмите подключиться.
Зачем браузерному клиенту Minecraft нужен прокси?
Браузеры не умеют открывать сырые TCP-сокеты, а протокол Minecraft работает именно через TCP. Прокси принимает WebSocket-соединение от браузера и переводит его в TCP. Для сервера это выглядит как обычный клиент.
Можно ли попробовать prismarine-web-client без установки?
Да. На GitHub Pages есть живая демонстрация. Откройте её в Chrome или Firefox на рабочем столе и подключитесь к любому серверу прямо оттуда, ничего не устанавливая.
Что работает в prismarine-web-client, а чего пока нет?
Блоки отображаются корректно, движение работает в реальном времени, мобы и другие игроки видны, блоки можно ставить и разбивать. Инвентарь, сундуки, звуки и большинство боевых взаимодействий пока не реализованы.
На каких технологиях основан prismarine-web-client?
Клиент построен на двух библиотеках PrismarineJS: mineflayer обрабатывает протокол Minecraft и логику клиента, а prismarine-viewer отрисовывает 3D-мир. Весь код написан на JavaScript, лицензия MIT.
Можно ли поделиться prismarine-web-client с друзьями в локальной сети?
Можно, но потребуются базовые знания сетей. Нужно привязать прокси-сервер к IP-адресу вашей машины в локальной сети, и тогда другие смогут подключиться к вашей машине на порту 8080.

Комментарии

Пока нет комментариев. Станьте первым, кто поделится своим мнением!

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy