Entity system for Panda 3D?

Hi,

I can’t find Entity, does Panda has some Entity system like Unity with events like Init(), Update() ?

Another thing i don’t find is a 3D editor to create the game, is there some available ?

Thank you.

Panda3D is a scene graph engine, not an ECS-based engine, at its root. However, there are several community-provided ECS systems out there that you could consider.

Panda3D specific



Python libraries, not Panda3D-specific


There is also a proposal on including an ECS in Panda3D itself, but that has not gotten very far yet.

As for a 3D editor, the most popular choice is using Blender with an exporter like YABEE, using DupliGroups and tags to instance in other models, but there are various other user-contributed editors if you search around.

Thank you for your input.

What is the best ?

Is there some docs ?

The ECS in panda-bamboo is probably usable, but I am not currently maintaining it. I have thought about splitting the ECS off into a new, separate library, but at this point I am looking into building something on top of Esper.

The actual Panda system is very outdated, it is an old way to code small programs demos using a main() function, it’s not full game development.
Panda must have ECS out of the box, it’s the most efficient way to manage many game object entities at same time and what 3D engines use. Until Panda adopts a multi threaded entity component system, it will not be attractive.

As a programmer of my game, I do not understand why I should be forced to use the imposed approach to implement my ideas. The Entity component system should be developed by the developer himself, and not by someone else.

Wait, what? All programs have a main() function. The same goes for all other game engines in existence. That Panda3D doesn’t take control over the main loop away from the game developer is a feature, not a shortcoming.

I think that ECS is particularly an intuitive system, but not the most efficient, most powerful or most flexible system. I think there is benefit for people to build an ECS on top of Panda3D, maybe even for Panda3D to eventually offer an ECS out of the box, but it is certainly not a requirement for it to be a good choice of engine, in my opinion. Engines like Godot use a scene graph approach similar to Panda3D and Godot is faring quite well.

I thought the new release was a new start with major improvements, but i’m very disappointed because there is no real changes on the approach to make a game in Panda 3D.

Godot is ECS already when you add a new script to an object, it is also component based or node if you prefer.

Called when the node enters the scene tree for the first time.

func _ready():
pass # Replace with function body.

func _process(delta):
pass

You can read more about Godot to understand the very different to Panda 3D.

Most game components underlying structure must be re invented in Panda 3D, before someone can start a game. While it’s already available in Godot or Unity if you prefer.

(Because most Panda games are not bigger than flappy bird).

ECS is common and proven approach ( count the number of Unity games and count Panda 3D ones ). Panda 3D is outdated without project manager, no ECS, it will stay something for a niche users.

BTW, i was asking is there was such things planed for Panda 3D, i guess it’s no.
I won’t use Panda3D when there is many other choice already using game components and structure like Unity, Godot or Xenko.

I’m actually quite familiar with Godot, because I’ve used it quite a bit for personal projects and even contributed to its source code.

Unlike Unity, Godot actually does not offer an Entity system, but uses a node-based scene graph similar to Panda3D. If you’ve used both engines for a while, you might actually begin to appreciate how similar the way the scene is structured to Panda3D. Though, Panda3D’s scene graph is quite a bit more flexible and powerful than Godot’s.

The fundamental difference between Godot and Panda3D that you might be touching on is that Godot has an editor-centered workflow, where objects are dragged-and-dropped into an editor and scripts are attached to it, whereas Panda3D has a code-based workflow, where the code loads the models in question and attaches behaviours for them. This is unrelated to whether the engine is ECS-based or Node-based. ECS lends itself well to an editor-based workflow, but Godot shows that you can do this with a Node-based system as well.

The Panda3D approach is definitely more flexible, in that it ultimately gives developers more power and flexibility. It is actually not so hard to support the Godot-based approach with minimal coding effort, by writing some code that reads the desired class to load from a script file and assigning those classes to objects based on a tag that you assign in whatever you use to edit your Panda3D scenes (eg. Blender).

You can actually support something similar to the Godot workflow in Panda3D, but it requires a bit of boilerplate. I actually think it would be great for the community to provide a more high-level system on top of Panda3D in the form of a library that does something like this.

