Programming

The game features an in-depth programming language that allows you to write and execute software that can manage and manipulate the state of other objects in-game. The name of this programming language is called Pilot.lua, which is a reference to rbx.lua.

The main parts of programming are
 * Microcontroller - An object that stores and runs code when triggered by polysilicon and powered.
 * Port - Allows the microcontroller to interact with other objects, trigger and configure, etc.
 * Screen - A programmable object that can display user interface objects such as TextLabel, ImageLabel, etc.
 * Disk - Stores values in a directory-like format.

The code below is code for a smart turret that takes chat commands and targets players accordingly, with the command "target playername" local Gyro = GetPartFromPort(1, "Gyro") -- Gets gyro attached to port 1 local Microphone = GetPartFromPort(2, "Microphone") -- Gets microphone attached to port 2

local Commanders = { -- List of usernames allowed to use the smart turret Robuyasu = true; }

-- Connects to the microphone, adding an event to it that will listen for chat input Microphone:ConnectToEvent("Chatted", function(Player, Message)   -- This simply makes sure that the player speaking is allowed to run a command   if not Commanders[Player] then return end   if Message:lower:sub(0, 6) == "target" then -- If the message starts with target     local Victim = Message:sub(8) -- Gets the rest of the message     Gyro:Configure({Seek=Victim}) -- Configures the seeker to target that person   end end)

There are many functions in Pilot.lua that allow you to interact with other objects. These are the following default functions listed.
 * GetPort(ID) - Returns a port instance that can be used in other functions.
 * GetPartFromPort(ID or Port Instance, ClassName) Returns a part if found directly attached to a port. An example would be GetPartFromPort(2, "Screen")
 * TriggerPort(ID or Port Instance)

All objects will contain certain programmable properties and functions. However, all instances will contain the following properties: Certain parts however will have their own special properties.
 * Configurable properties, for example an ionrocket's thrust speed property
 * ClassName, which is simply the name of the object
 * Object:Trigger, which simply triggers the object
 * Object:Configure({Property=NewValue}), which configures the part to the given dictionary/table
 * Object:ConnectToEvent, which is similar to roblox connections (part.Touched:Connect). An example includes TouchTrigger:ConnectToEvent("Touched", function end)
 * Screen
 * Screen:CreateElement(GUIClassName, Properties), an example includes Screen:CreateElement("TextLabel", {Text = "Hello World!"; TextScaled = true});
 * Screen:ClearElements, which clears all elements in a gui