AngelScript
| 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
- 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 />