Actually, it is. We do think there is benefit to both an ECS-based workflow and an editor-based workflow, so we have been talking about developing such systems and providing them with Panda3D in the future. In the meantime, I think it’s great that there are projects going on, such as community-provided ECS libraries and BlenderPanda that are working on supporting these workflows in Panda3D today.

Some rather large games have been made with Panda3D, notably two MMORPG games by Disney, and various games are on Steam that are certainly more complex than Flappy Bird. I’ve heard none of their developers complain about the lack of an ECS.

I understand that you may be quite comfortable with the Unity-esque workflow, and we also see the appeal of an ECS, largely because it’s easier and more intuitive to learn, but I would certainly go nowhere near as far as to suggest that the lack thereof seriously handicaps game development in Panda3D; it’s just not true.

In fact, ECS is a programming style, and I do not understand what prevents to use this approach to organizing the logic of the game in panda. This approach can be used even on a pure graphic API such as OpenGL or Vulkan.

I wanted to ask a provocative question in modern games using modern developments for the same ECS engines. Let’s take the same Mafia 3, tell me if Unity did it … maybe there would be no absurdity going on with game logic in this game. No tears play is not possible. In all modern games, logic suffers, it gradually goes downhill, while graphics go uphill. And for some reason it seems to me that the whole thing is in the templates. Or?

It will require lot of work.
Godot has thousand specific nodes for specific category like 2D, 3D, GUI, meshes, materials, physics. There is also specific signal events from specific node class.
This would be too huge to discuss all Godot features, or Unity component system, the best is to use them to understand their game structure and how fast developers can create game and logic code because there is a game structures and world editor that helps faster iterations.

Panda could coexist as the actual minimal distribution, and have another distribution (similar to Godot or another game solution) with ready to use components or nodes, and some world editor with a project manager.
Perhaps i’ll try Panda 3D when it will have some big changes.

In modern games the logic is made of thousand modules, there is high level graphic editors and modules, you can have a taste reading this publication showing the process to make the game.
https://www.guerrilla-games.com/read/creating-a-tools-pipeline-for-horizon-zero-dawn

Like said previously, Panda 3D could coexist as minimal distribution and another distrib that would work with game components and world editor.

Esper is the most up to date , it’s a lightweight ECS and probably the best.
https://github.com/benmoran56/esper
I don’t know how to use it with Panda 3D, there is no tutorials.

Another concern is performance, i tried RenderPipeline and i was disappointed a lot. Ralph game demo is empty and run 60 fps (gtx 1060) with my 3D card making lot of noise. While it does not make noise playing games.This is another good reason to stay with Godot, Xenko or Unity.

Exactly, but the question is why quality suffers. Release dates always move, flow kiloton patches. I’m not talking about the game logic, the behavior of AI, and more.

By the way, show indie games made by Godot, Xenko or Unity not at the flappy bird level.

Quality does not suffer, without tools and components it would not have been possible to make the game.
A game engine can stay at low level and old fashion or evolve in modern architecture.

Without discussing about ECS or game modules, RenderPipeline alone is slowing down a scene with some few 3D models, the small empty Ralph demo game is too slow on powerful hardware.
Graphics will need boost and optimization in Panda 3D.

I think you already know those Unity games :

FireWatch
SuperHot
Seeking Dawn
Pamella
Escape from Tarkov
Inside
Rust
The Gardens between
The Light Keeps Us Safe
Yooka Laylee
Prey for the gods
In the valley of Gods
Subnautica
Ghost of a Tale

And you already know those game tutorials

Godot
https://www.reddit.com/r/godot/comments/8vqff6/third_person_shooter_demo_preview/

Unity

https://www.reddit.com/r/gamedev/comments/94k9mn/unity_3d_game_kit_tutorial_introduction/

Unity multiplayer fps tutorial

Please note that some games have been developed for several years and with funding via kickstarter, also studios that are professional. It doesn’t seem to fit in with singles like me who use the panda and just experiment. I also noticed that you consider the engine advanced due to a good picture … but you know that this is the merit of most 3D modelers and is not related to the engine. Most of the game’s game consists of good content, models, audio, sprites, shaders, designer menus, designer level and more. If you don’t have this, ECS will not help you.

