If I may, why do you use it for some projects? Does it have some qualities which you prefer over any other engine?
With regards to supporting hardware instancing natively, you could file an issue for that here: Issues · panda3d/panda3d · GitHub
If I may, why do you use it for some projects? Does it have some qualities which you prefer over any other engine?
With regards to supporting hardware instancing natively, you could file an issue for that here: Issues · panda3d/panda3d · GitHub
I’m just more used to Panda, if I don’t need modern features Python is faster to work with and mantain, and open source has its advantages, like lack of weird licensing clauses like pay-per-install. There are other open source engines out there like Godot, but my projects often need access to 3rd party APIs (like OpenCV) and Python really wins here vs a custom language or C# with Godot.
Other game/3d engines in Python are miles behind even Panda3D.
But if I was making games only but still really needed an open source engine, I’d invest time switching to Godot over Panda, not going to lie. If Godot chose Python over a custom language I’d be gone by now, again just being honest. I’ve used Panda since 2005 when I was just learning, it was my second game engine and the most I spent learning things for the first time, but I have to use what makes sense for business these days and Panda only makes sense for in-house tools and some B2B programs that need 3d visualization. The renderer is outdated, the ancient scene editor is unusable and no new one got anywhere, no essential gamedev tools like VFX editor, shader editor, animation editor, GUI editor, etc, etc.
I still don’t understand who doesn’t let you implement it, Panda3D is open source. Everything is in your hands, no one holds your hands in terms of contribution, or why do you think someone else should do it?
Let’s play spot the difference!
Rendering the same scene by the looks of it…
Same numbers on the top left…
But on the top right!
Abra-ca-dabra! ~60FPS! (Up from the ~25FPS I was getting earlier)
This is what’s amazing about programming
A little trickery here and there and we can squeeze a bit more performance out of our programs without the user being able to tell anything is different
What’s the deal you ask?
Haxxor! The scene is half empty!
Even with a very rudimentary brute force check all blocks to see if they’re surrounded by other blocks (if so hide them), which I was running any time there is a block created/removed, it only took ~10ms to update the ENTIRE scene.
Keep in mind this is a horribly unoptimized way to do things but it’s a step in the right direction!
If you think something can be improved, take a measurement, try something, measure again, see if it’s improved.
If not, rollback (or continue trying from there), and reiterate!
The future is bright with Panda3D
To add:
If people are turned off from Panda3D because of the contents of that tutorial, then it probably wasn’t for them to begin with.
Personally, I think it’s a great introduction to many concepts, and a great starting point for people to build on and get into development of their own game.
Engines like Unreal/Unity/etc are great if you just want a complete system to go ahead and develop a game. And damn, do they look fantastic! But hey, look at things like Render Pipeline and you’ll see that Panda3D can make some amazing scenes too Panda3D might require a bit more of you as a developer, but for some of us, we’d rather that so we can do those things in our own way!
If Panda3D isn’t for you, then I wish you all the best in whatever engine you end up with.
If Panda3D is for you, then I only ask that you stay positive in regard to its potential. If you need help with things, there’s places like this forum or discord in which you’ll find an amazing community of very talented, and extremely helpful fellow developers who will likely (be happy to go out of their way to) assist.
As to the lack of features and outdated tools, if you do hang around, we’d very much appreciate your assistance in updating and developing these further! It’s Open Source after all! Perhaps you’re the genius we’re after to update the instanceTo
to use shaders!
I’m not sure if you’ve woken up today on the wrong foot or if you’re intentionally taking jabs, since there can be several simple answers to your question you probably could have thought of yourself:
There you go, 3 common reasons why people can skip any API to use another API instead of developing the first API. It boils down to practicality. You telling them to modify the engine is simply not practical for the majority of cases. The engine has to be good enough to begin with for others to bother committing and to most Panda will seem what it is: outdated and too much work to make usable for them. Proof: nobody has committed this functionality to the engine after 14 years while the other engines have it.
You can call me a hater, but I’m the one being constructive here. Trying to brush off an issue doesn’t make the issue go away, the only way to do anything about an issue is to first admit it exists.
I’m sorry @ H3LLB0Y but you still have 4000 Geoms/Meshes which is very inefficient thing to do and nothing else in the scene, and your fps is still barely 60 fps so you pretty much used up all the GPU resources for a small Minecraft terrain chunk on a desktop PC.
If occlusion culling was a solution to lack of GPU instancing, I wouldn’t be having this discussion.
You’ve given 3 reasons why someone might not use Panda3D, and that’s fine.
But for some people that’s not a turn-off.
Panda3D has amazing capabilities right out of the box, for some these are sufficient. I.E “good enough to begin with”
Personally, there are more reasons to use it than to not.
Reasons:
Proof: nobody has committed this functionality to the engine after 14 years while the other engines have it.
Your “proof” is nothing but a lack of resources provided to Panda3D development.
Hater or not, if Panda3D has what you need, use it, if not, contribute, or use something that’s suitable.
It’s only an “issue” if you make it one.
I’m the one being constructive here
Care to elaborate? What part of this discussion from you has been constructive?
I’m sorry @ H3LLB0Y
No need to apologize, but thanks for re-iterating what I said about it being highly unoptimized
The fact I’m getting ‘barely 60 fps’ is due to the limited capabilities of my GPU. *laptop also btw.
It would struggle just as much to render any scene that has 4000 Geoms/Meshes (depending on the complexity of them I suppose).
If not to find ways to improve the Minecraft Clone from the tutorial, can I ask what the point of this discussion is?
Lack of GPU instancing is one of many limitations we have to deal with when developing. What of people with GPUs lacking it? Surely investigating alternative solutions is a good idea.
Not everyone has a ‘beefy setup’ as proved by me with my little ol’ 1050
Back when Minecraft begun development (2009) GPU instancing was cutting edge (added in OpenGL 3.1, March 2009). They managed to make it work without it I assume. I can’t imagine them adding such a requirement as having a GPU capable of instancing. (I could very well be wrong on this though…)
Sorry but this is the most “sticking your head in the sand” response to a problem you can give.
Personally, there are more reasons to use it than to not.
And there are more reasons to use other engines than not. You’re not proving anything here. The developers have spoken, you can’t deny reality or use your personal experience to prove something here: https://steamdb.info/tech/
Back when Minecraft begun development (2009) GPU instancing was cutting edge
Yes, “back when”. If you think Minecraft makes Microsoft billions and they haven’t optimized the code to run better on modern hardware and increase render distance then you’re not bothering researching the topic you decided to argue about. Even just two years ago “Caves & Cliffs Part II” update increased the maximum rendering distance from 16 chunks to 32 chunks.
Not everyone has a ‘beefy setup’ as proved by me with my little ol’ 1050
![]()
1050 is a beefy setup for rendering 4000 cubes, yes. You must be new to gamedev if this is your gotcha.
Your “proof” is nothing but a lack of resources provided to Panda3D development.
My proof is that other engines have that features and developers actually expect it. I shared links, enough said.
Care to elaborate? What part of this discussion from you has been constructive?
I literally said what right after the sentence you quoted. Since you think it’s right to ignore it and imply to someone they are not constructive after they have told you why they are, I’m done talking to you.
If not to find ways to improve the Minecraft Clone from the tutorial, can I ask what the point of this discussion is?
I’ve reiterated multiple times, you’re clearly not paying attention/trolling. Sorry but I’m done talking to you, you’re not showing basic respect and not acting mature and respectful here.
There’s two separate discussions here:
Okay, let’s state that panda does not meet the level of advanced engines.
However, the question hung in the air, who will improve the panda to a level that, as you explained, will meet your needs.
If you have instructions addressed to members of the community for the necessary actions, please do not hesitate to voice them…
However, the question hung in the air, who will improve the panda to a level that, as you explained, will meet your needs.
This is not about my needs. This isn’t about me, this is about common features developers don’t choose Panda3D over.
All I’m saying is we shouldn’t pretend this is not a limitation, and getting unfounded disrespectful remarks like I’m saying it for fun. I’m still not sure if you’re sincere or still disagree and just want to win an argument. Because one doesn’t have to have a solution to describe the problem, this is just basic logic. The only reason I keep responding about this topic is because I get replies.
I stated there is a problem because (a) people coming from that tutorial deserve to know and (b) the only way we can start thinking of a solution is if we first accept there’s an issue.
I’m not a shader developer. The only thing I can say is that we have finanical contributions to Panda3D and we could simply try increasing it so that developers would be capable of implementing such secondary/non-maintenance features.
I’d argue it’s not even clear that Panda3D takes financial contributions, there’s a small “Sponsors” text in the bottom-left of the main page. It could be replaced by a element with a clearer “Donate” button which would have graphic and not just pure text (in order to stand out), and placed on the top, not bottom of the site. For reference, see these websites:
Then there’s the argument that OpenCollective is simply not convenient for people to use if they don’t use it for anything else. Paypal or Patreon makes more sense, a lot of people already support projects there (like some of the above) so they won’t need to register somewhere new just for Panda.
As for getting new devs to contribute for free, besides the few commits we already get, I don’t think we can get more people involved. I’m sorry but this is my honest opinion: in it’s current state Panda3D is just not good enough for most developers. You need to have a mandatory requirement for Python or no time to learn something else for it to make sense to use in 2023, and that’s not a lot of people.
With regard to the ambiguity of how to make a financial contribution, this problem is solvable. It is enough to contact @rdb and ask to change the template of the cover page of the site. For example, replace the word Sponsor
with Donat
and move the element to the top header of the site. Previously, there was not even a menu in the top header of the site, but after a discussion that it needed to be added, it eventually appeared.
As for the collective improvement of Panda3D, part of the problem is that it is very difficult to reach agreements on some issues. For example, the question of replacing models resources in code examples was put forward in the community, no final decision was made, it is necessary that there be a single 3d format, resource style, and so on. Also, none of the professional 3d modelers responded to this idea. If someone responds, it is not clear for which type of renderer he needs to prepare materials, such as textures. There are many nuances to consider.
As for the video, for example, I have never used a video to study Panda3D, I mainly use the manual and API, forum. Instead of using the Direct module, I just abandoned it. I developed my own GUI after spending a week searching for an algorithm and the first implementation, it doesn’t look fantastic, but I got rid of the problems with Direct. I already have my own 3D exporter that exports directly from the blender to the .bam format. Experimenting with the kinematic bullet controller, I came to the conclusion to write my own, now I have no problems with it. With regard to shading, I also found a solution at the moment it is not fully implemented, but I do not need to wait for someone to add to Panda3D.
And mind you, I didn’t watch for this how the dudes in the video teach how to use Panda3D.
Evidence about the above.
It may seem strange, but I am happy that Panda3D has taught me to be independent.
Well look, maybe here too we should look for other projects and learn from them. It’s not hard to learn what developers need right now, there’s 2.8 million active Unity developers and 7.5 million overall Unreal Engine developers. Their engines are documented extensively. Regardless of the amount of money poured into developing them, they must be making the right choices for their APIs if such numbers of people use them without complaining much, and we can learn from those choices instead of trying to vote on how to reinvent the wheel. “Is GPU instacing expected from the engine itself” should have an obvious answer.
none of the professional 3d modelers responded to this idea.
For the same 3 reasons there aren’t many developers. The tool should provide them value, be worth it for them to invest their time in and contribute something back.
I’ve written plugins for Blender too and as I mentioned I use Panda for some of my commercial projects. But it doesn’t change the fact that Panda is not a usable engine for most people for most tasks anymore. Again, things can change, but maybe not if we ignore this.
Again, I use Panda3D myself and don’t want to seem to be continuously shitting on it here, but I’m getting responses that I disagree with and have to respond to.
This is a catch-22, if the engine currently does not provide sufficient value (whatever that might mean) to those 10 million game developers, we cannot convince them to improve it in the first place. I can appreciate that you want the engine to improve, but I’m not sure what actionable suggestions you’re making here. The kind of technical debt involved in a project like UE requires hundreds of full time staff – that will probably never be realistic for Panda3D.
If anything, I plan to strip the engine down even further, removing old cruft and features I don’t use. For the sake of conversation, here’s my plan for my personal ideal Panda3D engine:
That’s pretty much all I would ever want or need out of a game engine. Given the Python support, just about any other high-level feature could be imported via Python module. If any of those given modules become sufficiently important, they get integrated into the main branch. I have no need to ship a game on game consoles nor phones, nix and Windows support is just fine. To be clear, these are solely my preferences, and have no reflection on the actual direction of current planned engine development.
This kind of minimalism and open-sourceness, while being unpopular for whatever reasons people claim (probably mostly marketing/financial/user base considerations), may actually outlast extremely complex, constantly changing, high-overhead projects like UE in the long term – whether that be because a new set of owners acquire it, the technical debt becomes unsustainable at some point, or game engine preferences change over time.
So, again, I appreciate that you want to improve the engine in principle. But UE, Unity, Godot exist and I highly recommend anybody terribly unhappy with panda go to those.
If you can’t keep track of few messages then I can’t help you further here.
If anything, I plan to strip the engine down even further, removing old cruft and features I don’t use.
Why? Just don’t use what you don’t need. The deployment tools don’t use the modules your code is not using when packgaing your program for shipping.
may actually outlast extremely complex, constantly changing, high-overhead projects like UE in the long term
What “long term”? 14 years have passed since the instancing blog post, Unreal and Unity have out-lasted Panda by a long shot, few use Panda, millions use Unity and Unreal.
Because I have a different development philosophy, based on elegance and minimalism.
Most (the millions using other engines) care about practicality not vague ideas like “development pholosophy”. If Panda wants to gain any traction it’s the first group they should target. What’s your point, That Panda works for you? Fine, I got that already.
Right… you are pitching the benefits of buying an SUV in the Lotus Evora forum.
No. If Lotus Evora could transformers-transform into an SUV with a bit of work then maybe your analogy would work.
And you’d still be wrong since I’m not pitching anyone to use Unity or Unreal here. Reminder, I’ve listed both why devs may choose Panda and also listed what I use it for and why.
Maybe just go to the Unreal and Unity forums and talk about the advantages of python. Perhaps the developers will meet you halfway and add bindings. If you say that open source is cool, then maybe they will open it. For persuasiveness, you can bring open software, for example, a blender. I think they will definitely listen to you.
So it’s not just you waking up on the wrong foot, this is just you. Bye.
Just to add my two cents to the discussion :
First, it’s clearly stated in the panda3d introduction that this is not a beginner tool and you need a somewhat solid programmer background in order to use it to its full potential : Introduction to Panda3D — Panda3D Manual
So it’s not that far-fetched for panda3d devs to expect users to go their own way about ‘solving problems’ (to read as ‘implementing their own solutions’) that arose from a lack of features of the engine (since users are informed of this before seeing any code showing how to use the engine).
As already stated in this thread, panda3d being open source and (financially/ partly technologically) supported by the community, it cannot realistically aim to compete against the more wildly used game engine in some of its feature (Unity as 7000+ employees). The financing allows it to have dedicated dev, but they have to keep it up to date before adding features that could be deemed as not ‘strictly essential’.
That being said, you’re right that some quality of life improvement can be made to the engine (hardware instancing, dedicated scene editor, native support of ECS systems, node editor, etc…).
Luckily, most of the community is aware of it and, as a result, is prompt to respond on this forum/the discord and to share code snipets or features they’re working on.
As you said, it’s not that ideal to expect user to plug in code snipet from 10 years ago found on the forum to bring these QoL improvement, but being open source also allows anyone wanting something not provided out of the box to participate or, if not skilled enough to open a feature request to the repo, or even just simply ask the community if they have anything to share. This forum is a gold mine of code snippet and implementation. Some of them could be in the main branch but simply aren’t because of a lack of proper testing (shader and ‘how to use’ code for hardware instancing were already provided on this thread, and the info in it is still relevant today).
So, what can we realistically do to improve the situation ?
We could help develop it by joining the github, closing issues, and adding new features. Some do, other don’t because they don’t have the time or knowledge to really help (me first, I’ve try to read the “good first issue” and I’ve just learned that I know nothing about engine programming).
We could also give money and donate enough to bring more devs in, but the cash flow need to be enough and constant to keep those hypothetical new dev in, so solutions like making the ‘donate’ button more obvious can help, but won’t be enough (imho).
We could continue to develop and distribute panda3d games and solutions (like you are doing with some comercial work you mentioned earlier), it can help raise awareness that the engine exists, bring more people in that will develop more game/solutions, and may be able to contribute and so on and so forth.
As of now, the last idea is the most adopted one. People work/play with panda3d, share and show off their work in the forum or on itch, game jam, commercial work, and more. The turn this thread has taken shows that this is not enough to bring panda3d to its full potential and that you’re not satisfied with the situation.
So back to square one. Apart from warning people in the manual that the engine is powerful but need the developer to be skilled enough to work around api limitations, what can we do ? What do you propose to improve the situation ?
(English is not my first language and I can be mistaken so i state this to be sure that there is no misunderstanding : I’m not just trying to make a point, but are genuinely asking you this question after exposing what i thinks are the reasons we’re here today)