Attention, cet article parle en grande partie d’outils propriétaires (même… de Windows). En cas de symptômes suite à la lecture, veuillez consulter le libriste le plus proche

Pour ceux qui ne connaissent pas, Rocket League est un jeu de football où vous remplacez les joueurs par des voitures, et où vous autorisez également lesdites voitures à virevolter dans les airs pour pousser la balle au fond des cages.

Ainsi une partie se déroule généralement à grande vitesse, où il faut réagir au quart de tour.

Et là vient la question que tout le monde est en droit de se poser :

“Comment les conducteurs font pour communiquer ? Ils hurlent par la fenêtre ou bien sont-ils équipés de micro-casques ?”

L’hypothèse du micro-casque balayant tout le fun de la réponse, je me suis penché sur la question du “hurlement par les fenêtres”, ce qui m’a amené à la notion de ‘chat de proximité’. Il s’agit d’un concept dans lequel le placement des joueurs régit les communications. C’est-à-dire que vous entendrez un joueur à gauche de vous s’il est placé à gauche de vous dans le jeu, et vous entendrez plus faiblement un joueur éloigné de vous et de plus en plus fort s’il se rapproche.

Ainsi, à la manière d’une ambulance qui passerait à côté de vous, vous pourriez entendre un joueur hurler ‘j’y vaaaaaaiiiisss…’ avant d’aller engager le ballon pour le début d’un nouveau point.

Configurations

Pour mettre en place le chat de proximité, j’ai utilisé :

– BakkesMod (propriétaire) : https://bakkesmod.com/ – Le plugin LeoProximityChat (MIT) : https://github.com/youpaki/LeoProximityChat – Le plugin RocketPlugin (MIT) : https://bakkesplugins.com/plugin/26 – Radmin (propriétaire) : https://www.radmin-vpn.com/

L’idée est la suivante : BakkesMod (incompatible avec les versions console) permet de modder RocketLeague avec les plugins LeoProximityChat et RocketPlugin, sauf que lancer RocketLeague avec BakkesMod désactive toutes les fonctionnalités ‘online’ (même les matchs privés et les matchs de clubs) aisni il ne nous reste plus que les matchs de LAN (Local Access Network) d’oú l’utilisation de Radmin pour créer un réseau local virtuel (on pourrais réaliser cela avec n’importe quel VPN, si vous avez l’installation nécessaire). Enfin, le plugin RocketPlugin permet de créer une partie locale où les autres peuvent se connecter.

Ensuite au niveau matériel, j’ai utilisé :

– Kopernic (ma machine de travail) booté pour l’occasion sous Windows 11, avec Rocket League, BakkesMod (+ plugins) et Radmin d’installés – Le PC d’un coéquipier, avec la même configuration – Un serveur Ubuntu 24.04 avec la partie ‘serveur’ du plugin LeoProximityChat d’installée (on pourra se passer de celui-ci, je vous expliquerai plus bas).

Mise en place

Maintenant que tous les outils ont été cités, il est temps de prendre ses outils, de mettre les mains dans le cambouis.

Configuration de base

Je supposerais une installation Steam/Epic de Rocket League et partirais de là. J’ai téléchargé et installé BakkesMod sur le chemin par défaut proposé, puis je me suis rendu sur la page de ‘RocketPlugin’ pour installer le plugin (un simple clic sur le bouton d’installation suffit, il ouvre un lien compatible BakkesMod pour continuer l’installation). Une fois ces installations réalisées, vous avez terminé la partie simple ;)

Le plugin LeoProximityChat

Dans cette partie, je vais en grande partie paraphraser le README, je vous conseille donc de le lire

Dans la suite de l’article, je parlerai du dossier d’installation de BakkesMod avec le nom <BAKKESMOD_FOLDER>, vous pouvez y accéder facilement depuis l’interface de BakkesMod, Fichiers → ‘Ouvrir le dossier de BakkesMod’.

Pour utiliser ce plugin, vous avez besoin de 2 choses :

Le plugin

Pour ce faire, trouvez la dernière release GitHub du projet et téléchargez les fichiers en .dll et .set (deux fichiers au total). Placez ensuite le fichier .dll dans le dossier <BAKKESMOD_FOLDER>\plugin et le fichier .set dans <BAKKESMOD_FOLDER>\plugin\settings.