As I said, the time-consuming part of game development is content; in fact, you don’t need many lines of code to develop a toolkit.

You brought a list of games, good. Now tick in which game is PBR used?

@Gandalf, it seems to me that you are looking for more pre-built logic components in Panda rather than an ECS. Is this correct? If so, do you have any feedback on which components would be high-priority? Pre-built components are nice for getting things moving quickly, but I often find they eventually need to be replaced to better suit the game. The direct module already has a fair amount of pre-built logic, but most of it is pretty mediocre. Pull requests for more pre-built logic would likely be welcome if you would like to contribute some.

As for RenderPipeline, I believe it has some pretty aggressive defaults that favor quality at all costs. If I recall correctly some configuration tweaks can result in much better performance without sacrificing quality much.

You are right.
But you’ll have lot more work to do if you don’t have some game framework and components or some world editor. Most of the time you block the level using prototype assets and start making gameplay first.

In Unity you create your project, choose some components you need, you bring your models , adjust physics and collisions, and you script gameplay right away.
You don’t loose time re inventing the wheel and creating a world editor, or very common game framework.

Try making some editor like Godot or Unity and it’s features like material editor, lighting , objects components or nodes , particle and physics editing and all other features.
It’s not some lines of code or some weeks coding lol

Ghost of a Tale, Pamela , Yooka Laylee, Seeking Dawn, Rust, Esacape from Tarkov and many games i must forgot.
Unity is getting the new HDR pipeline renderer , new games in the making are already using it.
Panda 3D would also need enhance advanced rendering ( reflection probes, sky lighting ,global illumination, subs surface scattering, parallax) , or bring a shader editor.

Panda 3D is a smaller 3D engine, it can’t compare to Unity or Godot.
It does not aim to provide world editor or game components with project manager, and each user must assemble or create what he needs for it’s game, and they must re invent the wheel creating their own world editor , material editor, physic editor, lighting editor , game framework.

It’s good for showcase or some apps, while it’s bad for real time games, performance is just bad.
Perhaps it should be divided in one high quality preset for no game apps, and one medium quality preset more faster for games.

It’s not prebuild games, it’s a game framework with entity system, each object can have a script with default functions. Physics, lighting ,particles or navmesh for example are already integrated and ready to use.
Watch some videos about Godot or Unity to understand what it is developing a game with game engine frameworks.

We don’t need to compare Panda 3D and Unity or Godot some more, they are very different approaches to making games.

You can find tons of Unity or Godot video tutorials to look at how some people make games and why many prefer high level game framework and tools out of the box, and why this speed up game creation.

I’m not trying to say how Panda 3D should be or evolve, it is perhaps better Panda stays as it is.

What you say is called an SDK. But you obviously missed this post, using Blender as an editor. As for programming using the menu buttons and drop-down lists, this is nonsense. I actually wrote a level editor (now abandoned), I also wrote my exporter for a blender. And this is really done without a lot of time.

To reinvent the wheel in panda means to follow the right path of a new developer — to become a professional who can create an original product, not a clone of a template. And professionals will write their components on Unity, and not use templates.

Mafia2 - worked professionals.
Mafia3 - user buttons worked.

As for shaders, I agree that this is a developer error, which led to the loss of many users. It was necessary to develop a basic combo shader to demonstrate all the shaders in one scene. Plus add shader samples, multitexturing and the like.

Most people will use Zbrush with Maya, Blender is not very practical.
For example in Unity there is many modeler plugins, SabreCSG, ArchiMatrix, Pro Builder, and it has many plugins like Gaia, something Blender does not have.

Pro Builder is perfect for indie games

Or Gaia

Many other tools are making it easy to create game content.
This is what Blender will not provide.

This is triple A work and not comparable to indies.
There is also a video about Far Cry 2 or GTA4 are better, it’s called fame features.

Some people like re inventing the wheel with low level 3D engine, others prefer a game engine allowing to focus on creating their game instead.