Will Panda work for me?

I know I have to write code which I can do but I lack information about some aspects of this engine and can’t find the answers so I need to ask.

I want to know if Panda3D can perform on the fly database reading of objects and draw them on the fly in a streamed environment which includes terrain, models, AI and paths?

I want the client side to have a nice graphical output with high Q models.(models with 5K+ vertices an multilevel LODs and swaping of parts. A super model with one skeleton and many separated parts auch as legs, arms, feet, hands, body, etc…) So far I haven’t seem much in this engine besides really low Q models and no exported installed yet in blender so haven’t been able to test.

I need a means to export shape keys from Blender without breaking existing models. (as stated above in a super model with many pieces) Max and Maya may work but I can’t find any information on Blender exporters supporting shape keys.) Is there any functional exporter for Blender that does shape keys? Do I need to write my own?

How much difference is there between Python and C++ as far as functional access to the engine? Is python secure enough to use on a client or can I mix C++ on client and python on a server?

Thanks for taking a moment to assist.

What do you mean on “database”? Panda can load models on the fly, including loading models in parallel thread, as far as I know.

About Blender exporter - do you try YABEE? If it not works for you, then you can say what you want and we can try to improve exporter, or you can modyfi it yourself.

Python and C++ is similar in context of access to the engine, but python contain bunch of helpers, which simplify and accelerates your work.

You can extend python by C++ libraries due to performance or security approach

I’ll give you some background here so you may understand what I am trying to accomplish.

Most of the engines I have studied have always required some form of static data which is required to get the engine initialized. I am currently using BigWorlds Indie which still falls into this category somewhat and only as a personal project now to boot. I can continue but it is a total waste of my time and effort IMHO as you’ll learn later.

You can not access the static data from inside the game but have to make access through an editor and in game it is not modifiable, You can’t select, move, rotate, delete or scale static objects except through external processes which breaks the lighting and causes problems between access of opened files which the game can’t access if you have it opened to read or write. However I CAN create classes of objects which I can make dynamic and persist across server restarts. see the video here.


and implementation of this here.


Now this works OK but access to the terrain is not possible. I can not import the existing static models from the chunk database so everything is purely dynamic. No problem for a few connections but when large amounts of data has to be transmitted every time one enters the AOI is leads to large spikes of lag.

The solution is to be able to write the data out to the chunk database but has to be done at server start and patched to the client. Once it written to the chunk it become no longer useable which is unacceptable so it was my intention to make a fully functional demonstration and seek funding to buy the source and rework the entire thing to fit my sandbox design.

However, low and behold BWT sold the engine out to Wargaming a year ago and they removed the engine not only from the indie but commercial sales too so I stopped working on it since it was doomed to fail.

I recently decided to instead of devote all my free time to just gaming I would spend some of my time setting up a cluster of servers and use Massiv (open source which seems to be abandoned) with the massiv engine as a clustering/streaming engine I can migrate most if the current design since the Massiv engine is very similar to the BW engine. But it lacks a client side engine.

In the current concept design the world is existing in a MySQL database of objects or entities which have their own scripts/classes and own definitions or structures.

The definition (structure) of the object contains a description which may hold the model used or could be a pointer to a list of models and have a second pointer to itself as to which ID of the list to use. The structure of the object most likely will hold position, scale and data which is necessary for its functionality such as which processes and data are allowed public and which processes and data are private . It is literally up to the design as to what the objects can do or what part of the object can be altered and/or accessed.

Because this is now a structured class which self initializes when activated by creation and passes its data to the engine. I have a dynamic class which can be altered through code instead of a static object.

The client needs to conform to the current specification or have a close enough design to allow migration of the current data without major rework of said data.

The short version of this is, yes, it is possible. Panda also offers functions to build geometry in code. This is in the vertex writer section of the manual. Dynamic altering of meshes is possible. Depending on your design it may be more effective to do some of these transformations in shaders.

Just remember that graphics cards are limited to drawing about 2-300 objects at once. Graphically you will have to merge geometry. This is a hardware limitation and is not panda specific.

As a scripting language python has very little in the way of security with arbitrary code (say code written by users for their objects, like second life). Pypy has done some good work for their implementation, but panda3d is incompatible with it. Unless you ship your client with its own python interpreter, it is possible for someone to import the os or sys module and delete the home directory of any user who activates that object.

Thanks for the info.

I take it the engine at this time does not have batching?

As I expected with Python I rather go C++ with the client.

I’ll give it a go and see how it works out.

Thanks guys.

Panda 3d does batching. This can be done manually as well.

The insecurity of python is with arbitrary code, running something through the exec function for example that is written by an untrusted user. More details here: programmers.stackexchange.com/qu … usted-code
And pypy sandboxing: pypy.readthedocs.org/en/latest/sandbox.html

Now if 3rd party client code is only run server side (at the sacrifice of client side prediction) then it is possible to use python as it is much easier to batten down the hatches on one machine. Just to make sure I’m reading your things right, you are allowing your clients/players write code for the objects they create?

No. no. no. :laughing: not going to allow clients to write code! They will be able to set markers for patrol points and simple text for quests with links to their NPCs, or select existing code to make behaviors, but code? no way! Not going to happen.

I would need to go cloud computing for clients to write code and I have no understanding of that at all.

What this is about is harvest, build and explore in no set order. How much freedom is allowed is still not determined until I get a functional client and server.

OH ok. Then python is plenty secure.

I’ve given this a lot of thought and have decided to scrap this project.

The reason is the amount of time to develop it will take to long. I can proceed to just hobby it with BWT.