
A quanto sembra Rosa sta testando la possibilità di includere la programmazione in-game mediante l'uso di C# combinato con un editor di codice direttamente in gioco. Sembra che il programmatore abbia pensato ad includere metodi ed oggetti di default per rendere possibile il maneggiare i blocchi del gioco.
Il codice programmato direttamente dall'HUD di gioco saranno facilmente condivisibili tra i giocatori sia tramite copia e incolla sia direttamente in gioco nel caso di gioco multigiocatore.
Rosa sta anche valutando la possibilità di introdurre un nuovo blocco computer in cui far partire i programmi scritti dai giocatori, al posto di far interagire ogni blocco con il codice del giocatore.

Nella bozza pubblicata vi è anche l'idea di usare un interprete C# al posto di utilizzare codice compilato per motivi di sicurezza. L'Editor sarà disponibile come pannello del Control Panel del blocco adibito alla programmazione. tale editor avrà anche l'evidenziatore della sintassi, il copia e incolla, suggerimenti per la sintassi, e molte caratteristiche presenti nei più diffusi editor di codice.
In caso di errori di compilazione (eccezioni, divisioni per 0, buffer overflow) i sottoprogrammi sviluppati verranno terminati prematuramente da una funzione di controllo, in modo che un programma mal compilato non faccia crashare il gioco. Al momento lo sviluppatore non sa come mitigare il problema dovuto ai problemi di performance (loop infiniti, tempi di esecuzione) che potrebbero saturare CPU e RAM, ma sembra che la soluzione che vogliano adottare, almeno temporaneamente, sia impedire l'esecuzione di programmi troppo complessi.
Come già detto vi saranno metodi e classi predefiniti per accedere ai blocchi del gioco, lo sviluppatore ha anche postato un esempio di codice:
Codice: Seleziona tutto
public float some_state_variable = 10;
private float some_other_private_variable = 20;
void main(void) // main function gets called on every update
{
var rotor1 = GetByName(“rotor1”);
rotor1.Rotate(30);
rotor2.Stop();
var light1 = GetByName(“light1”);
light.SetColor(255, 255, 0);
}

Verrà inoltre introdotto un blocco-sensore denominato "Proximity sensor" che permetterà, grazie ai suoi metodi, l'attivazione di codice quando una entità si avvicina al blocco. Tra i parametri impostati per la corretta rivelazione di entità utili vi sono il range, l'angolo o la velocità di avvicinamento.

Tra i blocchi programmabili vi sarà anche l'HUD, che potrà essere personalizzato per mostrare ulteriori informazioni come la vita dell'astronauta, la stima del tempo rimanente del supporto vitale, addirittura sarà possibile programmare parti di HUD in grado di inviare ordini remoti alle navette.
Qui un esempio di codice per personalizzare l'HUD:
Codice: Seleziona tutto
public float some_state_variable = 10;
private MyGuiSlider slider1;
private MyGuiLabel label1;
// called only at start of HUD or whenever HUD program gets changed
void init()
{
slider1 = new MyGuiSlider(...position...default color...etc);
label1 = new MyGuiLabel(...position...default color...etc);
}
// main function gets called on every update
void main(void)
{
GetByName(“player character”).Color = slider1.Value * 100;
label1.Text = MyUtils.GetFormattedFloat(slider1.value, 2);
}