| AngelScript | |
|---|---|
Logotipo do AngelScript | |
| Paradigma | Multiparadigma, Imperativa |
| Surgido em | 28 de Março de 2003 |
| Última versão | 2.35.0 (5 de dezembro de 2020) |
| Criado por | Andreas Jonsson |
| Estilo de tipagem | Estática e dinâmica, Forte |
| Principais implementações | GNUC, Marmalade |
| Influenciada por | C++ |
| Plataforma | Multiplataforma |
| Licença | AngelScript License (zlib) |
| Extensão do arquivo | .cpp |
| Página oficial | https://www.angelcode.com/angelscript/ |
AngelScript é uma biblioteca de códigos para uso em C++, O seu objetivo é fornecer uma biblioteca fácil de usar e que seja poderosa, mas que não seja sobrecarregada por uma grande quantidade de recursos raramente usados.
O desenvolvimento começou em fevereiro de 2003, com o primeiro lançamento público em 28 de março de 2003, com apenas as funcionalidades mais básicas.
O AngelScript está estruturado em torno de um mecanismo no qual o aplicativo deve registrar as funções, propriedades e até tipos, que os scripts poderão usar. Os scripts são então compilados em módulos, nos quais o aplicativo pode ter um ou mais módulos, dependendo da necessidade do aplicativo. O aplicativo também pode expor uma interface diferente para cada módulo através do uso de perfis de acesso. Isso é especialmente útil quando o aplicativo trabalha com vários tipos de scripts, por exemplo GUI, controle de IA, etc. Possui digitação estática, identificadores de objetos (semelhantes aos do C++), orientação a objetos, herança única, herança múltipla com interfaces. Permite que os operadores sejam registrados e sobrecarregados.
O AngelScript é muito utilizado em videos-games. Incluindo jogos como, Amnesia: The Dark Descent, Amnesia: A Machine for Pigs, Penumbra Overture etc. A linguagem também é usada em robôs, por exemplo, para programar regras comportamentais.
// This function returns a value in the output parameter
void func(int &out outputValue)
{
outputValue = 42;
}
// Call the function with a valid lvalue expression to receive the output value
int value;
func(value);
// Call the function with 'void' argument to ignore the output value
func(void);