Skip to content
Retour au Blog
Jouez à Minecraft dans votre navigateur avec prismarine-web-

Jouez à Minecraft dans votre navigateur avec prismarine-web-

ice
ice
@ice
Updated
2 vues
TL;DR:prismarine-web-client est un client Minecraft open-source basé sur le navigateur qui se connecte à de vrais serveurs via un proxy WebSocket. Construit sur mineflayer et prismarine-viewer, il fonctionne dans Chrome ou Firefox sans nécessiter l'installation du jeu.
<! - gh-polish-start - >
GitHub - Projet communautaire Minecraft

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

Client Minecraft web s'exécutant dans votre navigateur

Étoiler sur GitHub ↗
⭐ 539 étoiles💻 JavaScript📜 MIT
<! - gh-polish-end - >

Vous avez toujours voulu rejoindre un serveur Minecraft depuis un Chromebook scolaire, un portable emprunté ou n'importe quelle machine sans le jeu installé ? prismarine-web-client résout exactement ce problème. Il exécute un vrai client Minecraft dans un onglet de navigateur et se connecte à de vrais serveurs Minecraft, sans installation locale nécessaire.

Qu'est-ce que prismarine-web-client

Ce n'est pas un clone 2D simplifié ou une approximation style Flash de Minecraft. C'est un vrai client basé sur le navigateur construit sur deux bibliothèques PrismarineJS bien établies : mineflayer gère le protocole Minecraft et la logique client, tandis que prismarine-viewer affiche le monde en 3D. Ensemble, ils créent quelque chose qui fonctionne réellement.

Le projet affiche 539 étoiles sur GitHub avec une licence MIT, ce qui signifie qu'il est libre d'utilisation, de fork et de modification comme bon vous semble. Il est écrit en JavaScript, ce qui explique en partie pourquoi son exécution dans un navigateur est possible. L'écosystème PrismarineJS existe depuis des années et alimente de nombreux outils d'automatisation communautaires et des bots, donc ce n'est pas une expérience de fin de semaine avec une chaîne de dépendances cassée.

Il existe une démo en direct hébergée sur GitHub Pages. Ouvrez-la dans Chrome ou Firefox sur un ordinateur de bureau dès maintenant et connectez-vous à un serveur sans rien installer. C'est le cas d'usage le plus simple, et honnêtement un bon moyen de comprendre à quoi vous avez affaire avant de vous embêter avec l'auto-hébergement.


