My favorite right now is UserBenchmark: UserBenchmark: AMD R9 290 vs Nvidia GTX 1050-Ti
Ah, thank you!
… If I’m reading this correctly, then I am far under the benchmark spec of an “RTX 2060”… ^^;;
(I have a GeForce 840M in a Dell laptop.)
(Not that this should affect the benchmark spec much, I think. But I might not be able to run the showcase game myself, and so might be restricted to contributing only parts–models, for example.)
Well, I think it’s possible to have different quality settings in the demo. It’s probably a good idea to have a nice game menu with settings like resolution, texture quality, and so forth, to maximize the number of systems the demo can run on. I think part of the “call” here is to push Panda3D to the limit and see what the engine can do.
That’s fair. I’m still not holding my breath that it’ll run on my machine, but I’ll likely give it a shot, at least.
I do agree with wanting the showcase to demonstrate what can be done with Panda, and thus having a high graphical bar at which it aims!
For sure let’s stray away from trigger words that might inspire this fear (kits, templates, etc) but consider new labels, if possible. Marketing improvements properly is important!!
It’s not the label that bothers me; it’s the description.
Unless you mean to not inspire such behaviour in new devs–but while nomenclature might help there, I’m not convinced that it’s a panacea.
Totally understood… I’m willing to reword label and/or description to make sure perception is appropriate.
In essence, we’re expanding the official game samples, but definitely don’t want the perception that we’re recreating Unity in some form.
Perhaps I can be convinced otherwise, but I tend to dislike it when samples rely on a common sample framework, rather than standing on their own.
There are some games around showing how to use distributed; let me know if you need me to dig them up.
cluster is fairly esoteric and used for cluster rendering, which is not really relevant for games.
controls contains some poorly-documented input controller code. It may be useful to document it.
The long-term plan for direct
is to split it off into a separate library. Generally, the code quality is below that of the rest of Panda3D, and its features are not available to C++ users of Panda. However, it contains some currently fairly important parts (Actor, ShowBase, intervals, etc), so we can’t do this until we reimplement these in the core.
I don’t think we need to worry about this right now.
It’s fuzzy. Eg. Chessboard can hardly be called a “complete game”; it mostly serves to demonstrate mouse picking of objects. Asteroids is probably closest to being able to be called a “game”.
I don’t mind categorising the feature samples, in principle. Looking and gripping isn’t input-related, though, it (like boxing robots) is intended to demonstrate the animation system.
If you have anything offhand would love to see it! If not no worries, I’ll see if my google-fu is up to the task. So far I’ve only been able to find this but will need some time to parse it all apart to make some sense of it.
My thoughts here - a very small, concise, minimal sample of multiplayer, something akin to Roaming Ralph but with other players you can see/chat with. I almost started a from-scratch Python snippet to mirror scene graph events over a socket to make it work, but something more official seems better!!
Couple of quick questions here 1) Why is it named ‘direct’ (just my curiosity, I’ve been puzzled at the package name) 2) How is it determined which code is suitable for ‘core’ vs split out into the new direct library? (just to wrap my brain around what could be used in official samples long term)
Thanks for the background on these, I’ll move them around a bit! I’d definitely like this to shape out to what most folks here feel is best for the final version. In the meantime posting lots of ‘attempts’ I have in mind to cleanup/simplify, so all the feedback is super appreciated, especially from the veteran Panda devs, thanks for your feedback here!
Let me share a work-in-progress look at the character-model that I’ve been working on!
This model is primarily intended to be a stand-in character for devs to use–a bit like the Unreal Engine robot-figure, but a little fancier. However, it’s also intended to be available should it prove useful toward the samples or the showcase game, whether as protagonist or NPC.
At current the model is modelled and rigged, I believe, with a small set of animations. UV-mapping and texturing are still underway, and normal-mapping has yet to be begun. The final model might be slightly lower-poly, as some of the corner-sharpening perhaps gets moved to the normal-maps.
The rough-looking sections–on the lower -arms and -legs, and at the back of the head–are intended to resemble crystal in the final texturing.
So then, this is PAnDA–(P)anda-(An)thropomorph (D)evelopment (A)ssistant!
(Screenshots and gifs simply recorded from PView.)
The other animations that have been made at time of writing are these: a stun-loop, an idle, and a static looping “stand”.
Seamless animations, and rather well optimized I imagine! I wonder if we could demonstrate different levels of polygon complexity on this model, with different triangle counts.
Thank you!
I honestly don’t know how well-optimised it is–I’m somewhat self-taught in this, and so don’t know what I don’t know about the craft! ^^;
Still, I am trying to apply what I do know, and thus to make it at least somewhat optimised!
Hmm… What did you have in mind? Just different levels of simplification, with the normal-maps taking on more or less of the work of detailing it?
Something like that might work, but I’m not sure that this model is ideal for it: with such a large, smooth body, there’s isn’t as much space for lots of detail in a high-poly version as I’d like.
Well, Panda does have a LOD system, as far as I recall. And we could also do something more custom, like using a singular animation Armature for a player character and then applying that armature with weights to our various polygon models, to fit the different specs we’re targeting. I know it’s a little unusual, but it’s totally possible to target an integrated laptop card from 6 years ago and a recent RTX series card, for instance, using Panda3D.
Hmm… note that the whole thing right now takes up about 4000 vertices, I believe–it’s not a hugely high-poly model, I feel!
The main thing for less-powerful machines might be to reduce the texture-size; at the moment I’m planning to use 4096x4096 textures.
But I don’t think that it automatically generates LODs–unless I’m mistaken? We’d still be talking about separate models to be made.
And as I said, I’m not convinced that this specific model is apt to demonstrating such LOD differences: it’s largest–and thus most visible–section is pretty much smooth.
I have the source code to David Rose’s Tagger sample lying around somewhere. There is also this, made by @wolf:
And these, which will likely make it into 1.11:
It stood for Disney’s Interactive Real-Time Environment Construction Tools. It was one of several libraries (one other being PANDA—also an acronym!) that they used together. When Panda3D was open-sourced, they were packaged into the same distribution.
Generally, DIRECT contains more high-level code that is implemented in Python. We generally try to be more inviting to C++ users nowadays, so we try to implement things in C++, except where there is a clearly established precedent.
For now, I wouldn’t worry about it and simply use direct as needed in your samples.
This is fine. I think it is too early to think about further reducing the polygon count. This is a fairly simple model so it might make more sense to demonstrate LOD using a more complex demo piece.
A great way to make a multi-LOD-level model in Blender, by the way, is to use multires modelling, where you start with a coarse shape and subdivide it over time to add more detail. With this feature, Blender keeps the original detail levels before subdividing, so that you can use those for the more distant LOD levels.
I do agree, I believe.
Funnily enough, I intend to use this feature to do some sculpting for the model, which I intend to then bake into a normal-map.
Using it as a LOD manager is a good idea, I do think!
@svf if you need a “sample” game using the distributed networking, you could also look at my game Multiplayer Boardgame which features a lot of what the distributed networking system has to offer. It probably also goes beyond some of the things I’ve done in the to be added samples which @rdb already mentioned.
I can also provide further specific help on the networking system as needed.
Wow! I should have searched a bit more, this is great. Looked at the code and it seems also well documented, very nice job putting these together!
I’ll definitely try to pull the code and see if I can make things work as well, maybe see if I can simplify things a bit for mini-game sample. But as-is, much of what is done here is already very befitting to just get posted into Panda as official networking samples I feel. @wolf thanks for sending these!!
Nice work @Thaumaturge ! I think we’ll see lots of use for this! It’s easy to underestimate the amount of work it is to do this, really appreciate your doing this.
One idea - I’ve been looking to try this myself - is if the armature is named/split properly, one can actually upload the model to mixamo.com and download/apply any of their animations - they work on biped type models which you have here. I wonder how much work it is? Because we could grab hundreds of animations from that site and instantly apply if the armature is layed out accordingly. If someone was able to do this I’d be really, really interested in hearing the details on how difficult it was!
I’ve updated the top post with all the great info here, thanks all for contributing! Great to see all the cool things coming together!
Thank you! I appreciate that in turn!
Hmm… I’ve never tried to do that, and so don’t know what their armatures look like.
I’m rather hesitant to make my current armature more complex than it already is–and I’ve made a point of keeping it simple, for the most part.
That said, I won’t entirely dismiss the idea, especially as you remind me that I still have yet to go back and rename my armature’s bones to something more sensible than “Bone.000”, etc… ^^;