Skip to content


A few base functions provided by the platform.


Function Name Return Type Description Tags
Tick(number deltaTime) number Tick event, used for things you need to check continuously (e.g. main game loop), but be careful of putting too much logic here or you will cause performance issues. DeltaTime is the time difference (in seconds) between this and the last tick. None
time() number Returns the time in seconds (floating point) since the game started on the server. None
print(string) string Print a message to the event log. Access the Event Log from the Window menu. None
warn(string) string Similar to print(), but includes the script name and line number. None
require(string) table require() in Core differs slightly from vanilla Lua; Instead of giving it a script or file name, you give it a script ID. The script ID is usually assigned as a custom property (of type Asset Reference) that points to the script you want to require(). None


Example using:



The common Lua print() statement puts text into the Event Log. It can be used from anywhere, and is often extremely useful for debugging.

There is a similar function, warn(), which functions also prints to the event log, except as a warning message. (So it's bright and yellow and hard to miss.)

-- This will be printed to the event log normally.
print("Hello world!")

-- This will be printed in scary yellow letters, as a warning!
warn("Something is amiss!")

Example using:



Functions named Tick() are special - if you have a script with a Tick() function, then that function will be called every frame of the game. This is not something you want to do often, because of performance costs, but can be used to set up animations. (Ideally inside of client contexts.)

The time() function is very useful for this sort of thing - it will return the number of seconds since the map started running on the server, which makes it very useful in creating animations based on time.

local propCubeTemplate = script:GetCustomProperty("CubeTemplate")
local startTime = time()
local fadeDuration = 1.0
local currentColor = Color.RED
local nextColor = Color.BLUE
local cube = World.SpawnAsset(propCubeTemplate, {position = Vector3.FORWARD * 200})

function Tick()
    local currentTime = time()
    if currentTime > startTime + fadeDuration then
        startTime = currentTime
        local temp = currentColor
        currentColor = nextColor
        nextColor = temp

    local progress = (currentTime - startTime) / fadeDuration
    cube:SetColor(Color.Lerp(currentColor, nextColor, progress))

See also: CoreObject.GetCustomProperty | Color.RED | World.SpawnAsset | Vector3.FORWARD | CoreMesh.SetColor

Last update: March 1, 2021