Panda3D - Le Bottin des Jeux Linux

Panda3D

🗃️ Specifications

📰 Title: Panda3D 🕹️ / 🛠️ Type: Tool
🗃️ Genre: Development 🚦 Status: 04. Released (status)
🏷️ Category: Development ➤ Framework & Tool ➤ Rendering Framework 🌍️ Browser version:
🔖 Tags: Development; 2D & 3D engine; Panda3d engine; Python; C/C++; Multi-platform; Scripting language; Physics engine; Audio system; Particle system; Lightmap; 3D texture; Keyboard; Mouse; Networking system; Artificial intelligence 📦️ Package Name:
🐣️ Approx. start: 2000-10-04 📦️ Arch package: ✓
🐓️ Latest: 2023-01-02 📦️ RPM package: ✓
📍️ Version: Latest: 1.10.13 / Dev: a2aa8af 📦️ Deb package:
🏛️ License type: 🕊️ Libre 📦️ Flatpak package:
🏛️ License: BSD 3-Clause 📦️ AppImage package:
🏝️ Perspective: Third & First person 📦️ Snap package:
👁️ Visual: 2D & 3D ⚙️ Generic binary: ✓
⏱️ Pacing: Real Time 📄️ Source: ✓
👫️ Played: Single & Multi 📱️ PDA support:
🎖️ This record: 5 stars 🕳️ Not used:
🎀️ Game design: 👫️ Contrib.: goupildb & Louis
🎰️ ID: 12246 🐛️ Created: 2011-09-15
🐜️ Updated: 2023-01-02

📖️ Summary

[fr]: Une bibliothèque graphique 3D, libre, multi-plateforme, et mature, pour le développement de jeux écrits en Python (surtout) ou en C++. Elle prend notamment en charge le graphisme, l'audio 3D, les entrées-sorties, la détection de collision, la physique (moteur de physique), le réseau, l'intelligence artificielle. Cette bibliothèque est mise en avant pour sa rapidité proche d'un langage compilé, sa tolérance aux erreurs, et sa courbe d'apprentissage assez rapide. [en]: A libre, multi-platform, 3D graphics library for developing games written in Python (mostly) or C ++. In particular, it supports graphics, 3D audio, I/O, collision detection, physics (physics engine), network, artificial intelligence. This library is put forward for its rapidity close to a compiled language, its error tolerance, and its learning curve quite fast.

🚦 Status

💡 Lights on: ✓ 🦺️ Work in progress:
🤔️ Why ?: ⭐️ Major upgrade 💥️ New version published (to be updated):
🎨️ Improvement of this entry: 🚧️ Some work remains to be done:

🎥️ Videos

🦝️ From Users: Gamefromscratch (201804),


📰 Progress: Gamefromscratch (1.10.0/201901),


🕯️ How To: (202004), (202009), (201411),


🎮️ Showcase: (202012), (201603), (201405),

🕸️ Links

🏡️ Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos pv(1.10.0/201901) t(202xxx) ts(202xxx) gd(202xxx) gu(201804) id(202xxx) r(202xxx) lp(202xxx) d(202012) d(201603) d(201405) d(201711) d(201508) d(201604) d(201507) d(201711) d(201503) d(201508) d(201603) d(201511) d(201508) d(201508) d(201208) ht(202004) ht(20209) ht(201411) ht(201209) g(202xxx) g[fr](202xxx) g[de](202xxx) g[ru](202xxx) g[pl](202xxx) g[cz](202xxx) g[sp](202xxx) g[pt](202xxx) g[it](202xxx) g[tr](202xxx)] [WIKI] [FAQ] [RSS] [Changelog 1 2 3]

💰 Commercial: (empty)

🍩️ Resources :
(empty):
🛠️ Technical informations
[Open Hub] [PCGamingWiki] [MobyGames]

