Skip to content
Powrót do bloga
Minecraft w Przeglądarce z prismarine-web-client

Minecraft w Przeglądarce z prismarine-web-client

ice
ice
@ice
Updated
2 wyświetleń
TL;DR:prismarine-web-client to otwartoźródłowy klient Minecrafta działający w przeglądarce, który łączy się z rzeczywistymi serwerami za pośrednictwem proxy WebSocket. Zbudowany na mineflayer i prismarine-viewer, działa w Chrome lub Firefox bez konieczności instalacji gry.
<! - gh-polish-start - >
GitHub - Projekt społeczności Minecraft

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

Klient Minecrafta działający w przeglądarce

Obserwuj na GitHub ↗
⭐ 539 gwiazdek💻 JavaScript📄 MIT
<! - gh-polish-end - >

Chciałeś kiedyś dołączyć do serwera Minecrafta ze szkolnego Chromebooka, pożyczonego laptopa lub jakiegokolwiek urządzenia bez zainstalowanej gry? prismarine-web-client rozwiązuje dokładnie ten problem. Uruchamia rzeczywisty klient Minecrafta wewnątrz karty przeglądarki i łączy się z rzeczywistymi serwerami Minecraft, bez konieczności instalacji na komputerze gracza.

Co to jest prismarine-web-client

To nie jest uproszczony klon 2D ani jakaś przybliżona wersja Minecrafta z czasów Flash'a. To rzeczywisty klient działający w przeglądarce, zbudowany na dwóch ugruntowanych bibliotekach PrismarineJS - mineflayer obsługuje protokół Minecrafta i logikę klienta, a prismarine-viewer renderuje świat 3D. Razem tworzą coś, co naprawdę działa.

Projekt ma 539 gwiazdek na GitHub'ie i licencję MIT, co oznacza, że jest darmowy do użytku, forków i modyfikacji w dowolny sposób. Napisany jest w JavaScripcie, co jest jednym z powodów, dla których uruchomienie go w przeglądarce jest w ogóle możliwe. Ekosystem PrismarineJS istnieje od lat i napędza wiele narzędzi automatyzacyjnych społeczności i botów, więc to nie jest weekend eksperymentu z zepsutym łańcuchem zależności.

Istnieje demo na żywo hostowane na GitHub Pages. Otwórz go teraz w Chrome lub Firefox na pulpicie i połącz się z serwerem bez niczego instalowania. To najprostszy przypadek użycia i szczerze mówiąc dobry sposób na zrozumienie, z czym masz do czynienia, zanim zaimplementujesz własny hosting.


Technologia za Tym - I Dlaczego to Sprytne

Tutaj robi się naprawdę interesująco. Protokół Minecraft'a działa na TCP, a przeglądarki po prostu nie mogą otworzyć surowych gniazd TCP. Jak więc klient oparty na przeglądarce łączy się w ogóle z rzeczywistym serwerem Minecraft'a?

Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy
Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy

Odpowiedź to warstwa proxy, którą pakiet uruchamia lokalnie. Twoja przeglądarka łączy się z tym proxy za pośrednictwem WebSocket'a. Proxy następnie tłumaczy ten ruch WebSocket'a na TCP i przesyła wszystko na docelowy serwer Minecraft'a. Z perspektywy serwera, to po prostu kolejny klient łączący się normalnie. Nie ma pojęcia, że robisz to z karty przeglądarki.