La technologie derrière (et pourquoi c'est malin)

C'est là que ça devient vraiment intéressant. Le protocole Minecraft fonctionne sur TCP, et les navigateurs ne peuvent tout simplement pas ouvrir de sockets TCP bruts. Alors comment un client basé sur navigateur se connecte-t-il à un vrai serveur Minecraft ?

Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur
Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur

La réponse est une couche proxy que le paquet exécute localement. Votre navigateur se connecte à ce proxy via WebSocket. Le proxy traduit ensuite ce trafic WebSocket en TCP et le transmet au serveur Minecraft que vous ciblez. Du point de vue du serveur, c'est juste un autre client qui se connecte normalement. Il n'a aucune idée que vous faites cela à partir d'un onglet de navigateur.

Cette architecture est maligne parce que le code client s'exécute surtout dans votre navigateur (la logique mineflayer, le rendu 3D), tandis que le proxy gère la seule chose que les navigateurs ne peuvent fondamentalement pas faire. C'est une séparation nette. Le proxy est léger et fourni avec le paquet npm, donc il n'y a rien d'extra à configurer séparément.

À noter : quelqu'un doit exécuter ce proxy quelque part. La démo hébergée en a un s'exécutant du côté serveur. Pour l'auto-hébergement, il s'exécute sur votre propre machine.


Configuration personnelle

Si vous avez Node.js installé, toute la configuration prend environ une minute. Installez le paquet globalement et démarrez-le :

Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur
Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur
<! - gh-code-start - >
code
npm install -g prismarine-web-client
prismarine-web-client
<! - gh-code-end - >

Après cela, ouvrez http://localhost:8080 dans votre navigateur. Vous verrez un écran de connexion demandant une adresse de serveur et un nom d'utilisateur. Entrez ceux-ci et cliquez sur se connecter.

Quelques points à comprendre avant de commencer. Ceci démarre le serveur proxy sur votre machine locale. N'importe qui sur cette machine peut l'utiliser via localhost, mais ce ne sera pas accessible par d'autres à moins que vous n'exposiez le port. Si vous voulez le partager avec des amis sur le même réseau local, vous devrez l'associer à votre IP LAN et leur faire se connecter à l'adresse de votre machine sur le port 8080. Faisable, mais nécessite des connaissances réseau basiques.

Pour le développement ou si vous voulez vous plonger dans le code, clonez le repo et exécutez :

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

Cela démarre express et webpack en mode surveillance. Enregistrez un fichier, il se reconstruit en quelques secondes, et vous rafraîchissez pour voir les modifications. Le projet expose également une poignée de variables globales utiles sur l'objet window pour le débogage, notamment bot, viewer et worldView. Si vous ouvrez les DevTools de Chrome et tapez bot.chat('test') dans la console, vous pouvez utiliser le chat en jeu directement de là. C'est une bonne touche pour quiconque voulant explorer le fonctionnement des choses.


Ce qui fonctionne en ce moment

La version 1.6.0 gère bien la boucle principale pour l'exploration. Les blocs se rendent correctement, le mouvement fonctionne en temps réel, les mobs et les autres joueurs apparaissent, et vous pouvez placer et détruire des blocs. Pour l'exploration casual ou la construction légère sans le client Java complet, c'est véritablement fonctionnel.

Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur
Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur

Ce qui n'y est pas encore : la gestion des inventaires, les coffres et conteneurs, les sons et la plupart des interactions de combat. La feuille de route du projet liste tous ces éléments comme prévus. Donc si vous imaginez un jeu de survie complet avec craft, enchantement et échange de villageois, la version 1.6.0 ne couvrira pas cela.

Ce n'est pas une critique. Afficher un monde Minecraft en temps réel dans un onglet de navigateur, connecté à un serveur en direct, est techniquement impressionnant en soi. L'écart entre "client d'exploration fonctionnel" et "parité client Java complète" est énorme, et ce qu'ils ont livré est solide pour ce qu'il propose.

Un usage pratique pendant que vous êtes déjà en mode navigateur : si vous trouvez des blocs que vous ne reconnaissez pas, l'outil de recherche de blocs sur Minecraft.How est utile pour des recherches rapides sans avoir besoin de basculer vers une autre application.


Choses qui vous piègeront

La compatibilité des versions est le plus gros piège. prismarine-web-client fonctionne avec des versions de protocole Minecraft spécifiques via la couche mineflayer en dessous. Si le serveur auquel vous vous connectez exécute une version non supportée, vous obtiendrez une erreur de connexion sans explication claire. Vérifiez GitHub du projet pour savoir quelles versions la version actuelle supporte, car cette liste change à mesure que l'équipe PrismarineJS met à jour le support des protocoles.

Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur
Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur

Quelques autres problèmes courants à connaître à l'avance :

  • Authentification des serveurs premium. Les serveurs en mode en ligne (ceux qui vérifient votre compte auprès de Mojang/Microsoft) sont plus complexes à connecter via cette configuration. La démo et la plupart des déploiements auto-hébergés fonctionnent au mieux avec les serveurs en mode hors ligne où vous choisissez n'importe quel nom d'utilisateur et vous connectez directement.
  • Performance dans les zones occupées. C'est un vrai moteur de rendu 3D s'exécutant dans un onglet de navigateur. Les terrains denses, les comptages d'entités élevés et les serveurs surpeuplés pousseront notablement plus le CPU de votre navigateur que les zones ouvertes avec peu d'entités.
  • Navigateurs de bureau uniquement. Chrome et Firefox sur desktop sont les plates-formes confirmées. Le support des navigateurs mobiles n'existe pas, et étant donné la complexité du schéma de contrôle et les exigences de rendu, cela ne viendra pas bientôt.
  • Gardez le proxy en cours d'exécution. Si vous auto-hébergez et que le processus meurt, la page du navigateur ne peut se connecter à rien. Si vous utilisez ceci régulièrement, le configurer comme service d'arrière-plan persistant vaut le pas supplémentaire.

Une chose que j'avais mal comprise avant d'essayer : j'ai supposé que cela ne fonctionnait que avec de petits serveurs LAN ou personnels. Il se connecte à n'importe quel serveur auquel le proxy peut accéder via TCP, y compris les plus grands publics, tant que la version Minecraft correspond et que l'authentification n'est pas un obstacle.


Vaut-il votre temps ou non

Cela dépend entièrement de ce dont vous avez besoin. En tant que solution "jouer à Minecraft n'importe où sans installer le client", cela fonctionne dans ses limites actuelles. L'exploration et l'interaction basique avec les blocs sont véritablement utilisables. Mode survie complet, pas encore.

Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur
Onglet du navigateur montrant un monde Minecraft 3D rendu par prismarine-web-client avec des blocs et des entités joueur

Pour les administrateurs de serveur voulant une façon légère de se connecter rapidement à leur serveur depuis une machine sans le jeu installé, cela est assez pratique. Pas de lanceur, pas d'invite de compte sur les serveurs hors ligne, ouvrez juste un navigateur et connectez-vous. Vérifier si une construction a l'air juste ou si les mobs génèrent correctement ne nécessite pas l'expérience client complète.

Et pendant que vous êtes déjà dans le navigateur, si vous cherchez une skin à utiliser sur un serveur, l'explorateur de skins sur Minecraft.How a une bonne collection à explorer.

Les principales alternatives à connaître : Eaglercraft est le projet Minecraft pour navigateur le plus reconnu, bien qu'il ait son propre historique et des questions de compatibilité qui flottent autour de lui. Pour la visualisation pure du monde sans jouer, prismarine-viewer en tant que bibliothèque autonome vaut la peine de connaître séparément. Et mineflayer, sur lequel ce projet s'appuie, est incontournable pour créer des bots Minecraft plutôt que pour le jeu manuel.

Pour un projet open-source sous licence MIT faisant quelque chose d'aussi techniquement intéressant, 539 étoiles semble voler sous le radar. Si le cas d'usage vous correspond, les cinq minutes pour l'essayer sont bien dépensées.

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