🐘 Social
Devs (Panda3D Development Team (Carnegie Mellon University) 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [twitter] [Facebook] [Instagram] [flickr] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
Devs (Disney Online [fr] [en]): [Site 1 2] [Chat] [mastodon] [twitter] [Facebook] [Instagram] [Pinterest] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
The Project: [Blog] [Chat] [Forums] [mastodon] [twitter] [PeerTube] [YouTube] [PressKit] [reddit] [Discord]

🐝️ Related
[Wikipedia (Panda3D) [fr] [en] [de]]
[HOLaRSE [de]] [The Linux Game Tome]

📦️ Misc. repositories
[Repology] [pkgs.org] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage] [Snap] [PortableLinuxGames]

🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]

🕊️ Source of this Entry: -

🐘 Social Networking Update (on Mastodon)

🛠️ Title: Panda3D
🦊️ What's: A libre & mature 3D graphics library for developing games written in Python or C++
🏡️ https://www.panda3d.org
🐣️ https://github.com/panda3d
🔖 #LinuxGameDev #Programming #Library #RenderingFramework #Libre #Arch #RPM
📖 Our entry: http://www.lebottindesjeuxlinux.tuxfamily.org/en/online/lights-on/

🥁️ Update: 1.10.13
⚗️ Major upgrade ⭐️
📌️ Changes: https://www.panda3d.org/blog/sdk-1-10-13-release/
🐘 From: https://mastodon.social/@holarse/109568138407093054
📰(1.10) https://invidio.xamh.de/GRTFFwXmCyo

🦝️ https://invidio.xamh.de/UKKoNZYFVt8
🕹️ https://invidio.xamh.de/jID2u758Qgs

🕶️ A 3D scene rendered with Panda3D that appears to be an abbey with arches, the upper part of which is lit by the sun and the lower part by artificial lighting. The set highlights the rendering of these lights and shadows.

Panda3D is a libre, multi-platform, 3D graphics library for developing games written in Python (mostly) or C ++. In particular, it supports graphics, 3D audio, I/O, collision detection, physics (physics engine), network, artificial intelligence. This library is put forward for its rapidity close to a compiled language, its error tolerance, and its learning curve quite fast.

📕 Description [fr]

Une bibliothèque graphique 3D pour le développement de jeux écrits en Python ou en C++, par la Panda3D Development Team (Carnegie Mellon University), initié par Disney Online.
En C++.

Panda3D est une bibliothèque graphique 3D, libre, multi-plateforme, et mature, pour le développement de jeux écrits en Python (surtout) ou en C++. Elle prend notamment en charge le graphisme, l'audio 3D, les entrées-sorties, la détection de collision, la physique (moteur de physique), le réseau, l'intelligence artificielle. Cette bibliothèque est mise en avant pour sa rapidité proche d'un langage compilé, sa tolérance aux erreurs, et sa courbe d'apprentissage assez rapide.