Ta architektura jest sprytna, ponieważ kod klienta uruchamia się głównie w twojej przeglądarce (logika mineflayer'a, renderowanie 3D), podczas gdy proxy obsługuje jedną rzecz, którą przeglądarki fundamentalnie nie mogą robić. To czysty podział. Proxy jest lekkie i dołączone do pakietu npm, więc nie ma nic dodatkowego do konfigurowania oddzielnie.

Warto zauważyć: ktoś musi uruchamiać to proxy gdzieś. Demo hostowane ma je uruchomione po stronie serwera. Dla samodzielnego hostingu, uruchamia się na twoim komputerze.


Konfiguracja Samodzielnie

Jeśli masz zainstalowany Node.js, cała konfiguracja zajmuje około minuty. Zainstaluj pakiet globalnie i go uruchom:

Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy
Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy
<! - gh-code-start - >
code
npm install -g prismarine-web-client
prismarine-web-client
<! - gh-code-end - >

Następnie otwórz http://localhost:8080 w przeglądarce. Zobaczysz ekran połączenia z prośbą o adres serwera i nazwę użytkownika. Wpisz je i kliknij połącz.

Kilka rzeczy do zrozumienia zanim zaczniesz. To uruchamia serwer proxy na twoim komputerze. Każdy na tym komputerze może go używać przez localhost, ale nie będzie dostępny dla innych, chyba że otworzysz port. Jeśli chcesz podzielić się nim z przyjaciółmi w tej samej sieci lokalnej, będziesz musiał powiązać swój adres IP LAN i pozwolić im na połączenie się z adresem twojej maszyny na porcie 8080. Możliwe, ale wymaga podstawowej wiedzy sieciowej.

Do programowania lub jeśli chcesz wgłębić się w kod, sklonuj repozytorium i uruchom:

<! - gh-code-start - >
code
npm install
npm start
<! - gh-code-end - >

To uruchamia express i webpack w trybie obserwacji. Zapisz plik, przebudowuje się w kilka sekund, i odświeża, aby zobaczyć zmiany. Projekt także wyeksponuje kilka przydatnych zmiennych globalnych na obiekcie window do debugowania, w tym bot, viewer i worldView. Jeśli otworzysz Chrome DevTools i wpiszesz bot.chat('test') w konsoli, możesz używać czatu w grze bezpośrednio stamtąd. To miły szczegół dla każdego, kto chce eksperymentować i zobaczyć, jak wszystko działa.


Co Działa Teraz

Wersja 1.6.0 dobrze obsługuje główną pętlę eksploracji. Bloki renderują się prawidłowo, ruch działa w czasie rzeczywistym, moby i inni gracze się pojawiają, i możesz umieszczać i niszczyć bloki. Do zwykłej eksploracji lub lekkiej budowy bez pełnego klienta Java, to naprawdę funkcjonalne.

Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy
Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy

Czego jeszcze nie ma: zarządzanie ekwipunkiem, skrzynie i kontenery, dźwięki i większość interakcji bojowych. Mapa drogowa projektu wymienia wszystko to jako zaplanowane. Jeśli więc wyobrażasz sobie pełną grę survival z craftem, zaklęciami i handlem wieśniakami, wersja 1.6.0 tego nie obejmie.

To nie jest krytyka. Renderowanie świata Minecraft'a w czasie rzeczywistym wewnątrz karty przeglądarki, połączonej z aktywnym serwerem, jest samo w sobie technicznie imponujące. Różnica między "działającym klientem eksploracji" a "pełną parytetą klienta Java" jest ogromna, a to, co dostarczyli, jest solidne dla tego, co zamierzali osiągnąć.

Jedno praktyczne zastosowanie, gdy jesteś już w trybie przeglądarki: jeśli napotkasz bloki, których nie rozpoznajesz, narzędzie wyszukiwania bloków na Minecraft.How jest przydatne do szybkich wyszukań bez konieczności przełączania się na inną aplikację.


Pułapki, Na Które Się Natkniesz

Kompatybilność wersji to największa pułapka. prismarine-web-client pracuje z konkretnymi wersjami protokołu Minecraft'a poprzez warstwę mineflayer'a poniżej. Jeśli serwer, do którego się łączysz, uruchamia wersję, która nie jest obsługiwana, otrzymasz błąd połączenia bez wyraźnego wyjaśnienia. Sprawdź GitHub projektu, aby zobaczyć, które wersje bieżące wydanie obsługuje, ponieważ ta lista zmienia się, gdy zespół PrismarineJS aktualizuje obsługę protokołu.

Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy
Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy

Kilka innych powszechnych problemów, o których warto wiedzieć z góry:

  • Uwierzytelnianie serwera premium. Serwery online-mode (te, które weryfikują twoje konto w stosunku do Mojang/Microsoft) są bardziej złożone do połączenia poprzez tę konfigurację. Demo i większość samodzielnie hostowanych wdrożeń pracuje czystością na serwerach offline-mode, gdzie wybierasz dowolną nazwę użytkownika i łączysz się bezpośrednio.
  • Wydajność na zatłoczonych obszarach. To rzeczywisty renderer 3D działający w karcie przeglądarki. Gęsty teren, duża liczba jednostek i zatłoczone serwery będą bardziej obciążać CPU twojej przeglądarki niż otwarte obszary z kilkoma jednostkami.
  • Tylko przeglądarki na komputerze stacjonarnym. Chrome i Firefox na komputerze stacjonarnym to potwierdzone platformy. Wsparcie dla przeglądarek mobilnych nie istnieje, a biorąc pod uwagę złożoność schematu sterowania i wymagania renderowania, nie będzie go wkrótce.
  • Utrzymuj proxy w działaniu. Jeśli samodzielnie hostujesz i proces się zamknie, strona przeglądarki nie może się połączyć z niczym. Jeśli używasz tego regularnie, skonfigurowanie go jako trwałej usługi w tle jest warte dodatkowego kroku.

Jedna rzecz, którą źle zrozumiałem przed wypróbowaniem: założyłem, że to działa tylko z małymi serwerami LAN lub osobistymi. Łączy się z dowolnym serwerem, do którego proxy może się dotrzeć przez TCP, łącznie z większymi publicznych serwerami, o ile wersja Minecraft'a się zgadza i uwierzytelnianie nie stanowi problemu.


Czy Warte Poświęcania Czasu?

To zależy całkowicie od tego, do czego ci to potrzebne. Jako rozwiązanie "graj w Minecraft'a wszędzie bez instalacji klienta", działa w ramach swoich obecnych limitów. Eksploracja i podstawowa interakcja blokami są rzeczywiście użyteczne. Pełny tryb survival, jeszcze nie.

Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy
Karta przeglądarki wyświetlająca świat Minecraft 3D renderowany przez prismarine-web-client z blokami i jednostkami graczy

Dla administratorów serwerów chcących lekki sposób wskoczenia na swój serwer z maszyny bez zainstalowanej gry, to jest naprawdę dość praktyczne. Bez launchera, bez pytania o konto na serwerach offline-mode, po prostu otwórz przeglądarkę i połącz się. Sprawdzanie, czy budowa wygląda dobrze, czy też czy moby spawnują się prawidłowo, nie wymaga pełnego doświadczenia klienta.

A gdy już jesteś w przeglądarce, jeśli szukasz skórki do użycia na serwerze, przeglądarka skórek na Minecraft.How ma solidną kolekcję do przeglądania.

Główne alternatywy warte poznania: Eaglercraft to najbardziej rozpoznany projekt Minecraft'a w przeglądarce, chociaż ma swoją własną historię i pytania dotyczące kompatybilności wokół niego. Aby czystego przeglądania świata bez grania, prismarine-viewer jako samodzielna biblioteka jest warte poznania oddzielnie. A mineflayer, na którym ten projekt się buduje, jest wyborem do skryptowania botów Minecraft'a zamiast ręcznej gry.

Dla projektu open-source z licencją MIT robiącego coś tak technicznie interesującego, 539 gwiazdek wydaje się, że lata pod radarami. Jeśli przypadek użycia pasuje, pięć minut na wypróbowanie to dobrze spędzony czas.

<! - gh-polish-start - > <! - gh-polish-end - >