packages: Difference between revisions

From Onset Developer Wiki
(Created page with "A package is collection of Lua scripts and other files. You can have up to 32 packages and 255 files per package. ==Lua context== Each package has their own LuaVM state. Lua...")
 
No edit summary
(One intermediate revision by the same user not shown)
Line 1: Line 1:
A package is collection of Lua scripts and other files.
A package is collection of Lua scripts and other files. You can have up to 32 packages and 255 files per package on your server.
You can have up to 32 packages and 255 files per package.
 
Allowed file type extensions: '''lua, js, css, html, htm, png, jpg, jpeg, gif, wav, mp3, ogg, oga, flac, woff2, ttf, pak'''
 
Example packages: https://github.com/BlueMountainsIO/OnsetLuaScripts


==Lua context==
==Lua context==
Each package has their own LuaVM state. Lua script files that are loaded in the same package can access the same global variables.
Each package has their own LuaVM state. Lua script files that are loaded in the same package can access the same global variables.
You can export functions from one package and import them in another package. See [[AddFunctionExport]] and [[ImportPackage]].
This enables you to create packages that act as pure libraries.


==Folder layout==
==Folder layout==
Each package has a folder that is placed inside the '''packages''' folder on your server.
<pre>
<pre>
OnsetServer.exe
OnsetServer.exe
Line 12: Line 19:
         /mypackagename
         /mypackagename
             package.json
             package.json
         /freeroampackage
         /mapeditor
            /client
                editor.lua
            /server
                server.lua
             package.json
             package.json
</pre>
</pre>
Line 41: Line 52:
Each package has a package.json in it's root path. See the folder layout above.
Each package has a package.json in it's root path. See the folder layout above.
Additionally you have to tell the server what packages exist. See [[server_config]] to configure that.
Additionally you have to tell the server what packages exist. See [[server_config]] to configure that.
== Client package cache ==
Files downloaded from a server are being cached on the client in this folder: '''%appdata%\..\Local\Horizon\Saved\ServerContent
That way files are only downloaded once. If you change a file on the server the checksum of it will change. In this case the client will be downloaded again by the client.
The ''server.json'' file stores information of the server from where the files have been downloaded from.

Revision as of 15:04, 11 September 2019

A package is collection of Lua scripts and other files. You can have up to 32 packages and 255 files per package on your server.

Allowed file type extensions: lua, js, css, html, htm, png, jpg, jpeg, gif, wav, mp3, ogg, oga, flac, woff2, ttf, pak

Example packages: https://github.com/BlueMountainsIO/OnsetLuaScripts

Lua context

Each package has their own LuaVM state. Lua script files that are loaded in the same package can access the same global variables.

You can export functions from one package and import them in another package. See AddFunctionExport and ImportPackage. This enables you to create packages that act as pure libraries.

Folder layout

Each package has a folder that is placed inside the packages folder on your server.

OnsetServer.exe
server_config.json
    /packages
        /mypackagename
            package.json
        /mapeditor
            /client
                editor.lua
            /server
                server.lua
            package.json

package.json

Your package.json defines server and client script files. It also defines what files are required for this package to work. Files defined in client_scripts and files are being downloaded by clients once they join the game server.

{
	"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"
	]
}

Each package has a package.json in it's root path. See the folder layout above. Additionally you have to tell the server what packages exist. See server_config to configure that.

Client package cache

Files downloaded from a server are being cached on the client in this folder: %appdata%\..\Local\Horizon\Saved\ServerContent

That way files are only downloaded once. If you change a file on the server the checksum of it will change. In this case the client will be downloaded again by the client. The server.json file stores information of the server from where the files have been downloaded from.