Elle a notamment été utilisée dans la plupart des jeux Disney Online (qui est à l'origine de sa conception).

Utilisé par ces jeux / Used by these games: A3P, Limit Load, Yorg,


INNOVER, CRÉER, JOUER, RÉPÉTER
Panda3D est un moteur à code source ouvert, entièrement libre d'utilisation, qui permet de créer des jeux, des visualisations, des simulations et des expériences en 3D en temps réel. Son riche ensemble de fonctionnalités s'adapte facilement à votre flux de travail et à vos besoins de développement spécifiques.

PUISSANCE ET FLEXIBILITÉ INÉGALÉES
Panda3D vous met aux commandes, sans vous gêner. Toute la puissance de la carte graphique est exposée à travers une API facile à utiliser. Panda3D associe la rapidité du C++ à la facilité d'utilisation de Python pour vous offrir un rythme de développement rapide sans sacrifier les performances.

AUSSI LIBRE QUE POSSIBLE
L'utilisation de Panda3D est totalement libre, sans redevance, ni paiement de licence, ni enregistrement, ni frais d'aucune sorte, même pour une utilisation commerciale. Le code source est disponible pour que chacun puisse l'étudier et le modifier selon les termes de la licence permissive BSD.

MULTIPLATFORMES
Panda3D est un moteur multiplateforme qui s'enorgueillit de sa large prise en charge des matériels anciens et nouveaux. Les outils de déploiement inclus font du déploiement de votre application sur toutes les plates-formes prises en charge un jeu d'enfant.



🌍️ Wikipedia :

Panda3D est un moteur graphique libre, créé par Disney Online, désormais maintenu par l'Université Carnegie-Mellon. Il contient différents systèmes (gestions des collisions, système audio...) pour le développement de jeux 3D. Il était utilisé dans la plupart des jeux Disney Online, comme Disney's Toontown Online ou Pirates of the Caribbean Online.

Il a été conçu en C++, mais s'utilise surtout en Python. Son utilisation est entièrement textuelle : il n'existe pas d'outil dédié. Il est libre, mais la modification de la plupart des jeux n'est pas autorisée.

Développement

Le développement de Panda3D a été initié par Disney VR Studio, une branche de Disney chargée de créer des attractions 3D pour les parcs Disney. Cette branche a développé "Aladdin's Magic Carpet", dont le moteur 3D deviendra Panda3D. Plus tard, au fur et à mesure de l'utilisation et du développement de ce moteur, il fut réécrit pour le MMORPG Disney's Toontown Online.

En 2002, le moteur a été rendu open-source afin "de mieux collaborer avec les universités sur les projets de recherche sur la réalité virtuelle". Néanmoins, le moteur n'était pas totalement prêt pour l'open-source, il était très complexe et ne possédait que très peu de documentation.

Le fait que le moteur soit open-source a permis à l'Université Carnegie-Mellon de rejoindre son développement. Pendant que les ingénieurs de Disney continuaient de le développer, l'équipe de l'université a écrit la documentation, à inclure certaines technologies et à le préparer pour une utilisation publique.

Le nom de Panda3D était un acronyme au départ : "Platform Agnostic Networked Display Architecture". L'acronyme n'ayant plus aucun sens aujourd'hui, le nom "Panda3D" n'est plus considéré comme un acronyme.

Design

Panda3D est un moteur basé sur un graphe de scène. Cela veut dire que le monde virtuel est un repère Cartésien dans lequel du code insère des modèles 3D. Le moteur ne fait aucune différence entre les "grands" modèles 3D, comme un modèle de lieu entier, et les "petits" modèles 3D, comme un modèle de meuble. Tous les modèles que Panda3D utilise sont créés soit avec un logiciel de modélisation 3D comme Blender, ou de façon textuelle (avec la syntaxe EGG) dans un format spécial, le EGG. Ils sont chargés par le moteur et insérés dans le repère.

La complexité du moteur vient du fait qu'il n'existe aucun outil dédié au développement Panda3D), et qu'il possède son propre système de fichiers; les modèles sont des EGG, les modèles compressés sont des BAM, et les données de jeu (modèles, textures, données additionnelles...) sont des MF. De plus, certains de ces fichiers ne sont pas rétrocompatibles : il existe différentes versions de fichier BAM, qui ne sont lisibles que par certaines versions de Panda3D, qui peuvent être introuvables aujourd'hui.

Il possède aussi divers logiciels supplémentaires afin de faciliter le développement : divers convertisseurs, un outil d'utilisation des MF, un visionneur de modèles, un outil de packaging de jeux ainsi que de nombreux outils pour la création de fichiers EGG.

Utilisation

Panda3D est publié sous la licence BSD modifiée depuis le 28 mai 2008. : son utilisation est donc libre.
Toutefois, les versions publiées antérieures à cette date ne sont pas libres, elles utilisaient une licence propre à Panda3D, qui nécessitait d'envoyer toutes les modifications faites à Disney Online.
Panda3D utilise certaines bibliothèques tierces qui ne sont pas libres, comme FMOD, DirectX ou MFC. Néanmoins, elles ne sont pas indispensables au moteur.

📕 Description [en]

📕🐧"A libre & mature 3D graphics library for developing games written in Python or C++"🐧📕

