# Godot

O Godot é um motor de jogo de código aberto publicado no âmbito da licença MIT desenvolvido por sua própria comunidade. Foi usado internamente em várias empresas da América Latina antes de ter se tornado código aberto e lançado para o público. Tem a capacidade de exportar os projetos para diversas plataformas.

## Origem

O Godot começou a ser desenvolvido por Juan Linietsky e Ariel Manzur em conjunto com a OKAM Studio no começo de 2007 na Argentina. O nome "Godot" foi escolhido por causa de suas semelhanças com a peça teatral Waiting For Godot, de Samuel Beckett, por que há um desejo insaciável de adicionar novos recursos e características ao engine, que levaria ele mais perto de um produto exaustivo, porém, isto nunca aconteceria.
Em fevereiro de 2014 o código fonte foi publicado no GitHub sob a licença MIT (Instituto de Tecnologia de Massachusetts). No dia 15 de dezembro de 2014 foi disponibilizado a primeira versão estável, que contava com a adição de lightmapping, suporte para navmesh e mais shaders. A próxima versão, 1.1, foi lançada no dia 21 de maio de 2015, e trouxe melhorias para o preenchimento automático de editor de código, um editor visual para os shaders, uma API nova para o sistema operacional para a gestão de janelas, um motor 2D reescrito, suporte novo para polígonos de navegação 2D, um exportador muito melhorado para Collada para o Blender, e um novo tema escuro. O motor 2D novo (na época) tinha a inclusão de shaders, materiais, ordenação Z independente por nó, luzes, sombras com oclusores poligonais, "normal mapping" e suporte para fontes SDF.
O Godot 2.0 foi lançado no dia 23 de fevereiro de 2016. Algumas das mudanças e adições que foram feitas incluem: melhorias à instanciação e herança de cenas, um novo navegador de arquivos, edição de múltiplas cenas e melhorias diversas ao debugger. Tal versão foi sucedida pela versão 2.1, em agosto de 2016, que introduziu uma base de dados para os "assets", um profiler e uma API de plugins.
A versão 3.0 foi lançada no dia 29 de janeiro de 2018, e adicionou um novo Renderizador BEF implementado no OpenGL ES 3.0, compatibilidade com realidade virtual, e suporte para C# (via Mono). A versão 3.0 também trouxe o motor de física Bullet em além do back-end de física 3D já integrado já integrado no motor (Godot), e também foi a primeira versão do Godot a ser incluída no Debian. A versão 3.1 do motor foi lançada no dia 13 de março de 2019 e teve como seu recurso adicionado mais notável a adição do GDScript digitado estaticamente, um sistema de classes de script para o existente GDScript e um renderizador OpenGL ES 2.0, para dispositivos mais antigos e menos poderosos, e também dispositivos móveis. O Godot 3.2 foi lançado no dia 29 de janeiro de 2020 e trouxe grandes melhorias à documentação, melhorias à integração de C# e suporte para arquivos gITF 2.0. O líder de desenvolvimento, Juan Linietsky, passou grande parte do seu tempo trabalhando em um "branch" separado com Vulkan, que seria depois juntado ao master para a versão 4.0, então a maioria do trabalho do 3.2 foi feito pelos outros contribuidores. Trabalho no Godot 3.2 continuou como um lançamento com suporte à longo prazo por um ano, incluindo o Godot 3.2.2, no dia 26 de junho do mesmo ano, um grande "patch" que trouxe recursos como loteamento de OpenGL ES 2.0 e suporte de C# para iOS. No dia 17 de março de 2021, a estratégia de versão foi trocada para melhor refletir uma estratégia de versão semântica, com um "branch" 3.3 estável e um "branch" 3.x para o backport de recursos para uma versão 3.4 futura. No dia 21 de abril de 2021, foi lançado o Godot 3.3, que trouxe suporte para ARM no macOS, suporte para Android App Bundles, suporte para MP3, suporte para Autodesk FBX, suporte para WebXR e um editor web. A versão 3.4 foi lançada no dia no dia 6 de novembro do mesmo ano, após 6 meses de desenvolvimento. Esta versão foi lançada com o intuito de implementar recursos que estavam faltando e consertar bugs que eram críticos para publicar jogos 2D e 3D com o Godot 3, e também otimizar e deixar mais confiáveis vários recursos já existentes.

### Histórico de Versões

