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.
 * EthernetCable (Optional) - Allows to connect to Objects from Ports, this object is highly recommended.

The code below is code for a smart turret that takes chat commands and targets players accordingly, with the command "target playername" 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)
 * GetPartsFromPort(ID or Port Instance, ClassName) Returns multiple parts if found directly attached to a port. Must have "for i = number, number" command in Microcontroller to function.

All objects will contain certain programmable properties and functions. However, all instances will contain the following 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:Connect, which is similar to roblox connections (part.Touched:Connect). An example includes TouchTrigger:Connect("Touched", function end)

Certain parts however will have their own special properties.


 * 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

Resources

 * There are currently two player-made wikis, murpyh's and Hexcede's
 * Some information on parts can be found at mawesome's part list site, though some information is inaccurate or not displayed there