„AngelScript“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
K →Sprache |
Keine Bearbeitungszusammenfassung |
||
(35 dazwischenliegende Versionen von 19 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Infobox Programmiersprache |
{{Infobox Programmiersprache |
||
| Name = |
|||
| Logo = [[Datei:Aslogo.png]] |
|||
| Beschreibung = |
|||
| Paradigma = [[Objektorientierung|objektorientiert]]<br />[[Imperative Programmierung|imperativ]]<br />[[Strukturierte Programmierung|strukturiert]]<br />[[Funktionale Programmierung|funktional]] |
|||
| Erscheinungsjahr = <!-- Wikidata --> |
|||
| Designer = |
|||
| Entwickler = Andreas Jönsson<ref>[http://www.angelcode.com/angelscript/credits.html Liste aller Entwickler]</ref> |
|||
| AktuelleVersion = <!-- Wikidata --> |
|||
| AktuelleVersionFreigabeDatum = <!-- Wikidata --> |
|||
| AktuelleVorabVersion = |
|||
| AktuelleVorabVersionFreigabeDatum = |
|||
| Typisierung = statisch |
|||
| Implementierung = AngelScript-Compiler (c++ und assembly library) |
|||
| Dialekte = |
|||
| Standardisierungen = |
|||
| Beeinflusst_von = [[C (Programmiersprache)|C]], [[C++]] |
|||
| Beeinflusste = |
|||
| Betriebssystem = [[Plattformunabhängigkeit|plattformunabhängig]] |
|||
| Lizenz = [[zlib-Lizenz]] |
|||
| Website = [http://www.angelcode.com/angelscript/ angelcode.com/angelscript] |
|||
}} |
}} |
||
'''AngelScript''' (kurz '''AS''') ist eine [[Skriptsprache]] die sich stark an [[C++]] orientiert. Sie wurde speziell als Erweiterung für [[C (Programmiersprache)|C]]- und C++-Programme |
'''AngelScript''' (kurz '''AS''') ist eine [[Skriptsprache]], die sich stark an [[C++]] orientiert. Sie wurde speziell als Erweiterung für [[C (Programmiersprache)|C]]- und C++-Programme entworfen und wird hauptsächlich in [[Computerspiel]]en bzw. deren zugrundeliegenden [[Spiel-Engine|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 [[Betriebssystem]]en und [[Compiler]]n kompatibel. |
||
== Sprache == |
== Sprache == |
||
Zeile 33: | Zeile 34: | ||
AngelScript-Quelltext wird üblicherweise in ''.as''-Dateien gespeichert. Ein Beispiel für eine einfache ''.as''-Datei zeigt folgender Beispiel-Quelltext. |
AngelScript-Quelltext wird üblicherweise in ''.as''-Dateien gespeichert. Ein Beispiel für eine einfache ''.as''-Datei zeigt folgender Beispiel-Quelltext. |
||
⚫ | |||
<div style="border: 1px solid #777; margin:1em; padding:1ex;"> |
|||
⚫ | |||
//Datei "beispiel.as" |
//Datei "beispiel.as" |
||
Zeile 52: | Zeile 52: | ||
} |
} |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
</div> |
|||
== Verwendung == |
== Verwendung == |
||
Eingesetzt wird AngelScript in vielen Computerspielen, unter anderem ''[[Amnesia: The Dark Descent]]'', |
Eingesetzt wird AngelScript in vielen Computerspielen, unter anderem ''[[Amnesia: The Dark Descent]]'', der ''[[Penumbra (Computerspielreihe)|Penumbra]]''-Reihe, ''[[Warsow (Computerspiel)|Warsow]]'', ''[[Warhammer: Mark of Chaos]], [[SuperTuxKart]]'' und vielen weiteren großen und kleinen Projekten.<ref>[http://www.angelcode.com/angelscript/users.html Unvollständige Liste von AngelScript verwendender Software]</ref> |
||
Die Einbindung in |
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 (Objektorientierung)|Klasse]] ''Auto'' mit seinen Methoden ''starten()'' und ''bremsen()''. |
||
⚫ | |||
<div style="border: 1px solid #777; margin:1em; padding:1ex;"> |
|||
⚫ | |||
//Datei beispiel.cpp |
//Datei beispiel.cpp |
||
Zeile 84: | Zeile 82: | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
</div> |
|||
Auf ähnliche Weise lassen sich auch globale Funktionen registrieren. |
Auf ähnliche Weise lassen sich auch globale Funktionen registrieren. |
||
== Entwicklung == |
== Entwicklung == |
||
Im unregelmäßigen Abständen erscheinen neue Versionen mit Fehlerbeseitigungen und neuen Funktionen.<ref>{{Internetquelle |url=http://www.angelcode.com/angelscript/changes.php |titel=AngelScript Changes |hrsg=AngelCode.com |abruf=2018-12-28}}</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 == |
||
* [http://www.angelcode.com/angelscript/ AngelScript |
* [http://www.angelcode.com/angelscript/ AngelScript-Website] |
||
* [http://www.angelcode.com/angelscript/sdk/docs/manual/index.html AngelScript |
* [http://www.angelcode.com/angelscript/sdk/docs/manual/index.html AngelScript-Handbuch] |
||
* [http://gameengineer.net/tutorials-angelscript.html Umfangreicher Einstieg in die C++-AngelScript-Bindung] |
|||
== Einzelnachweise == |
== Einzelnachweise == |
Aktuelle Version vom 2. März 2024, 15:12 Uhr
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.
Sprache
[Bearbeiten | Quelltext 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.
//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");
}
}
Verwendung
[Bearbeiten | Quelltext 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.[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.
Entwicklung
[Bearbeiten | Quelltext bearbeiten]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.
Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Liste aller Entwickler
- ↑ AngelScript Changes. 20. Juli 2024 (abgerufen am 6. Januar 2025).
- ↑ Unvollständige Liste von AngelScript verwendender Software
- ↑ AngelScript Changes. AngelCode.com, abgerufen am 28. Dezember 2018.