ASL ist kein Spiel, hat jedoch mit Arma 3 (Sandbox Militärsimulator) zu tun.
In Arma 3 ist es möglich über Scripte (die Sprache heißt SQF) Szenarien und neue Funktionalitäten zu bauen. Dies umfasst z.B. das Ausrüsten der Spieler, Interaktion mit KI, Steuerung von KI und noch viel viel mehr. Es gibt sehr große Community Projekte die aus Arma eine deutlich realistischere/spannendere Erfahrung machen.
SQF ist schon alt (mindestens Arma 2 ~10 Jahre?) und nicht besonders gut. Heißt konkret eine inkonsistente Syntax, überflüssige Schlüsselwörter und Zeichen (z.B. Semikolon) und unkomfortabel. Hier mal ein Beispiel für Kontrollstrukturen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
a = 1;
b = 2;
if (a < b) then {
[1, 2, 3] buildinFunktion ["param0", "param1"];
}; // das ; ist Pflicht!
while {true} do { // ja hier stehen wirklich {} für die Bedingung
// ...
};
eineFunktion = {
x = _this select 0; // erster Funktionsparameter (Zugriff auf Array über "select")
y = _this select 0; // zweiter Funktionsparameter
return x+y;
};
var ergebnis = [4, 4] call eineFunktion;
|
ASL soll dieses "Problem" lösen und dem Mod Entwickler einiges an Ärger ersparen. Vor allem Fehlende ; sind ärgerlich, da man die Fehler erst im Spiel bekommt. Der Compiler wandelt dabei ASL Dateien in SQF Dateien um. Das Beispiel von oben sieht in ASL so aus:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
var a = 1; // klar machen, dass hier eine Variable deklariert wird
var b = 2;
if a < b {
buildinFunktion(1, 2, 3)("param0", "param1"); // zumindest näher an üblichen Funktionsaufrufen
}
while true {
// ...
}
func eineFunktion(x, y) {
return x+y;
}
var ergebnis = eineFunktion(4, 4);
var array = [1, 2, 3]; // unter SQF sehr ähnlich
var i = array[1]; // = 2, kein select!
|
Hier ein Video zur Nutzung unter Windows:
ASL wurde vollständig als Recursive Decent Parser in Go implementiert und ist
hier für Linux und Windows auf GitHub verfügbar. Dort findet ihr auch eine bessere Beschreibung der Sprache (Englisch). Viel Spaß beim ausprobieren (wenn ihr Arma spielt)
![:)](wcf/images/smilies/smile.png.pagespeed.ce.cw1CRsMB0z.png)
Feedback immer erwünscht.