AngelScript – Wikipedia

AngelScript
Basisdaten
Paradigmen: objektorientiert
imperativ
strukturiert
funktional
Erscheinungsjahr: 2003
Entwickler: Andreas Jönsson[1]
Aktuelle Version 2.37.0[2] (20. Juli 2024)
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.

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.

//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");     } } 

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.[3]

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().

//Datei beispiel.cpp  #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; } 

Auf ähnliche Weise lassen sich auch globale Funktionen registrieren.

Im unregelmäßigen Abständen erscheinen neue Versionen mit Fehlerbeseitigungen und neuen Funktionen.[4] 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.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Liste aller Entwickler
  2. AngelScript Changes. 20. Juli 2024 (abgerufen am 6. Januar 2025).
  3. Unvollständige Liste von AngelScript verwendender Software
  4. AngelScript Changes. AngelCode.com, abgerufen am 28. Dezember 2018.