Sobre el proyecto

Permafrost Engine es un motor de juego de estrategia en tiempo real (RTS) en OpenGL 3.3 escrito en C. Está diseñado para emular juegos RTS clásicos incorporando ideas modernas. El motor es la base de EVERGLORY, un juego RTS insignia disponible en Steam con una demo gratuita que incluye acceso a todos los scripts de jugabilidad para aprendizaje y modificación. Las características clave incluyen: - Pipeline programable de OpenGL 3.3 con extensiones modernas cuando están disponibles - Formato de modelo de texto personalizado para interoperabilidad de herramientas y formato binario precompilado para carga rápida en tiempo de ejecución - Animación esquelética con skinning en GPU, agrupando datos de pose de animación en una textura para renderizado eficiente de grandes cantidades de entidades animadas - Modelo de reflexión Phong con materiales, mapeo de sombras de luz direccional, mapeo bump/normal/parallax - Splatting de texturas de terreno, skybox, renderizado LOD de malla basado en distancia, renderizado por lotes con lotes dinámicos, streaming a GPU basado en ringbuffer - Cámaras RTS y FPS, renderizado de mapas basado en tiles con formato de archivo personalizado - Renderizado de agua con reflexión, refracción y efectos de borde suave - Síntesis programática de texturas usando Image Quilting, mosaico aperiódico usando Wang Tiling - Internos del motor expuestos a Python 2.7 para scripting, consola Python interactiva embebida, sistema de eventos, framework de UI basado en Nuklear - Raycasting eficiente, editor de mapas/escenas, sistema de pausa/reanudación, renderizado rápido de mapas enormes - Generación de grafo/cuadrícula de navegación de mapas, steering/flocking de boids, pathfinding jerárquico de campos de flujo, manejo de obstáculos dinámicos - Evitación dinámica de colisiones usando Hybrid Reciprocal Velocity Obstacles y algoritmo ClearPath, movimiento de unidades basado en formaciones, reorganización óptima de formaciones usando el Algoritmo Húngaro - Pathfinding para diferentes tipos/tamaños de unidades usando capas de navegación, unidades terrestres/acuáticas/aéreas, movimiento y cálculos de pathfinding paralelizados - Simulación de multitudes basada en GPU con compute shaders, indexación espacial de cuadrícula de bitmap acelerada por SIMD, seguimiento en tiempo real de pertenencia de entidades a regiones espaciales dinámicas - Sistema de audio con efectos posicionales y múltiples canales de efectos globales - Características RTS: minimapa, selección de unidades, combate, niebla de guerra, construcción de bases, automatización de trabajadores/producción, recolección/transporte de recursos, mecánicas de guarnición/transporte, combate a distancia con simulación de física de proyectiles - Soporte para diferentes resoluciones y relaciones de aspecto, configuración gráfica configurable - Serialización/deserialización de todo el estado del intérprete de Python, guardado/restauración de cualquier sesión del motor incluyendo estado definido en Python - Simulación y renderizado multihilo en un pipeline de 2 etapas, visualizaciones de depuración avanzadas e instrumentación de perfilado, contabilidad de memoria ligera - Sistema de fibras para tareas ligeras programadas en espacio de usuario, tareas Python respaldadas por fibras para multitarea cooperativa, forking sin copia usando semántica Copy-on-Write a nivel de página - Multiplataforma (Linux y Windows), lanzador de Windows para captura automática de minidumps y registros en errores Las dependencias incluyen SDL2, GLEW, Python 2.7, OpenAL Soft, mi-malloc, stb_image, khash y nuklear. Todas pueden compilarse desde el código fuente y distribuirse con el binario del juego. Se proporcionan instrucciones de compilación para Linux y Windows (usando mingw-w64 o MSYS2, con una solución de Visual Studio 2022 también disponible). El motor está licenciado bajo GPLv3 con una excepción de enlace especial, y se puede otorgar licenciamiento alternativo caso por caso. El desarrollo se documenta a través de una serie de devlogs de YouTube que cubren temas como guardar el intérprete de Python, pathfinding grupal, niebla de guerra, optimización de rendimiento, fibras, construcción de bases y más. El proyecto tiene una comunidad activa en Discord para discusión.