Connecteur d'exemple
Le dépôt contient example-connector/, un petit programme Node.js et TypeScript. Il lit de faux joueurs depuis un fichier JSON et les synchronise avec Inari, ce qui est pratique pour tester une installation ou apprendre le protocole avant d’écrire un vrai connecteur.
Le lancer
Section intitulée « Le lancer »cd example-connectornpm installCréez un fichier .env :
INARI_URL=ws://localhost:3030/wsINARI_API_KEY=MySuperApiKeyINARI_CHANNEL=defaultDémarrez Inari avec la même API_KEY, puis :
npm startVous devriez voir :
WS > Connection Open !Welcome on Inari 1.0.0. Max Distance set to 20 !Si vous obtenez Authentification Error, la clé d’API ne correspond pas.
Simuler des joueurs
Section intitulée « Simuler des joueurs »Les joueurs viennent de src/data.json, relu à chaque synchronisation : vous pouvez donc le modifier pendant que le connecteur tourne :
[ { "code": "user11", "display_name": "User 11", "is_force_muted": false, "position": [0, 0, 0], "head": [1, 0, 0] }, { "code": "user22", "display_name": "User 22", "is_force_muted": false, "position": [0, 0, 0], "head": [1, 0, 0] }]- Ouvrez
http://localhost:3030/?channel=default&code=user11dans un navigateur. - Ouvrez
http://localhost:3030/?channel=default&code=user22dans un autre (ou une fenêtre privée). - Modifiez la
positiond’un joueur dansdata.jsonet observez la voix baisser, puis disparaître au-delà deMAX_DISTANCE. - Passez
is_force_mutedàtrue, ou donnez-leur ungroupdifférent, pour les réduire au silence.
Comment ça marche
Section intitulée « Comment ça marche »src/main.ts fait environ 70 lignes :
call(kind, data)envoie un message avec un nouveautransaction_uuidet renvoie une promesse résolue à l’arrivée de la réponse portant le même UUID.- À l’
open, il envoieauthavecis_connector: true. Une réponseerrorferme la connexion. - Une fois authentifié,
setIntervalappellesync_connector_statetoutes les 300 ms avec les joueurs, et affiche lesconnectionsrenvoyées. - Quand la socket se ferme, le processus s’arrête, afin qu’un superviseur (systemd, Docker, pm2) puisse le relancer.
src/type.d.ts contient les types TypeScript de tous les messages. Copiez-le dans votre projet.
L’adapter à votre jeu
Section intitulée « L’adapter à votre jeu »Remplacez la lecture de data.json par la liste des joueurs de votre jeu. Conservez le reste : authentification, synchronisation régulière et reconnexion. Le même protocole fonctionne depuis n’importe quel langage disposant d’un client WebSocket (Java pour les plugins Minecraft, Lua, C#…). Voir la référence du protocole.