Histórico de Versões do Godot :
| Versão | Data de Lançamento | Notas Adicionais | Versão Patch Mais Recente |
| 1.0 | Dezembro de 2014 | Primeira versão estável | 1.0 |
| 1.1 | Maio de 2015 | Melhorias ao auto-complete no editor de código, adição de um editor visual de shaders, motor 2D reescrito e novo suporte a polígonos 2D de navegação. | 1.1 |
| 2.0 | Fevereiro de 2016 | Interface de usuário e debugger melhorados | 2.0.4.1 |
| 2.1 | Julho de 2016 | Introdução da base de dados de addons, profiler e API de plugin | 2.1.6 |
| 3.0 | Janeiro de 2018 | Novo renderizador baseado em física, suporte para Mono (C#) e adição do Bullet como motor de física | 3.0.6 |
| 4.0 | Março de 2023 | Adiciona suporte para a API gráfica Vulkan. Muda de Mono para .NET 6 CoreCLR. Introduz iluminação global baseada em SDF, juntamente com várias alterações ao editor e otimizações de desempenho. | 4.0.3 |
| 4.1 | Julho de 2023 | Atualizações nos elementos de desempenho, núcleo e script. Introdução de variáveis ​​estáticas no GDScript e o atributo [GlobalClass] no C#. O suporte para várias janelas e a capacidade de desanexar editores de script. Aprimoramento da turbulência de partículas e a introdução de texturas de ruído 3D. Algoritmos de prevenção reformulados para navegação de IA. | 4.1.1 |

## Recursos

Godot tem como objetivo oferecer um ambiente de desenvolvimento de jogos totalmente integrado. Ele permite que os desenvolvedores criem um jogo, sem precisar de outras ferramentas além daquelas usadas para a criação de conteúdo (recursos visuais, música, etc.). A arquitetura do motor é construída em torno do conceito de uma árvore de "nós". Os nós são organizados dentro de "cenas", que são grupos de nós reutilizáveis, instáveis, herdáveis ​​e aninhados. Todos os recursos do jogo, incluindo scripts e ativos gráficos, são salvos como parte do sistema de arquivos do computador (em vez de em um banco de dados). Esta solução de armazenamento visa facilitar a colaboração entre equipes de desenvolvimento de jogos usando sistemas de controle de versão de software.

### Linguagens de programação

O Godot trabalha com quatro principais linguagens de programação (com suporte a outras linguagens, embora algumas possam ter um suporte precário ou limitado):
* GDScript: A linguagem principal do programa, uma linguagem que tem uma sintaxe muito semelhante ao Python, porém de forma otimizada para a criação de jogos.
* C#: Adicionado na versão 3.0, com o objetivo de atender o padrão da indústria.
* VisualScript: Programação via interface gráfica voltada para pessoas que não sabem programar ou para programadores que desejam expor comportamentos do jogo para projetistas, artistas, etc.
* GDNative (ou GDExtension na Godot 4): Similar à linguagem C++, utilizada para modificação da própria engine, bem como para criar extensões e novas funções.

### Plataformas suportadas

O mecanismo suporta implantação em várias plataformas e permite a especificação de compressão de textura e configurações de resolução para cada plataforma. Mesmo que o site Godot forneça binários apenas para Linux, macOS e Microsoft Windows, sua natureza de código aberto nos permite usar o editor em vários sistemas operacionais, como o BSD, ajustando-o. A Engine oferece suporte a várias plataformas, incluindo desktop e mobile. As plataformas atualmente suportadas a partir de Godot 3.3.2 são:
* Plataformas móveis Android, iOS
* Plataformas de desktop Linux, macOS, Microsoft Windows (plataforma universal do Windows), BSD
* Plataforma Web HTML5, WebAssembly
* Plataformas de realidade virtual / estendida HTC Vive, Valve Index, Oculus Rift, Oculus Go, Oculus Quest, todos os fones de ouvido Microsoft MR, ARKit da Apple e muitos mais
Há também um editor baseado na web hospedado pela comunidade Godot disponível para fins de teste. Mesmo que o mecanismo Godot possa ser executado em consoles, Godot não oferece suporte oficialmente, pois é um projeto de código aberto em vez de uma empresa licenciada e eles não podem publicar código específico de plataforma sob licença de código aberto. No entanto, ainda é possível portar jogos para consoles graças a serviços prestados por empresas terceirizadas

### Renderização

O motor gráfico de Godot usa OpenGL ES 3.0 para todas as plataformas suportadas; caso contrário, OpenGL ES 2.0 é usado. Futuro suporte para Vulkan está sendo desenvolvido, que também inclui a possibilidade de suporte para Metal usando Molten VK. O mecanismo suporta mapeamento normal, especularidade, sombras dinâmicas usando mapas de sombra, iluminação global integrada e dinâmica e efeitos de pós-processamento de tela inteira como flor, DOF, HDR e correção de gama. Uma linguagem de shader simplificada, semelhante a GLSL, também está incorporada. Shaders podem ser usados ​​para materiais e pós-processamento. Como alternativa, eles podem ser criados manipulando nós em um editor visual.
Godot também inclui um motor gráfico 2D separado que pode operar independentemente do motor 3D. O mecanismo 2D oferece suporte a recursos como luzes, sombras, sombreadores, conjuntos de blocos, rolagem paralela, polígonos, animações, física e partículas. Também é possível misturar 2D e 3D usando um 'nó da janela de visualização'.

### Animações

O Godot possui um sistema de animação sofisticado com a capacidade de criar esqueletos (skeletons), inversão cinética (inverse kinematic) e deformação (morphing).

### Física

O Godot tem um sistema de física integrado para 2D e 3D que suporta colisões, objetos rígidos, cinética de corpos e simulação de viaturas.

### Plataformas

O Godot dá suporte à múltiplas plataformas. Num projeto, desenvolvedores têm controle do lançamento para desktops, dispositivos móveis, web e consoles. Também permite a especificação de compressão de texturas e opções de resolução para cada plataforma que o jogo suporta.
Atualmente, dá-se suporte nativo às plataformas Windows, OS X, Linux, FreeBSD, Android, iOS, BlackBerry 10, HTML5. Também há suporte em desenvolvimento para Windows Runtime.