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.