CMU LAN server?

Hi all!

I’m attempting to wrap my brain around the networking layer, both the low-level datagram protocols and the high-level distributed objects protocols. To that end, I pulled up the example code for distributed classes (.dc files) in Panda3D 1.0.5; very helpful!

I see references (both on the forums and in the Panda source code) to a CMU LAN open-source server that was designed to work with the distributed object repository system. I was hoping to get more information about this system; is it publicly accessible, and what features does it provide? Based on the networking example in Panda3D 1.0.5, it doesn’t appear necessary to have it for the distributed object system to work. So if I want to go down the road of distributed object without the CMU LAN server, is it feasible to do so, or will I be re-inventing the wheel?

Thank you for your help!

Take care,

The networking code in panda does not require the CMU LAN server. Personally, I have seen the distributed code work in a LAN outside of CMU. Theoretically, you should be able to connect to any ServerRepository as long as you have the correct address and port, so internet connections should also be possible.

The phrase “CMU LAN Server” is the name of a module, not the name of a machine. Ie, the server code written by CMU people with the intent that it be used for LAN games.

It’s not great. I’d go with lower-level API, myself.

Thanks for the heads-up!

So by ‘lower-level API,’ do you mean you recommend we stay away from the object repository / distributed class system (i.e. no DistributedNodes, DistributedObjects, etc.)? I’m having difficulty figuring out where the cutoff is between the higher-level components of the networking engine and the lower-level components.


The whole DistributedNode / DistributedObject thing was originally created for toontown, as I understand it. But toontown uses a proprietary server that we don’t have access to. So until CMU wrote the lan server, we had half of a networking system: client only. So at some point some CMU guys wrote a server, but frankly, we never polished it to where it was really ready for prime time. So I’d skip it.

Underneath all that is an API that’s essentially a thin wrapper around the operating system’s TCP/IP functionality. There’s also a class called a “datagram” which is a way to serialize data efficiently. I’d go with that, and maybe write your own layer on top of it.

Actually, I should mention - I worked in parallel computing for a while, and one API I always liked was the kind where the computers can send each other commands: basically, “hey, you, invoke this function with these arguments.” Whenever I implement a networking system, I always start with that as a base layer, and then build on top of that.