Panda3D es un motor de juegos que incluye gráficos, audio, E/S, detección de colisiones y otras capacidades relevantes para la creación de juegos 3D. [ 2 ] Panda3D es software libre y de código abierto bajo la licencia BSD revisada .
El lenguaje de desarrollo de juegos previsto para Panda3D es Python . El motor en sí está escrito en C++ y utiliza un generador automático de envoltorios para exponer toda su funcionalidad en una interfaz Python. Este enfoque ofrece al desarrollador las ventajas del desarrollo en Python, como el desarrollo rápido y la gestión avanzada de la memoria, pero mantiene el rendimiento de un lenguaje compilado en el núcleo del motor. Por ejemplo, el motor está integrado con el recolector de basura de Python y las estructuras del motor se gestionan automáticamente.
El manual y los programas de ejemplo utilizan Python por defecto, aunque C++ está disponible como alternativa. Ambos lenguajes son totalmente compatibles. Python es el lenguaje más utilizado por los desarrolladores, pero C++ también es común.
Entre los usuarios de Panda3D se encuentran los desarrolladores de varios videojuegos comerciales de gran envergadura, algunos proyectos de código abierto y varios cursos universitarios que aprovechan la corta curva de aprendizaje de Panda3D.
Historia
El estudio Disney VR es una división de Disney creada para desarrollar atracciones 3D para los parques temáticos de Disney. Crearon una atracción llamada "Aladdin's Magic Carpet", y el motor que desarrollaron para ella se convirtió posteriormente en Panda3D. El motor en su forma actual guarda poca semejanza con el de aquellos primeros años. Con el tiempo, Panda3D se utilizó para otras atracciones de realidad virtual en los parques temáticos de Disney, y finalmente se empleó en la creación de Toontown Online , un juego en línea ambientado en un mundo de dibujos animados, y más tarde para el segundo MMORPG , Pirates of the Caribbean Online . [ 3 ]
En 2002, el motor se lanzó como código abierto. Según los autores, esto se hizo para que pudieran "trabajar más fácilmente con universidades en proyectos de investigación de realidad virtual". [ 4 ] Sin embargo, Panda3D tardó un tiempo en consolidarse como proyecto de código abierto. Del artículo:
El sistema, si bien era bastante utilizable por el equipo que lo desarrolló, no estaba del todo preparado para ser de código abierto. Había varios usuarios interesados, pero construir e instalar el sistema era increíblemente complejo, y había poca documentación o código de ejemplo, por lo que no existía una comunidad de código abierto significativa de inmediato.
Sin embargo, la publicación del motor como código abierto permitió que el Centro de Tecnología del Entretenimiento de Carnegie Mellon participara en su desarrollo. Si bien los ingenieros de Disney continuaron realizando la mayor parte del desarrollo, el equipo de Carnegie Mellon se especializó en perfeccionar el motor para su uso público, redactar la documentación y añadir ciertas características avanzadas, como los sombreadores.
El nombre de Panda3D fue en su momento un acrónimo: "Platform Agnostic Networked Display Architecture" (Arquitectura de pantalla en red independiente de la plataforma). [ 5 ] Sin embargo, dado que esa frase ha perdido en gran medida su significado, la palabra "Panda3D" rara vez se considera un acrónimo en la actualidad.
Diseño
Panda3D es un motor de grafos de escena . [ 6 ] Esto significa que el mundo virtual es inicialmente un espacio cartesiano vacío en el que el programador del juego inserta modelos 3D. Panda3D no distingue entre modelos 3D "grandes", como el modelo de una mazmorra o isla completa, y modelos 3D "pequeños", como el modelo de una mesa o una espada. Tanto los modelos grandes como los pequeños se crean utilizando un programa de modelado estándar como Blender , 3ds Max o Maya . Luego, los modelos se cargan en Panda3D y se insertan en el espacio cartesiano.
El grafo de escena de Panda3D expone la funcionalidad de OpenGL y DirectX de forma bastante literal. Por ejemplo, tanto OpenGL como DirectX cuentan con capacidades de niebla . Para habilitar la niebla en Panda3D, basta con almacenar los parámetros de niebla en un nodo del grafo de escena. Estos parámetros coinciden exactamente con los parámetros de las llamadas equivalentes en las API subyacentes. De esta forma, Panda3D puede considerarse una capa de abstracción sobre las API de bajo nivel. Su diferencia radica en que almacena la escena, a diferencia de OpenGL y DirectX. Por supuesto, también proporciona operadores de alto nivel, como la carga de modelos, la ejecución de animaciones, la detección de colisiones, etc.
Panda3D se diseñó antes de la existencia de los sombreadores de vértices y píxeles. En 2005, incorporó soporte para sombreadores escritos manualmente. Sin embargo, los usuarios han tardado en aprovechar las técnicas modernas de iluminación por píxel en sus juegos. Los desarrolladores creen que esto se debe a que la programación de sombreadores puede ser bastante compleja y a que muchos desarrolladores de videojuegos prefieren que el motor lo gestione automáticamente.
Para remediar esta situación, los desarrolladores de Panda3D han incorporado recientemente la capacidad de sintetizar sombreadores automáticamente. Esta síntesis se produce si el modelador 3D marca un modelo para iluminación por píxel, o si aplica un mapa de normales , un mapa de brillo, un mapa de autoiluminación u otra capacidad que exceda las capacidades del pipeline de función fija. [ 7 ] El objetivo de la síntesis es renderizar el modelo tal como lo concibió el modelador, sin ninguna intervención del programador.
Capacidades no gráficas
Panda3D proporciona capacidades distintas a la renderización 3D. Entre las principales se encuentran: [ 8 ]
- Herramientas de análisis de rendimiento
- Herramientas de exploración de grafos de escena
- Herramientas de depuración
- Un sistema completo de exportación e importación de obras de arte.
- Audio 3D, utilizando FMOD , OpenAL o Miles Sound System.
- Detección de colisiones
- Sistema de física e integración completa para Open Dynamics Engine y Bullet.
- Compatibilidad con teclado y ratón
- Compatibilidad con dispositivos de E/S
- Máquinas de estados finitos
- Redes de contactos
- Inteligencia artificial
Licencia de software
Resumen
Panda3D es de código abierto y, desde el 28 de mayo de 2008, es software libre bajo la licencia BSD revisada . Las versiones anteriores a esa fecha no se consideran software libre debido a ciertos errores en el diseño de la antigua licencia de Panda3D. A pesar de esto, dichas versiones anteriores de Panda3D también pueden utilizarse para el desarrollo de juegos, tanto gratuitos como comerciales, sin coste alguno.
Evolución
En 2002, cuando el motor se convirtió en código abierto, el objetivo de los desarrolladores era crear una licencia de software libre . Sin embargo, la licencia tenía algunos defectos que la hacían no libre: requería, según algunos, enviar los cambios a Panda.Project@Disney.com, [ 9 ] y prohibía explícitamente la exportación del software a varios países contra los que Estados Unidos mantenía embargos comerciales. [ 10 ]
El 28 de mayo de 2008, la rama principal del desarrollo de Panda3D cambió a la licencia BSD . Sin embargo, las versiones antiguas todavía usan la licencia anterior. [ 11 ]
Panda3D utiliza varias bibliotecas de terceros cuyas licencias no son de software libre , como FMOD , Nvidia Cg , DirectX y MFC . Sin embargo, la mayoría de estos módulos se pueden excluir fácilmente de la instalación.
Proyectos que emplean Panda3D
- Toontown Online (desaparecido) y sus servidores privados
- Pirates of the Caribbean Online (ya desaparecido) y sus servidores privados
- Piratas fantasma de la isla Vooju
- Una historia de vampiros
Véase también
Referencias
- ↑ "Versión 1.10.16" . 25 de diciembre de 2025. Consultado el 7 de abril de 2026 .
- ↑ "Manual de Panda3D" .
- ↑ "Postmortem: Toontown de Disney Online" . www.gamasutra.com . 28 de enero de 2004. Archivado del original el 10 de mayo de 2012. Consultado el 11 de octubre de 2020 .
- ↑ "Actas de PyCon 2004: El motor Panda3D: programación en Python para el desarrollo de juegos y simulaciones" . Archivado del original el 17 de agosto de 2005.
- ↑ "Cobertura de GameDev.net de la Game Developer's Conference, Austin, 2008" . Archivado del original el 28 de septiembre de 2008.
- ↑ "Capítulo del manual de Panda3D: 'El grafo de escena'"" .
- ↑ "Capítulo del manual de Panda3D: 'El generador de sombreado'"" .
- ↑ "Características | Panda3D" . www.panda3d.org . 16 de agosto de 2018. Consultado el 11 de octubre de 2020 .
- ↑ "Hilo del foro con comentario legal de Richard Stallman sobre la antigua licencia de Panda3D" . 10 de mayo de 2005.
- ↑ "Texto completo de la licencia original (anterior a la versión 1.5.3) de Panda3D" .
- ↑ "Capítulo del manual de Panda3D: 'Introducción a Panda'"" .
Enlaces externos
- Sitio web oficial
- Software libre multiplataforma
- Software multiplataforma
- Tecnología Disney
- Software gratuito de gráficos 3D
- Motores de juegos gratuitos
- Software libre programado en C++
- Motores de juegos para Linux
- Motores de juegos programables con Python (lenguaje de programación)
- Software que utiliza la licencia BSD.