Les packages (paquets) sur Onset permettent d'ajouter rapidement et facilement du contenu créé par la communauté sur votre serveur. Un package contient un ensemble de fichiers (LUA, HTML, CSS, JS, Images) nécessaire au fonctionnement de la tâche pour laquelle il a été conçu. Il peut aussi être une dépendance d'un autre paquet.
Installation d'un package
Pour installer un package sur votre serveur Onset, il vous suffit de le télécharger dans le répertoire packages
du serveur, dans un répertoire dédié.
Ensuite, pour l'activer il suffit d'éditer la section packages
du fichier de configuration.
Vous pouvez suivre notre tutoriel à ce sujet: configuration de mon serveur Onset.
Contexte d’exécution LUA
Techniquement, chaque package possède son propre context d'execution LUA (état LuaVM): son exécution est séparée de celle des autres packages.
Les fichiers de script LUA chargés dans un même package peuvent accéder aux mêmes variables globales. Les variables locales ne sont accessibles que dans le fichier LUA où elles sont définies, vous n'y aurez donc pas accès dans un autre fichier LUA.
Un système permet l'export des fonctions d'un package et l'import/utilisation dans un autre package.
Limitations des packages
Il existe plusieurs limitations :
- vous ne pouvez charger que 32 packages maximum.
- un package ne peut contenir plus de 255 fichiers.
- 64 scripts clients maximum dans le package.
- le package ne doit pas dépasser 2 Go.
Fichiers autorisés
Voici la liste des extensions autorisées dans un package: lua, js, css, html, htm, png, jpg, jpeg, gif, wav, mp3, ogg, oga, flac, woff2, ttf, pak.
Structure d'un package
Les packages utilisés sur votre serveur doivent être dans le répertoire packages
du serveur.
A l'intérieur de ce dossier, chaque package doit posséder son propre dossier.
Voici la structure des fichiers d'un package :
HorizonServer.exe server_config.json /packages /mypackagename package.json /mapeditor package.json /client editor.lua /server server.lua
Le fichier package.json
Chaque package contient un fichier de configuration package.json
spécifique à la racine de son dossier, qui est chargé par le serveur à son démarrage.
Il définit les fichiers de script du serveur et du client et également les fichiers qui sont requis pour que le paquet fonctionne.
Les fichiers définis dans client_scripts
sont les fichiers qui vont être téléchargés par les joueurs après avoir rejoint le serveur.
{ "author": "Blue Mountains", "version": "1.0", "server_scripts": [ "server/editor.lua" ], "client_scripts": [ "client/editor.lua" ], "files": [ "client/gui/editor.html", "client/gui/editor.css", "client/gui/editor.js", "client/gui/jquery.js", "client/gui/OpenSansRegular.woff2", "client/gui/OpenSansBold.woff2" ] }
Cache des packages
Les fichiers téléchargés à partir des serveurs sont mis en cache sur le client dans le dossier %appdata%\..\Local\Horizon\Saved\ServerContent
. De cette façon, les fichiers ne sont téléchargés qu'une fois.
Si vous modifiez un fichier sur le serveur, le checksum (signature) du package changera.
Le client détectera la modification et va télécharger la nouvelle version.
Exemple de package
Voici un exemple de package publié par le développeur du jeu :
https://github.com/BlueMountainsIO/OnsetLuaScripts
Wiki officiel
Vous pouvez consulter la documentation officiel sur les packages en client ici.