INNOVATE, CREATE, PLAY, REPEAT
Panda3D is an open-source, completely free-to-use engine for realtime 3D games, visualizations, simulations, experiments — you name it! Its rich feature set readily tailors to your specific workflow and development needs.

UNPARALLELED POWER AND FLEXIBILITY
Panda3D puts you at the helm, without getting in your way. The full power of the graphics card is exposed through an easy-to-use API. Panda3D combines the speed of C++ with the ease of use of Python to give you a fast rate of development without sacrificing on performance.

AS FREE AS CAN BE
Panda3D is completely free to use with no royalties, license payments, registration or costs of any sort—even for commercial use. The source code is available for anyone to study and to modify under the terms of the permissive BSD license.

MULTIPLATFORM
Panda3D is a cross-platform engine that prides itself on its broad support for old and new hardware alike. The included deployment tools make deploying your app on all supported platforms a snap.



Powerful, mature open-source multi-platform game engine for Python and C++, developed by Disney and CMU

Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs.
Panda3D is Open Source and free for any purpose, including commercial ventures, thanks to its liberal license.

Panda3D is licensed under the Modified BSD License.

Panda3D Basics

Panda3D is a 3D engine: a library of subroutines for 3D rendering and game development. The library is C++ with a set of Python bindings. Game development with Panda3D usually consists of writing a Python or C++ program that controls the Panda3D library.

Panda3D was created for commercial game development and is still used for developing commercial games. Because of this, the engine needs to emphasize four areas: power, speed, completeness, and error tolerance. Everyone knows what power and speed are. But completeness and error tolerance deserve some extra commentary.

Completeness means that Panda3D contains tons of unexciting but essential tools: scene graph browsing, performance monitoring, animation optimizers, and so forth. These things may not be sexy, and as a result, open-source engines often don't have them. But when you're serious about getting work done, and not just playing, these tools need to be there.

Error tolerance is about the fact that all game developers create bugs. When you do, you want your engine to give you a clear error message and help you find the mistake. Too many engines will just crash if you pass the wrong value to a function. Panda3D almost never crashes, and much code is dedicated to the problem of tracking and isolating errors.

Finally, to come back to power and speed: the best way to gauge Panda3D's capabilities is to take a look at the Sample Programs. These are short programs that demonstrate a sampling of Panda3D's capabilities. The screenshots have frame-rates in the upper-right corner, taken on a Radeon X700.

Panda3D was developed by Disney for their massively multiplayer online game, Toontown. It was released as free software in 2002. Panda3D is now developed jointly by Disney and Carnegie Mellon University's Entertainment Technology Center.


Panda3D is not a Beginner's Tool or a Toy

To successfully use Panda3D, you must be a skilled programmer. If you do not know what an "API" is, or if you don't know what a "tree" is, you will probably find Panda3D overwhelming. This is no point-and-click game-maker: this is a tool for professionals. While it is important to point that out so you have accurate expectations, it's also relevant to be aware that Panda3D is one of the easiest and most powerful engines you will ever use, and we welcome your participation.

If you are just getting started with programming, we suggest that your best option is to start with a class on programming. Alternately, you could try teaching yourself using a training tool like Alice, from CMU.

Panda3D supports the full range of what modern engines should: it provides convenient support for normal mapping, gloss mapping, HDR, cartoon shading and inking, bloom, and a number of other things. It also allows you to write your own shaders.

People sometimes have the mistaken impression that Panda3D is written in Python, which would make it very slow. But Panda3D is not written in Python; it's written in C++. Python is just used for scripting. Developers usually write the performance-intensive bits, if any, in C++ or something similar Cython. To see what kind of framerate a small Panda3D program typically gets, take a look at the screenshots of the Sample Programs. Those were taken using an old Radeon x700. Of course, only a sample program can run at 400 fps like that, but for a real game, 60 fps is quite attainable. One caveat, though: to get that kind of performance, you need to understand 3D cards and 3D performance optimization. It doesn't happen automatically. Panda3D includes profiling tools you need to hit 60 fps.


