Panda3D - Le Bottin des Jeux Linux

Panda3D

Specifications

Title: Panda3D Type: Tool
Genre: Development Temporary:
Category: Development ➤ Engine ➤ 2D & 3D ➤ Misc. Commercial:
Tags: Development; 2D & 3D engine; Panda3d engine; Python; C/C++; Cross-platform; Scripting language; Physics engine; Audio system; Particle system; Lightmap; 3D texture; Keyboard; Mouse; Networking system; Artificial intelligence Demo:
Released: Latest : 1.9.4 / Dev : C41b694 Stage of dev.:
Date: 2018-02-11 Package Name:
License: BSD-3-Clause Repository:
View: Third & First person Package: ✓
Graphic: 2D & 3D Binary: ✓
Mechanics: Real Time Source: ✓
Played: Single & Multi PDA:
Quality (record): 5 stars Quality (game):
Contrib.: Goupil & Louis ID: 12246
Created: 2011-09-15 Updated: 2018-03-03

Summary

[fr]: Une bibliothèque graphique 3D, libre et multi-plateforme, 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 free/libre, cross-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.

Trailer & Reviews

Quelques exemples / Some examples (Showcase) :


How To utilisateur / User How To :

Links

Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos t ts gd id r lp d d d d d d d d d d d d d d ht ht g g[fr] g[de] g[ru] g[pl] g[cz] g[sp] g[pt] g[it] g[tr] g g] [WIKI] [FAQ] [Changelog 1 2]

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] [twitter] [Facebook] [Instagram] [flickr] [YouTube] [Interview 1 2]
Devs (Disney Online [fr] [en]) : [Site 1 2] [twitter] [Facebook] [Instagram] [Pinterest] [YouTube] [Interview 1 2]
Game : [Blog] [Forums] [twitter] [YouTube]

On other sites
[Wikipedia (Panda3D) [fr] [en] [de]]
[The Linux Game Tome]

Reviews
[CBNA forums (Panda3D Le moteur a utiliser) [fr]]

News / Source of this Entry (SotE) / News (SotN)

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 et multi-plateforme, 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,


Moteur de jeu open-source, multi-plateforme, puissant et mature pour Python et C ++, développé par Disney et l'Université de Carnegie Mellon

Panda3D est un moteur de jeu, un framework pour le rendu 3D et le développement de jeux pour les programmes Python et C ++.
Panda3D est Open Source et libre à toutes fins, y compris pour les entreprises commerciales, grâce à sa licence libre.

Panda3D est sous licence BSD modifiée.

Les bases de Panda3D

Panda3D est un moteur 3D : une bibliothèque de sous-routines pour le rendu 3D et le développement de jeux. La bibliothèque est en C ++ avec un ensemble de liaisons Python. Le développement de jeux avec Panda3D consiste généralement à écrire un programme Python ou C ++ qui contrôle la bibliothèque Panda3D.

Panda3D a été créé pour le développement de jeux commerciaux et est toujours utilisé pour développer des jeux commerciaux. Pour cette raison, le moteur doit mettre l'accent sur quatre domaines : la puissance, la vitesse, l'exhaustivité et la tolérance aux erreurs. Tout le monde sait ce qu'est la puissance et la vitesse. Mais l'exhaustivité et la tolérance aux erreurs méritent quelques commentaires supplémentaires.

La complétude signifie que Panda3D contient des tonnes d'outils non passionnants mais essentiels : la navigation graphique de scène, la surveillance des performances, les optimiseurs d'animation, et ainsi de suite. Ces choses peuvent ne pas être sexy, et par conséquent, les moteurs open-source n'en ont souvent pas. Mais quand vous êtes sérieux au sujet du travail accompli, et pas seulement en jouant, ces outils doivent être là.

