Skip to content
Terug naar Blog
Speel Minecraft in je browser met prismarine-web-client

Speel Minecraft in je browser met prismarine-web-client

ice
ice
@ice
Updated
2 weergaven
TL;DR:prismarine-web-client is een open-source browsergebaseerde Minecraft-client die verbinding maakt met echte servers via een WebSocket-proxy. Gebouwd op mineflayer en prismarine-viewer, draait het in Chrome of Firefox zonder dat je het spel hoeft te installeren.
<! - gh-polish-start - >
GitHub - Minecraft-communitaire project

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

Minecraft-webclient draait in je browser

Op GitHub sterren ↗
⭐ 539 sterren💻 JavaScript📄 MIT
<! - gh-polish-end - >

Heb je je ooit willen aansluiten bij een Minecraft-server via een schoolchromebook, een geleend laptop of een willekeurige machine zonder het spel geïnstalleerd? prismarine-web-client lost precies dat probleem op. Het draait een echte Minecraft-client in een browsertabblad en maakt verbinding met echte Minecraft-servers, zonder dat je het lokaal hoeft te installeren.

Wat is prismarine-web-client

Dit is geen vereenvoudigde 2D-kopie of een Minecraft-benadering uit het Flash-tijdperk. Het is een echte browsergebaseerde client gebouwd op twee goed gevestigde PrismarineJS-bibliotheken: mineflayer verwerkt het Minecraft-protocol en clientlogica, terwijl prismarine-viewer de 3D-wereld rendert. Samen maken ze iets wat echt werkt.

Het project staat op 539 sterren op GitHub met een MIT-licentie, wat betekent dat het vrij te gebruiken, forken en naar wens aan te passen is. Het is geschreven in JavaScript, wat deels de reden is waarom het in een browser kan draaien. Het PrismarineJS-ecosysteem bestaat al jaren en drijft veel community-automatiseringstools en bots aan, dus dit is geen weekendproject met gebroken afhankelijkheden.

Er is een live-demo op GitHub Pages. Open deze nu in Chrome of Firefox op je desktop en maak verbinding met een server zonder iets te installeren. Dit is het eenvoudigste geval en een goed manier om te zien wat je krijgt voordat je het zelf host.


De techniek erachter (en waarom het slim is)

Dit is waar het interessant wordt. Minecraft's protocol werkt via TCP, en browsers kunnen niet zomaar ruwe TCP-sockets openen. Hoe verbindt een browsergebaseerde client zich dan met een echte Minecraft-server?

Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten
Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten

Het antwoord is een proxylaag die het pakket lokaal draait. Je browser verbindt met deze proxy via WebSocket. De proxy vertaalt dat WebSocket-verkeer naar TCP en stuurt alles door naar je Minecraft-server. Vanuit serveroogpunt is het zomaar een gewone client. De server weet niet dat je vanuit een browsertab werkt.

Deze architectuur is slim omdat de clientcode grotendeels in je browser draait (de mineflayer-logica, de 3D-rendering), terwijl de proxy het ene ding afhandelt dat browsers fundamenteel niet kunnen doen. Het is een schone scheiding. De proxy is licht en bundeld met het npm-pakket, dus er is niets extra apart in te stellen.

Opgemerkt: iemand moet die proxy ergens uitvoeren. De gehoste demo heeft er een aan de serverzijde. Voor zelf-hosten draait het op je eigen machine.


Het zelf instellen

Als je Node.js hebt geïnstalleerd, duurt het instellen ongeveer een minuut. Installeer het pakket globaal en start het:

Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten
Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten
<! - gh-code-start - >
code
npm install -g prismarine-web-client
prismarine-web-client
<! - gh-code-end - >

Open daarna http://localhost:8080 in je browser. Je ziet een verbindingsscherm dat je serveradres en gebruikersnaam vraagt. Voer die in en klik op verbinden.

Een paar punten om te begrijpen voor je begint. Dit start de proxyserver op je lokale machine. Iedereen op die machine kan het via localhost gebruiken, maar het is niet bereikbaar voor anderen tenzij je de poort openstelt. Als je het met vrienden op hetzelfde lokale netwerk wilt delen, moet je je LAN-IP binden en hen laten verbinden met je machine op poort 8080. Haalbaar, maar vereist basiskennis van netwerken.

Voor ontwikkeling of als je in de code wilt graven, kloon de repo en voer uit:

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

Dit start express en webpack in watchmodus. Sla een bestand op, het herbouwt binnen enkele seconden en ververs om wijzigingen te zien. Het project stelt ook enkele nuttige globals op het window-object beschikbaar voor debuggen, inclusief bot, viewer en worldView. Als je Chrome DevTools opent en bot.chat('test') in de console typt, kun je in-gamechat rechtstreeks van daar gebruiken. Fijn voor wie wil zien hoe het werkt.


