Clustering with Panda


While browsing Panda sources, I’ve found several interesting classes for clustering. Are they in working condition or it’s unsupported?
It seems that ToonTown is using clustering for it’s game universe.
Is it possible to create a simple cluster for tests?

Thank you!

If by clustering, you mean the distribution of a single frame onto multiple different PC’s working together, that is not yet supported in Panda.

If, however, you mean the loose networked communication of several PC’s through dynamic exchange of data that keeps certain high-level fields of distributed objects in sync across multiple PC’s, that is supported, and there are examples of that provided with Panda (for instance, the chat client).


Thank you David!

I meant “the distribution of a single frame onto multiple different PC’s working together”. I just was confused by the direct.cluster package with its submodules:

  • ClusterClient: ClusterClient: Master for mutli-piping or PC clusters.
  • ClusterConfig
  • ClusterMsgs: ClusterMsgs module: Message types for Cluster rendering…
  • ClusterServer

What are they?

These are a collection of utilities that are designed to loosely connect a number of PC’s to render different views of the same scene in sync with each other (for instance, to drive a multi-view cave, or a projection wall).

The idea is you fire up a Panda client on each PC, and load the same scene into each one. Then you can use the Cluster utilities to send high-level commands to each slave PC, for instance, to move the camera around.


Aha! :slight_smile:
I got it, it might be useful, indeed

Thank you!

Hi Panda-Team,

Is there an example how this can be done? We have VR system(shutter glasses+semi cylindrical 3 projectors cave system) at our university and I’d like to give panda clustering a go.


We don’t have an example program. I think the only guy who has done anything like this would be David, and he’s the lead developer on Panda3D, so he’s a little swamped - he checks the forums pretty often, but not always.

Actually, I have little to do with that code; Mark Mine developed and uses it. There are some examples of its use in direct/src/directtools/ You can also read the code itself (it’s all Python) in direct/src/cluster. It’s pretty simple stuff.


Will do! Thank you! :smiley:

Hi Panda-Team,

I just got back to Panda again and I am continuing where I left off with no success. I am still confused, can someone clarify in, there is self.daemon=DirectD(). What does it do? Where can I find information about DirectD()?

Can someone kindly help? Thank you.

pandasource/direct/src/directd :

DirectD is a client/server app for starting panda/direct.

Start a directd server on each of the machines you
which to start panda on.

Start a directd client on the controlling machine or 
import ShowBaseGlobal with the xxxxx flag in your
Configrc.  The client will connect each of the servers 
in the xxxxx list in your Configrc.

There are two API groups in this class, they are:

  client_ready() or tell_server()



The second group was from a more general implementation
of DirectD.  The first group summarizes the main intents
of DirectD.
Both groups are presented in order chronologically by their
intended usage.
The first group will probably provide everthing needed for DirectD.

It seems it’s not compiled in, as of pandasource/direct/src/directdServer.
I couldn’t find it anywhere in makepanda.

Kirain dah berhasil, ternyata…

Hi ynjh_jo,

Oo ternyata… itu ndak ada di makepanda ya?
Tadi siang aku sempat puyeng cari directD() ini dari mana? Jadi, apa aku musti kompile dari source dengan mengganti isi makepanda? Apa baikan nunggu release berikutnya?

Makasih atas penjelasannya ya.

So, it was missing from makepanda?
I was confused, where did directD() come from? Should I then compile from the source with modified makepanda? Or should I wait for the next release?

Thank you for the explanation given.