}}
'''AngelScript''' è un [[linguaggio di scripting]] [[Compilatore|compilato]] con [[open source|sorgente aperto]], pensato per lo sviluppo di videogiochi,. È stato sviluppato da [[Andreas Jönsson]] per l'azienda [[AngelCode]]<ref>{{Cita web|url=https://www.solvusoft.com/it/file-extensions/software/andreas-j-nsson/angelscript/|titolo=Cos'è AngelScript? (di Andreas Jönsson)|sito=www.solvusoft.com|accesso=2024-04-08}}</ref>.
== Descrizione ==
AngelScript è caratterizzato da una tipizzazione statica delle sue variabili, un [[Programmazione orientata agli oggetti|orientamento agli oggetti]] (simili ai puntatori [[C++]], ma con unla differenza che la [[garbage collection|pulizia mnemonica]] chedi Angelscript usaadopera la tecnica del [[Reference counting|conteggio dei riferimenti]]), [[Ereditarietà (informatica)|ereditarietà]] singola ed [[ereditarietàe multipla]] con l'ausilio di interfacce, nonché la possibilità di gestire un [[Overloading|overloadsovraccarico]] degli operatori. AngelScript può essere utilizzato con qualsiasi [[Ambiente di sviluppo integrato|IDE]] che sia stato pensato per [[C++]], come: [[NetBeans]], [[Geany]] ed [[Eclipse IDE|Eclipse]].
All'interno di un ambiente AngelScript si possono utilizzare nativamente le funzioni appertenenti ai linguaggi di programmazione [[C (linguaggio di programmazione)|C]] e [[C++]].<ref>{{Cita web|url=http://www.iue.tuwien.ac.at/pdf/ib_2010/CP2010_Weinbub_1.pdf|titolo="ViennaIPD - An Input Control Language for Scientific Computing"|autore=Josef Weinbub|autore2=Karl Rupp|autore3=Selberherr|autore4=Siegfried|data=2010|lingua=en|formato=PDF|accesso=27 aprile 2019}}</ref><ref>{{Cita web|url=http://accu.org/index.php/journals/1608|titolo="Simplifying the C++/Angelscript Binding Process"|autore=Stuart Golodetz|sito=ACCU|data=febbraio 2010|lingua=en|accesso=27 aprile 2019}}</ref> La sintassi della [[Classe (informatica)|classe]] di AngelScript è identica a quelle delle [[C++#Definizione di Classe|classi di C++]] in base alla progettazione. Non sonoessendo necessarie funzioni proxy per incorporare AngelScript nelle applicazioni [[C++]] facilitandoviene facilitata l'integrazione dei due linguaggi.<ref>{{Cita libro|nome=Michael|cognome=Dickheiser|titolo=Game Programming Gems 6|url=https://archive.org/details/gameprogrammingg0000unse_e9q4|anno=2006|editore=[[Don Schechter#Charles River Media Group|Charles River Media]]|ISBN=1584504501}}</ref>
Esistono diverse differenze tra AngelScript e [[C++]]:
* AngelScript non supportatollera [[Ereditarietà multipla|l'ereditarietà multipla]]; tuttavia, un simile risultato può essere ottenuto utilizzando le interfacce.
* Non è ammessa la dichiarazione dei [[Metodo (programmazione)|metodi]] o proprietà al di fuori del corpo della classe.
* Tutti i metodi (inclusi [[Costruttore (informatica)|costruttori]] e [[Distruttore (informatica)|distruttori]]) sono [[Funzione virtuale|virtuali]].
== Utilizzo ==
AngelScript è stato utilizzatopiù volte adoperato nello sviluppo di videogiochi,<ref>{{Cita pubblicazione|autore=Taketoshi Nishimori|autore2=Yasushi Kuno|anno=2012|mese=Maggio|titolo=Join token: A language mechanism for programming interactive games|rivista=Entertainment Computing|volume=3|pp=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}}</ref> alcuni esempi sono: ''[[Amnesia: The Dark Descent]]'',<ref name="official-list">{{Cita web|url=http://angelcode.com/angelscript/users.html|titolo=Applications using AngelScript|sito=AngelCode|dataaccesso=April 27, 2019}}</ref> ''[[Amy (videogioco)|Amy]]'',<ref name="official-list" /> ''[[Dustforce]]'',<ref name="official-list" /> ''[[penumbra: Overture|Penumbra: Ouverture]]'',<ref name="official-list" /> ''[[Penumbra: Requiem]]'',<ref name="official-list" /> ''[[Puddle]]'',<ref name="official-list" /> ''[[Sine Mora]]'',<ref name="official-list" /> ''[[SuperTuxKart]]'',<ref name="official-list" /> ''[[Warhammer: Mark of Chaos]]'',<ref name="official-list" /> ''[[Warsow (videogioco)|Warsow]]''<ref name="official-list" /> e ''[[Jazz Jackrabbit 2|Jazz Jackrabbit 2 Plus]]'',<ref name="official-list" /> oltre ad essere supportatotollerato come linguaggio di scripting in ''Urho3D''.
[[Hazelight Studios]], inoltre ha sviluppato un plugin che integra AngelScript nell'[[Unreal Engine]]; questo è statol'hanno utilizzato nel 2022 per scrivere il loro gioco, ''[[It Takes Two (videogioco)|It Takes Two]]'', il loro videogioco, in AngelScript.
Un altro possibile esempio did'uso utilizzodel linguaggio è il programma interattivo di d'animazione 3D dell'[[Università di Ulma|Università di Ulm]].<ref>{{Cita web|url=http://graphics.uni-ulm.de/lehre/showcases/animation/0405/index.php|titolo=Animal Race|sito=[[University of Ulm]]|lingua=de|dataaccesso=2013-05-31|dataarchivio=25 maggio 2014|urlarchivio=https://web.archive.org/web/20140525232744/http://graphics.uni-ulm.de/lehre/showcases/animation/0405/index.php|urlmorto=sì}}</ref>
Nell'ambito della [[robotica]], invece, sipuò usaessere adoperato per programmare le regole comportamentali di agenti robotici.<ref name="BrandoffSayama2009">{{Cita conferenza|titolo=Cultural transmission in robotic swarms through RFID cards|conferenza=IEEE Symposium on Artificial Life|DOI=10.1109/ALIFE.2009.4937709|anno=2009|isbn=978-1-4244-2763-5}}</ref>
== Note ==
|