La tolérance aux erreurs concerne le fait que tous les développeurs de jeux créent des bogues. Quand vous le faites, vous voulez que votre moteur vous donne un message d'erreur clair et vous aide à trouver l'erreur. Trop de moteurs se contenterons de crasher si vous passez la mauvaise valeur à une fonction. Panda3D ne se bloque presque jamais, et beaucoup de code est dédié au problème du suivi et de l'isolation des erreurs.

Enfin, pour revenir à la puissance et à la vitesse : la meilleure façon d'évaluer les capacités de Panda3D est de regarder les exemples de programmes. Ce sont des programmes courts qui démontrent un échantillonnage des capacités de Panda3D. Les captures d'écran ont des fréquences d'images dans le coin supérieur droit, prises sur une Radeon X700.

Panda3D a été développé par Disney pour leur jeu en ligne massivement multijoueur, Toontown. Il a été publié en tant que logiciel libre en 2002. Panda3D est maintenant développé conjointement par Disney et le Centre de technologie de divertissement de l'Université Carnegie Mellon.

Panda3D n'est pas un outil de débutant ou un jouet

Pour utiliser avec succès Panda3D, vous devez être un programmeur qualifié. Si vous ne savez pas ce qu'est une "API", ou si vous ne savez pas ce qu'est un "arbre", vous trouverez probablement Panda3D difficile. Ce n'est pas un game-maker en pointer-et-cliquer : c'est un outil pour les professionnels. Bien qu'il soit important de le signaler afin que vous sachiez à quoi vous attendre, il est également important de savoir que Panda3D est l'un des moteurs les plus faciles et les plus puissants que vous ayez jamais utilisé, et nous apprécions votre participation.

Si vous débutez dans la programmation, nous vous suggérons de commencer par un cours sur la programmation. Alternativement, vous pourriez apprendre en utilisant un outil de formation comme Alice, de CMU (NdT : Carnegie Mellon University).

Panda3D prend en charge la gamme complète de ce que vous êtes en droit d'attendre d'un moteur moderne : il fournit un support pratique pour le (NdT : non traduit) normal mapping, gloss mapping, HDR, cartoon shading and inking, bloom et un certain nombre d'autres choses. Cela vous permet également d'écrire vos propres shaders.

Les gens ont parfois l'impression erronée que Panda3D est écrit en Python, ce qui le rendrait très lent. Mais Panda3D n'est pas écrit en Python; c'est écrit en C ++. Python est juste utilisé pour les scripts. Les développeurs écrivent généralement les routines nécessitant de la performance en C ++ ou quelque chose de similaire. Pour voir quel type de framerate un petit programme Panda3D obtient généralement, jetez un oeil aux captures d'écran des exemples de programmes. Ceux-ci ont été prises en utilisant un vieux Radeon x700. Bien sûr, seul un programme d'exemple peut fonctionner à 400 fps comme celui-ci, mais pour un vrai jeu, 60 fps est tout à fait réalisable. Une mise en garde, cependant : pour obtenir ce genre de performance, vous devez comprendre les cartes 3D et l'optimisation des performances 3D. Ce qui n'est pas forcément automatique. Panda3D intègre les outils de profilage nécessaires pour atteindre 60 fps.

Qui travaille sur Panda3D

Il y a un certain nombre de développeurs dans la communauté commerciale et open-source. Actuellement, en plus des contributions actives de la communauté open-source, le membre le plus actif de la communauté du développement est Disney. L'intérêt principal de Disney pour Panda3D est commercial. Panda3D est utilisé dans le développement d'un certain nombre de jeux Disney et d'expositions de parcs d'attractions. Pour répondre aux besoins de Disney, Panda3D doit être un moteur complet, capable de toutes les performances et de la qualité que l'on attend d'un titre commercial "A-grade".

Le langage le mieux pris en charge est Python. Bien que vous puissiez aussi utiliser C ++, la documentation est principalement destinée à l'utilisation de Python.



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]

Powerful, mature open-source cross-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

Features

☯ Just Works, Right out of the Box
No-hassle install:
☑ Convenient installer packages for Windows, Mac OS X and Linux
☑ Only one external dependency: working graphics driver
☑ Sample programs run right out of Start Menu
☑ No compilation step needed

