AngelScript
{{Short description|Game oriented compiled scripting language}}
{{Infobox programming language
|name = AngelScript
|title =
|logo =
|logo caption =
|screenshot =
|screenshot caption =
|paradigm = Multi-paradigm: scripting, imperative (procedural, object-oriented)
|family =
|year = 2003
|designer =
|developer = Andreas Jönsson
|latest release version = 2.37.0
|latest release date = {{Start date and age|2024|07|20}}
|latest preview version =
|latest preview date =
|scope =
|implementations =
|dialects =
|influenced by = C++
|influenced =
|programming language =
|platform =
|operating system = Cross-platform
|license = zlib License
|file ext =
|fileformat =
|website = {{Official URL}}
}}
AngelScript is an open-source game-oriented compiled scripting language developed by Andreas Jönsson at AngelCode.
AngelScript features static typing, object handles (similar to C++ pointers but garbage collected via reference counting), object-orientation, single inheritance, multiple inheritance with interfaces. It allows operators to be registered and overloaded. AngelScript can be used with any C++ IDE, such as NetBeans, Geany, and Eclipse.
C and C++ functions can be called within an AngelScript environment.{{Cite web|url=http://www.iue.tuwien.ac.at/pdf/ib_2010/CP2010_Weinbub_1.pdf|title=ViennaIPD - An Input Control Language for Scientific Computing|last1=Weinbub|first1=Josef|last2=Rupp|first2=Karl|date=2010|access-date=April 27, 2019|last3=Selberherr|first3=Siegfried}}{{Cite web|url=http://accu.org/index.php/journals/1608|title=Simplifying the C++/Angelscript Binding Process|last=Golodetz|first=Stuart|date=February 2010|website=ACCU|access-date=April 27, 2019}} AngelScript's class syntax closely follows C++ classes by design: no proxy functions are required to embed AngelScript in C++ applications, easing the two languages' integration.{{Cite book|title=Game Programming Gems 6|last=Dickheiser|first=Michael|publisher=Charles River Media|year=2006|isbn=1584504501}} There are several differences of AngelScript and C++:
- AngelScript does not support multiple inheritance. Multiple-inheritance functionality may be achieved with Interfaces.
- It is impossible to declare methods or properties outside of the class body.
- All methods (including constructors and destructors) are virtual.
AngelScript is used in video game development,{{Cite journal|last1=Nishimori|first1=Taketoshi|last2=Kuno|first2=Yasushi|date=May 2012|title=Join token: A language mechanism for programming interactive games|journal=Entertainment Computing|volume=3|issue=2|pages=19–25|doi=10.1016/j.entcom.2011.09.001|url=https://tsukuba.repo.nii.ac.jp/?action=repository_action_common_download&item_id=33964&item_no=1&attribute_id=17&file_no=1|hdl=2241/00124828|hdl-access=free}} including
- Amnesia: The Dark Descent,{{Cite web|url=http://angelcode.com/angelscript/users.html|title=Applications using AngelScript|website=AngelCode|access-date=April 27, 2019}}
- Amy,
- Dustforce,
- Gekkeiju Online,
- King Arthur's Gold,
- Legend of the Guardians: The Owls of Ga'Hoole,
- Overgrowth,{{cite AV media|url=https://www.youtube.com/watch?v=99T-7NeEH8s&t=17m40s|title=A good episode|date=November 30, 2014|last1=Orsvärn|first1=Lukas|series=Overgrowth Weekly|volume=86|time=17m 40s|time-caption=at|access-date=April 27, 2019|last2=Riehl|first2=Anton|last3=Rosen|first3=David|website=YouTube}}
- Penumbra: Overture,
- Penumbra: Requiem,
- Puddle,
- Rigs of Rods,
- Running with Rifles,
- Sine Mora,
- Star Ruler,
- SuperTuxKart,
- Warhammer: Mark of Chaos,
- Warsow,
- Sven Co-op
- and Jazz Jackrabbit 2 Plus,
In addition, it is also supported as a scripting language in Urho3D. Hazelight Studios maintains a plugin that integrates AngelScript into the Unreal Engine; this plugin was used to write their game, It Takes Two, in AngelScript,{{cite web|title= Hazelight/UnrealEngine-Angelscript on GitHub| website=GitHub |url = https://github.com/Hazelight/UnrealEngine-Angelscript|access-date = September 15, 2021}} the plugin is also used by Embark Studios in The Finals and the upcoming ARC Raiders.{{Cite web |title=Senior Gameplay Programmer - Games |url=https://careers.embark-studios.com/en-GB/jobs/1161763-senior-gameplay-programmer-games/ed57c5e4-f694-4bb6-9683-534edf92e029 |access-date=2023-11-23 |website=Embark Studios |language=en-GB}} It is also used at the University of Ulm in its interactive 3D-Animation program,{{Cite web|url=http://graphics.uni-ulm.de/lehre/showcases/animation/0405/index.php|title=Animal Race|date=2005|website=University of Ulm|language=de|access-date=2013-05-31|archive-date=2014-05-25|archive-url=https://web.archive.org/web/20140525232744/http://graphics.uni-ulm.de/lehre/showcases/animation/0405/index.php|url-status=dead}}{{Failed verification|date=April 2019}} as well as in robotics; for example, to program behavioral rules of robotic agents.{{cite conference|last1=Brandoff|first1=Josh|last2=Sayama|first2=Hiroki|year=2009|title=Cultural transmission in robotic swarms through RFID cards|conference=ALife'09|publisher=IEEE|pages=171–178|doi=10.1109/ALIFE.2009.4937709|isbn=978-1-4244-2763-5|book-title=2009 IEEE Symposium on Artificial Life}}
References
{{reflist}}
External links
- {{Official website}}
- {{GitHub|BlindMindStudios/AngelScript-JIT-Compiler}}