Wat werkt nu

Versie 1.6.0 verwerkt de kernlus voor verkenning goed. Blokken renderen correct, beweging werkt in real-time, mobs en andere spelers verschijnen, en je kunt blokken plaatsen en breken. Voor casual spelen of licht bouwen zonder de volledige Java-client is het echt bruikbaar.

Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten
Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten

Wat nog ontbreekt: inventarisbeheer, kisten en containers, geluiden en meeste gevechtsinteracties. De projectroadmap noemt dit allemaal als gepland. Dus als je volledige overlevingsgameplay met crafting, enchanting en villagerbandel verwacht, zal versie 1.6.0 dat niet dekken.

Dat is geen kritiek. In real-time een Minecraft-wereld in een browsertab renderen, verbonden met een live server, is op zich technisch indrukwekkend. De kloof tussen "werkende verkenningsclient" en "volledige Java-client parity" is enorm, en wat ze hebben opgeleverd is goed voor wat het doet.

Een praktisch gebruiksgeval in browsermodus: als je blokken tegenkomt die je niet herkent, is het blokzoektool op Minecraft.How handig voor snelle zoekopdrachten zonder van app te hoeven wisselen.


Dingen waar je op moet letten

Versiecompatibiliteit is de grootste val. prismarine-web-client werkt met specifieke Minecraft-protocolversies via de mineflayer-laag. Draait de server op een niet-ondersteunde versie, krijg je een verbindingsfout zonder duidelijke reden. Controleer op GitHub welke versies de huidige release ondersteunt, want dit verandert als het PrismarineJS-team protocolondersteuning bijwerkt.

Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten
Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten

Een paar andere veelvoorkomende problemen die je van tevoren moet weten:

  • Premium serverauthenticatie. Online-modeservers (die je account tegen Mojang/Microsoft verifiëren) zijn ingewikkelder om via deze opstelling mee verbonden te worden. De demo en meeste zelf-gehoste deployments werken best met offline-modeservers waar je elke gebruikersnaam kiest en direct verbindt.
  • Prestaties in drukke gebieden. Dit is een echte 3D-renderer die in een browsertab draait. Dicht terrein, groot aantal entiteiten en drukke servers zullen de CPU van je browser aanzienlijk harder pushen dan open gebieden met weinig entiteiten.
  • Alleen desktopbrowsers. Chrome en Firefox op desktop zijn de bevestigde platforms. Mobiele browserondersteuning ontbreekt en gegeven de complexiteit van de bediening en renderingvereisten, komt dit niet snel.
  • Houd de proxy draaiend. Sterft het proces als je zelf host, dan kan de pagina niet verbinden. Gebruik je dit regelmatig, dan loont het instellen als persistente achtergrondservice.

Iets wat ik mis had: ik dacht dat dit alleen op kleine LAN- of persoonlijke servers werkt. Het verbindt met elke server die de proxy over TCP kan bereiken, ook grotere openbare, zolang de Minecraft-versie past en auth geen probleem is.


Is het je tijd waard

Dat hangt helemaal af van wat je nodig hebt. Als "Minecraft overal spelen zonder client" werkt het binnen de huidige grenzen. Verkenning en basisblokinteractie zijn echt bruikbaar. Volledige overlevingsmodus nog niet.

Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten
Browsertabblad met een 3D-Minecraft-wereld weergegeven door prismarine-web-client met blokken en spelarentiteiten

Voor serveradmins die hun server van een machine zonder het spel willen bereiken, is dit echt handig. Geen launcher, geen accountprompt op offline-modeservers, gewoon browser en verbinden. Controleren of iets gebouwd goed uitziet of mobs correct spawnen vereist niet de volledige client.

En terwijl je al in de browser bent, als je een skin voor een server zoekt, heeft de skinbrowser op Minecraft.How een solide collectie om te verkennen.

De belangrijkste alternatieven: Eaglercraft is het bekendste browser-Minecraft-project, maar heeft zijn eigen geschiedenis en compatibiliteitskwesties. Voor zuivere wereldweergave zonder spelen is prismarine-viewer als aparte bibliotheek nuttig. En mineflayer, waar dit op voortbouwt, is voor Minecraft-botscripts eerder dan handmatig spelen.

Voor een MIT-gelicentieerd open-sourceproject dat iets technisch interessants doet, voelen 539 sterren als onder de radar. Past het bij je wensen, dan is vijf minuten ermee proberen goed besteed.

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