Le serveur:

Pour celui-ci, deux options sont proposées : le WebSocket (que j’ai utilisé) et le serveur compilé (.exe) que je détaillerai plus bas pour ceux qui n’ont pas de serveur sous la main.

Pour ma part, j’ai utilisé une instance ‘Always-Free’ de chez Oracle pour faire ma manip, mais cela fonctionnera avec n’importe quel serveur Debian-based avec une IP publique (nommée IP_SERVER) et le port 9587 disponible.

Ce projet utilise NPM, et donc par habitude avec ce gestionnaire de paquets, j’utilise nvm pour l’installation :

# As user
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash

source ~/.bashrc
nvm install --lts

Ensuite, je clone le répertoire dans mon espace utilisateur et j’installe les dépendances :

# As user
git clone https://github.com/youpaki/LeoProxChatServer.git
cd LeoProxChatServer
npm install

Enfin, j’installe pm2, pour faire tourner mon serveur en arrière plan :

# As user
npm install -g pm2

Puis je lance le serveur :

pm2 start server.js --name LeoProxChatServer

Si, comme moi, vous êtes chez Oracle, pensez à créer une règle de sécurité de groupe pour exposer le port , sinon vous ne pourrez pas y accéder

Radmin

Pour Radmin c’est très simple, il suffit de l’installer puis l’hôte choisit de ‘créer un réseau’ (avec nom et mot de passe) pendant que les autres choisissent de ‘rejoindre un réseau’ avec les mêmes identifiants. Cela créa un réseau privé virtuel permettant de simuler un LAN. L’IP de l’hôte donnée par Radmin sera appelée IP_RADMIN_HOST.

Configurer le jeu

Maintenant que : – BakkesMod est installé (et lancé) – RocketPlugin est installé – LeoProximityChat (serveur+plugin) est configuré – Radmin est installé et connecté

Il est grand temps de lancer Rocket League ! Sur Steam, pensez à utiliser la version sans anti-cheat pour que BakkesMod puisse se lier.

Loader LeoProximityChat

LeoProximityChat n’est pas chargé par défaut, il faut donc ouvrir la console de BakkesMod (‘F6` par défaut) et taper :

plugin load leoproximitychat

(ici l’autocomplétion devrait vous aider)

Ensuite, il faut ouvrir le menu de configuration et chercher le plugin LeoProximityChat, ici dans l’onglet Network, rentrez l’URL suivante :

ws://<IP_SERVER>:9587

Cliquez sur ‘Se connecter’ et vérifiez ensuite que tout fonctionne bien !

Créer une partie locale

Dans le menu des plugins, cherchez ‘Rocket Plugin’ et cliquez sur ‘Open plugin GUI’, complétez la configuration que vous souhaitez, puis cliquez sur Host.

Votre coéquipier pourra vous rejoindre en utilisant la partie droite de ce même GUI sur son jeu en utilisant l’IP_RADMIN_HOST, le port 7777 (par défaut) et le mot de passe (si configuré)

Et vous voilà parti !

Se passer de serveur

J’ai utilisé un serveur car j’avais besoin d’une IP accessible par les deux joueurs, avant d’utiliser Radmin pour créer un réseau local. En théorie, il est donc possible d’utiliser le serveur LeoProximityChat sur sa version .exe et de le lancer sur la machine de l’hôte, puis d’utiliser simplement IP_RADMIN_HOST à la place de IP_SERVER. Cependant, je n’ai jamais fait la manipulation, donc je ne pourrai pas donner plus de détails

Conclusion, fun ou pas fun ?

Un premier point : ce projet est parfaitement inutile et j’en conviens, mais est-ce que c’est fun ?

Pour répondre rapidement, oui, ça l’est, mais ça dépend du nombre de joueurs. Plus vous êtes nombreux, mieux ça se passe.

Avec plus de nuance, la difficulté de mise en place n’est pas forcément proportionnelle au fun obtenu, mais on s’amuse quand même bien. Un léger écho vous permet de savoir si un coéquipier vous entend, et les quelques réglages permettent de nuancer le volume en fonction de la distance et le taux d’activation.

Enfin, je ne regrette pas le temps passé dessus :)

J’espère que ce projet inspirera des gens

Au plaisir

Romb38 – Standouda