Irrlicht (pronunciado [ˈɪʁlɪçt] en alemán) es un motor de juegos de código abierto escrito en C++ . Es multiplataforma , se ejecuta oficialmente en Windows , macOS , Linux y Windows CE y debido a su naturaleza abierta, están disponibles puertos para otros sistemas, incluidos FreeBSD , Xbox (hasta la versión 1.8.1 de Irrlicht), PlayStation Portable , [1] Symbian , [2] iPhone , [3] AmigaOS 4 , [4] Sailfish OS a través de un contenedor Qt/QML, [5] y Google Native Client . [6]
Irrlicht es conocido por su pequeño tamaño y compatibilidad con hardware nuevo y antiguo por igual, facilidad de aprendizaje y una gran comunidad amigable. [7] [ ¿ fuente no confiable? ] Existen enlaces no oficiales para muchos lenguajes, incluidos AutoIt , [8] C++Builder , [9] FreeBASIC , [10] GameMaker Language , [11] Java , [12] Lua , [13] .NET , [14] [15] [16] Object Pascal ( Delphi ), [17] [18] Perl , [19] Python , [20] [21] y Ruby , [22] aunque la mayoría de ellos no se han mantenido durante cinco años o más.
El desarrollo de Irrlicht comenzó en 2003 con un desarrollador, Nikolaus Gebhardt. [23] Solo después del lanzamiento de la versión 1.0 de Irrlicht en 2006, el equipo creció a diez miembros en 2011, la mayoría de ellos desarrolladores. [24]
Irrlicht es un término alemán común para referirse a un fuego fatuo .
Irrlicht admite la renderización 3D a través de OpenGL , DirectX 8, 9 y rasterizadores de software internos. DirectX 8 no es compatible después de 1.8.1, [25] terminando efectivamente el soporte para Xbox. Los renderizadores externos y los sistemas de ventanas se conectan a través de interfaces simples, dando lugar a un controlador de video Simple DirectMedia Layer (SDL) creado por la comunidad y soporte para dispositivos iPhone y Symbian . El motor viene con una biblioteca de renderizadores de materiales estándar, lo que permite materiales de respaldo donde el hardware del usuario no puede manejar métodos avanzados. Se pueden agregar nuevos materiales al motor en tiempo de ejecución, lo que permite a los usuarios escribir los suyos propios según sea necesario. Además de los materiales de canalización de función fija heredados, se admiten sombreadores de píxeles y vértices programables (1.1 a 3.0 y 4.0 usando GLSL), programas de fragmentos y vértices ARB, HLSL , Cg y materiales GLSL .
Irrlicht admite muchos formatos de archivo. Cargará y mostrará archivos 3ds Max, modelos MD2 de Quake 2, objetos .obj de Wavefront, mapas .bsp de Quake 3, objetos Milkshape3D y archivos .x de DirectX. [26] Se han escrito cargadores de formatos adicionales como complementos externos. Las luces, las cámaras y los objetos 3D se administran como un árbol de nodos de escena , entidades agrupables arbitrarias vinculadas entre sí en un gráfico de escena . Estos nodos son responsables de su propio comportamiento, pero también pueden ser administrados por animadores, entre sí o manualmente por los usuarios.
Existen muchos tipos de nodos integrados que se pueden usar juntos para crear escenas complejas en interiores y exteriores. Es muy fácil crear nuevos nodos y se pueden agregar en tiempo de ejecución; la comunidad ofrece muchos tipos de nodos adicionales. Los tipos de nodos incluidos con Irrlicht incluyen un renderizador de terreno y cajas de cúpulas de cielo para renderizado en exteriores, partición binaria del espacio (BSP) para renderizado en interiores, mallas animadas basadas en huesos, sombras de esténcil, vallas publicitarias y sistemas de partículas, superficies de agua y primitivas.
Hay disponible una interfaz gráfica de usuario (GUI) en 2D personalizable , que admite muchos controles y la posibilidad de que los usuarios conecten sus propios widgets personalizados (o creados por la comunidad) en tiempo de ejecución. El sistema de eventos interno de Irrlicht proporciona eventos de mouse, teclado, joystick y GUI sin tener que depender de bibliotecas adicionales. [27]
El acceso al sistema de archivos se abstrae, lo que permite el acceso a archivos y carpetas independientes de la plataforma y el acceso transparente a los archivos dentro de los archivos ZIP . Otras funciones de E/S incluyen un lector y escritor de XML, la capacidad de tomar capturas de pantalla, manipular imágenes y mallas y luego guardarlas en varios formatos de archivo diferentes.
Irrlicht proporciona soporte para la detección de colisiones simples , incluida la selección con el mouse, pero se advierte a los usuarios que esto no pretende reemplazar a un motor de física con todas las funciones .
Irrlicht fue diseñado para poder cargar y guardar la escena actual en un archivo XML; esto, combinado con el modelo de licencia de código abierto del motor, ha atraído a varios programadores y desarrolladores a crear editores de mundos para Irrlicht con el fin de simplificar el proceso de creación de mundos. Un ejemplo de ello es el editor de mundos irrEdit , desarrollado por Nikolaus Gebhardt y otros miembros de la empresa Ambiera. [28] IrrEdit contiene un generador de mapas de luz de radiosidad y una interfaz de scripts que utiliza scripts de Squirrel .
Como Irrlicht no admite sonido por sí mismo, Ambiera también ha desarrollado irrKlang, una biblioteca de audio propietaria y no libre con una API similar a Irrlicht. [29] IrrEdit, desarrollada por el mismo grupo, admite el uso de sonidos en niveles creados por irrEdit para su uso con DLL compiladas compatibles con irrKlang. Además, entre las creaciones de Ambiera se encuentra irrXML, el analizador XML de Irrlicht.
Muchas bibliotecas de física tienen complementos y envoltorios escritos para Irrlicht, incluidos Nvidia PhysX , Bullet y Open Dynamics Engine .
Se pueden encontrar más extensiones en los foros de Irrlicht y en el proyecto irrExt, un proyecto paralelo de Irrlicht para complementos de propósito especial.
También hay algunas tecnologías nuevas en los foros, como el sombreado diferido o el mapeo de sombras . Muchos usuarios contribuyen con extensiones como Compute Shaders ( OpenGL 4.3) y Tessellation Shaders (Shader Model 5.0).