Who is Working on Panda3D

There are a number of developers in the commercial and open-source community. Currently, besides the active contributions from the open-source community, the most active member of the development community is Disney. Disney's primary interest in Panda3D is commercial. Panda3D is being used in the development of a number of Disney games and amusement-park exhibits. To serve Disney's needs, Panda3D must be a fully-featured engine, capable of all the performance and quality one expects in any 'A-grade' commercial title.

The most supported language is Python. Though you can use C++ too, the documentation is mostly aimed at Python use.


🌍️ Wikipedia:

Panda3D is a game engine that includes graphics, audio, I/O, collision detection, and other abilities relevant to the creation of 3D games.

Panda3D is open source and is, as of May 28, 2008, free software under the revised BSD license. Releases prior to that date are not considered free software due to certain errors in the design of the old Panda3D license. Despite this, those older releases of Panda3D can also be used for both free and commercial game development at no financial cost.

Panda3D's intended game-development language is Python. The engine itself is written in C++, and utilizes an automatic wrapper-generator to expose the complete functionality of the engine in a Python interface. This approach gives a developer the advantages of Python development, such as rapid development and advanced memory management, but keeps the performance of a compiled language in the engine core. For instance, the engine is integrated with Python's garbage collector, and engine structures are automatically managed.

The manual and the sample programs use Python, although the developers are working on translating the manual to C++ and providing C++ sample programs.

A developer using Panda3D typically writes code in Python, but it is also possible to directly access the engine using C++ code.

The users of Panda3D include the developers of several large commercial games, a few open source projects, and a number of university courses that leverage Panda3D's short learning curve. The community is small but active, and questions on the forum are generally answered quickly.

Design

Panda3D is a scene graph engine. This means that the virtual world is initially an empty Cartesian space into which the game programmer inserts 3D models. Panda3D does not distinguish between "large" 3D models, such as the model of an entire dungeon or island, and "small" 3D models, such as a model of a table or a sword. Both large and small models are created using a standard modeling program such as Blender, 3ds Max, or Maya. The models are then loaded into Panda3D and inserted into the Cartesian space.

The Panda3D scene graph exposes the functionality of OpenGL and DirectX in a fairly literal form. For instance, OpenGL and DirectX both have fog capabilities. To enable fog in Panda3D, one simply stores the fog parameters on a node in the scene graph. The fog parameters exactly match the parameters of the equivalent calls in the underlying APIs. In this way, Panda3D can be seen as a thin wrapper around the lower-level APIs. Where it differs from them is that it stores the scene, whereas OpenGL and DirectX do not. Of course, it also provides higher-level operators, such as loading models, executing animations, detecting collisions, and the like.

Panda3D was first engineered before the existence of vertex and pixel shaders. It acquired support for manually written shaders in 2005. However, users have been slow to leverage modern per-pixel lighting techniques in their games. The developers theorize that this is because shader programming can be quite difficult, and that many game developers want the engine to handle it automatically.[citation needed]

To remedy this situation, the Panda3D developers have recently given Panda3D the ability to synthesize shaders automatically. This synthesis occurs if the 3D modeler marks a model for per-pixel lighting, or if the modeler applies a normal map, gloss map, self-illumination map, or other capability that exceeds the capabilities of the fixed-function pipeline.[3] The intent of the synthesis is to render the model as the modeler intended, without any intervention from the programmer.

Non-graphical capabilities

Panda3D provides capabilities other than 3D rendering. Chief among these are:

☑ Performance analysis tools
☑ Scene graph exploration tools
☑ Debugging tools
☑ A complete art export/import pipeline
☑ 3D Audio, using either FMOD, OpenAL or Miles Sound System
☑ Collision detection
☑ Physics system, and full integration for the Open Dynamics Engine, experimental PhysX and Bullet integration
☑ Keyboard and Mouse support
☑ Support for I/O devices
☑ Finite state machines
☑ GUI, libRocket integration
☑ Networking
☑ Artificial intelligence