☯ Full Python Integration
Automatically-generated wrappers expose full functionality of the engine.
☑ All Python versions from about 2.4 to newest 2.x supported
☑ Highly optimized: all core functionality in C++
☑ Thoroughly-tested: two commercial MMOs in Python
☑ Panda3D structures garbage collected when using Python
☑ Manual and sample programs use Python

☯ Exposes Full Power of Graphics API
Modern OpenGL/DirectX features exposed directly to Panda3D user:
☑ High-level shader languages: Cg, GLSL
☑ Powerful interface between shaders and engine
☑ Support for render-to-texture, multiple render targets
☑ Use of depth/shadow/stencil textures

☯ Shader Generation
Many advanced rendering techniques now fully automatic:
☑ Special Maps: Normal Map, Gloss Map, Glow Map
☑ HDR Rendering: Tone Mapping, Bloom Filter
☑ Cel Shading: Threshold Lighting, Inking
☑ Shadow Mapping
☑ Fullscreen filters such as Bloom, Cartoon Inking, Volumetric Lightning, Blur/Sharpen and Ambient Occlusion, as well as the ability to use your own
☑ More to come

☯ 3D Pipeline
Get models from your 3d modeller to Panda3D easily:
☑ Powerful EGG/BAM format
☑ EGG exporters for Maya, Blender and 3ds Max
☑ Support for other 3d formats (collada, x, lwo, obj, dxf, wrl, flt)
☑ Converters between different 3d formats and EGG

☯ Audio
Several options for adding sounds to your game:
☑ Support for the OpenAL audio engine
☑ Support for the FMOD audio engine
☑ Support for the Miles audio engine

☯ Physics
Several options for physics simulation:
☑ Built-in simple physics engine
☑ Support for the Bullet physics engine
☑ Support for the ODE physics engine
☑ Support for the PhysX physics engine

☯ Particle Effects
Panda3D has its own Particle System:
☑ Particle effects can be stored in text files
☑ Particle editor included for creating and editing particle effects

☯ GUI
Panda3D comes with a set of tools for the creation of a graphical interface:
☑ Native DirectGUI system
☑ Support for the libRocket GUI library

☯ Artificial Intelligence
Simple AI library "PandaAI" included:
☑ Steering behaviors: Seek, Flee, Pursue, Evade, Wander, Flock, Obstacle Avoidance, Path Following
☑ Path Finding
☑ Navigation Mesh generator for EGG files

☯ Performance Monitoring
Powerful performance monitoring and optimization tools:
☑ Identifies bottlenecks, both CPU and GPU
☑ CPU time use decomposed into more than 250 categories
☑ Counts meshes, polygons, textures, transforms, state changes, etc
☑ Allows user-defined CPU-usage categories
☑ Tools for batching and state-change minimization
☑ Tools to merge textures and minimize texture switches

☯ Debugging Tools
Heavy emphasis on error tolerance and debuggable code:
☑ Extreme resistance to crashing, even when errors are made
☑ More than 5000 assertion-checks to catch errors early
☑ Reference-counted data structures minimize memory leaks
☑ Many tools to examine internal state (one shown here)

☯ Mature, Complete System
Mature system used to deliver several commercial games. Contains everything you need, not just the "sexy" stuff:
☑ Converters for a number of file formats
☑ Font file importers
☑ Tools to package games into redistributables
☑ Means to pack art assets into encrypted bundles
☑ Lots of other boring but essential stuff

Installation [fr]

DÉPÔTS :
deb http://archive.panda3d.org/debian squeeze main
ou Launchpad (remplacez DISTR ci-après par la version UBUNTU courante, exemple : maverick) : deb http://archive.panda3d.org/ubuntu DISTR main
ou Launchpad (remplacez DISTR ci-après par la version UBUNTU courante, exemple : natty) : deb http://ppa.launchpad.net/panda3d/ppa/ubuntu DISTR main