Zum Inhalt springen

AngelScript

aus Wikipedia, der freien Enzyklopädie
Skriptfehler: Ein solches Modul „WLink“ ist nicht vorhanden.
colspan="2" class="notheme" style="text-align:center; background-color:#Vorlage:Standardfarbe;" | Datei:Aslogo.png
Basisdaten
Paradigmen: objektorientiert
imperativ
strukturiert
funktional
Erscheinungsjahr: Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.
Designer: Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.
Entwickler: Andreas Jönsson<ref>Liste aller Entwickler</ref>
Aktuelle Version Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. (Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.)
Typisierung: statisch
Wichtige Implementierungen: AngelScript-Compiler (c++ und assembly library)
Beeinflusst von: C, C++
Betriebssystem: plattformunabhängig
Lizenz: zlib-Lizenz
angelcode.com/angelscript

AngelScript (kurz AS) ist eine Skriptsprache, die sich stark an C++ orientiert. Sie wurde speziell als Erweiterung für C- und C++-Programme entworfen und wird hauptsächlich in Computerspielen bzw. deren zugrundeliegenden Engines verwendet. Über die Programmierschnittstelle (API) von AngelScript lassen sich AngelScript-Programme in C++-Programme einbinden. AngelScript ist Open Source, wird unter der freien zlib-Lizenz verteilt und ist zu vielen Betriebssystemen und Compilern kompatibel.

Sprache[Bearbeiten]

Da AngelScript speziell zur Verwendung mit C++ ausgelegt ist, orientiert es sich stark daran. So unterstützt AngelScript die gleichen elementaren Datentypen (int, bool, …), ist objektorientiert und verwendet eine fast identische Syntax wie C++. Es existieren jedoch auch einige Unterschiede zu C++:

  • Der Pointeroperator * aus C++ existiert nicht, stattdessen gibt es den @-Operator, der allerdings ähnlich funktioniert
  • nur public und private als Zugriffsmodifikatoren (in C++ zusätzlich noch protected)
  • Klassen können nur von einer Basisklasse erben (in C++ von beliebig vielen)
  • Klassenfunktionen sind automatisch virtual (in C++ muss dies explizit gekennzeichnet werden)

AngelScript-Quelltext wird üblicherweise in .as-Dateien gespeichert. Ein Beispiel für eine einfache .as-Datei zeigt folgender Beispiel-Quelltext.

<syntaxhighlight lang="cpp"> //Datei "beispiel.as"

void main() {

   //Variablendeklarationen, -initialisationen und -operationen wie in C++
   int a = 5;
   ++a;
   int b = a + 3;
   if(b == 9)
   {
       /* wurde die Funktion print(string) vorher im C++-Quelltext registriert,
        * so wird sie jetzt aus AS heraus aufgerufen
        */
       print("Hello world\n");
   }

} </syntaxhighlight>

Verwendung[Bearbeiten]

Eingesetzt wird AngelScript in vielen Computerspielen, unter anderem Amnesia: The Dark Descent, der Penumbra-Reihe, Warsow, Warhammer: Mark of Chaos, SuperTuxKart und vielen weiteren großen und kleinen Projekten.<ref>Unvollständige Liste von AngelScript verwendender Software</ref>

Die Einbindung in vorhandenen C++-Quelltext geschieht durch „Registrierung“ der C++-Funktionen und -Klassen an der AngelScript-Engine. Folgender Beispielquelltext gibt ein Beispiel zur Registrierung einer Klasse Auto mit seinen Methoden starten() und bremsen().

<syntaxhighlight lang="cpp"> //Datei beispiel.cpp

  1. include "angelscript.h"

class Auto {

   public:
       void starten(){};
       void bremsen(){};

};

int main() {

   asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION);
   engine->RegisterObjectType("Auto", 0, asOBJ_REF);
   engine->RegisterObjectMethod("Auto", "void starten()", asMETHOD(Auto,starten), asCALL_THISCALL);
   engine->RegisterObjectMethod("Auto", "void bremsen()", asMETHOD(Auto,bremsen), asCALL_THISCALL);
   return 0;

} </syntaxhighlight>

Auf ähnliche Weise lassen sich auch globale Funktionen registrieren.

Entwicklung[Bearbeiten]

Im unregelmäßigen Abständen erscheinen neue Versionen mit Fehlerbeseitigungen und neuen Funktionen.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. AngelCode.com; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Da der Quelltext frei zugänglich ist, umfasst die Liste der Entwickler neben dem Hauptprogrammierer viele Freiwillige, die sich an der Entwicklung und Verbesserung der Sprache und der API beteiligt haben.

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references />