Page cover

Introduction

This documentation will show you everything that is needed to get started writing your own Lua Scripts using Anvil.

Beginner's Read This

If you're completely new to programming, we highly recommend learning the core concepts first.

  • Variables ( + Datatypes )

  • Loops

  • Arrays

  • Functions

However to give you a mental momentum, there are alot of examples that you can simply copy into the editor ingame and play with.

Useful Resources

Integration

Anvil integrates Lua and provides a number of globally available namespaces each with their own set of useful methods. Which namespaces are available is listed here.

The Lua tab is pretty straightforward. At the top you have the toolbar where you can:

  • Open an existing lua file in the editor

  • Save the current script to a file

  • Run the current script

  • Stop the running script

  • Open this documentation

It is important to understand how the Lua code is being executed. Suppose you have the following piece of Lua code:

print("Hello from Lua")

If you click on Run Script at the top of the Lua Tab, this code will be executed exactly once. This might be no surprise to someone who has some knowledge about programming. However how would we execute that code every frame of the game?

First lets transform the line of code we have written into a function:

function sayHello()
    print("Hello from Lua")
end

In order to react to certain Events such as a new frame being rendered, you have to listen for that specific Event. This concept is commonly called an EventListener. Anvil on the other hand is referred to as the EventEmitter and will notify you of any events happening right now.

You can react (listen) to certain Events by registering an EventListener like so:

engine.addEventListener("render", sayHello)

What this means, is basically: Run the function sayHello every single frame. All possible events and other methods that you can call on engine are described here.

Overview

This section is supposed to give you a quick overview of the existing namespaces and methods.

Namespaces

Types

Where to go from here?

We encourage you to take a look at the examples, to get a feeling how things are done. For a complete listing of the functions we provide, take a look at the namespaces section. If you wish to provide another example to this documentation you're more than welcome to contact us on out discord server at: Todo

Last updated