Sobre o projeto

O Permafrost Engine é um motor de jogo de estratégia em tempo real (RTS) em OpenGL 3.3 escrito em C. Foi projetado para emular jogos RTS clássicos, incorporando ideias modernas. O motor é a base do EVERGLORY, um jogo RTS principal disponível na Steam com uma demo gratuita que inclui acesso a todos os scripts de jogabilidade para aprendizado e modificação. As principais características incluem: - Pipeline programável OpenGL 3.3 com extensões modernas quando disponíveis - Formato de modelo de texto personalizado para interoperabilidade de ferramentas e formato binário pré-compilado para carregamento rápido em tempo de execução - Animação esquelética com skinning na GPU, agrupando dados de pose de animação em uma textura para renderização eficiente de grandes quantidades de entidades animadas - Modelo de reflexão Phong com materiais, mapeamento de sombras de luz direcional, mapeamento bump/normal/parallax - Splatting de textura de terreno, skybox, renderização de LOD de malha baseada em distância, renderização em lote com lotes dinâmicos, streaming para GPU baseado em ringbuffer - Câmeras RTS e FPS, renderização de mapa baseada em tiles com formato de arquivo personalizado - Renderização de água com reflexão, refração e efeitos de borda suave - Síntese programática de texturas usando Image Quilting, tiling aperiódico usando Wang Tiling - Internos do motor expostos ao Python 2.7 para scripting, console Python interativo embutido, sistema de eventos, framework de UI baseado em Nuklear - Raycasting eficiente, editor de mapa/cena, sistema de pausa/retomada, renderização rápida de mapas enormes - Geração de grafo/grid de navegação de mapa, steering/flocking de boids, pathfinding hierárquico de campo de fluxo, tratamento de obstáculos dinâmicos - Evitação dinâmica de colisões usando Hybrid Reciprocal Velocity Obstacles e algoritmo ClearPath, movimento de unidades baseado em formação, reorganização ótima de formação usando Algoritmo Húngaro - Pathfinding para diferentes tipos/tamanhos de unidades usando camadas de navegação, unidades terrestres/aquáticas/aéreas, computações paralelizadas de movimento e pathfinding - Simulação de multidão baseada em GPU com compute shaders, indexação espacial de grid de bitmap acelerada por SIMD, rastreamento em tempo real de pertencimento de entidades a regiões espaciais dinâmicas - Sistema de áudio com efeitos posicionais e múltiplos canais de efeitos globais - Recursos de RTS: minimapa, seleção de unidades, combate, fog-of-war, construção de base, automação de trabalhadores/produção, coleta/transporte de recursos, mecânicas de guarnição/transporte, combate à distância com simulação de física de projéteis - Suporte para diferentes resoluções e proporções de tela, configurações gráficas configuráveis - Serialização/desserialização de todo o estado do interpretador Python, salvando/restaurando qualquer sessão do motor, incluindo estado definido em Python - Simulação e renderização multithread em um pipeline de 2 estágios, visualizações de depuração avançadas e instrumentação de profiling, contabilidade de memória leve - Sistema de fibras para tarefas leves agendadas no espaço do usuário, tarefas Python com suporte de fibras para multitarefa cooperativa, forking sem cópia usando semântica Copy-on-Write em nível de página - Multiplataforma (Linux e Windows), launcher Windows para captura automática de minidump e log em erros As dependências incluem SDL2, GLEW, Python 2.7, OpenAL Soft, mi-malloc, stb_image, khash e nuklear. Todas podem ser compiladas a partir do código-fonte e distribuídas com o binário do jogo. As instruções de compilação são fornecidas para Linux e Windows (usando mingw-w64 ou MSYS2, com uma solução Visual Studio 2022 também disponível). O motor é licenciado sob GPLv3 com uma exceção especial de linking, e licenciamento alternativo pode ser concedido caso a caso. O desenvolvimento é documentado através de uma série de devlogs no YouTube cobrindo tópicos como salvar o interpretador Python, pathfinding de grupo, fog of war, otimização de desempenho, fibras, construção de base e mais. O projeto tem uma comunidade ativa no Discord para discussão.