Skip to content

CoreLuaFunctions

A few base functions provided by the platform.

Functions

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

Examples

Example using:

Tick

time

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
    end

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

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


Example using:

print

warn

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:

require

Using require() is a powerful way to abstract code and break it apart into separate responsibilities, as well as reusable components. In this example we have two scripts. The first script is in the hierarchy and calls require() on the second script. To link the two scripts together, select the first script in the hierarchy and drag the second script from Project Content into the Properties view. This action creates a custom property that points to the script asset.

-- Contents of the script in the hierarchy:
local REQUIRED_SCRIPT = require( script:GetCustomProperty("SecondScript") )

REQUIRED_SCRIPT.DoSomething()

-- The second script returns a table, containing the DoSomething() function:
local API = {}

function API.DoSomething()
    print("Hello world!")
end

return API

See also: CoreObject.GetCustomProperty



Last update: January 5, 2022