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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.