Distibuted networking system

Return to General Discussion

should the distributed networking system be changed?

Open source the OTP server
6
38%
Develop a community maintained server
10
63%
leave as-is
0
No votes
 
Total votes : 16

Distibuted networking system

Postby NetworkedMMO » Tue Oct 05, 2010 5:24 pm

I had a question, is it possible to make an MMO with the distributed object system in tis current state?

if not, could we go about having Disney open source the OTP server as MikeC suggested here: http://www.panda3d.org/forums/viewtopic.php?t=5166

if not should we write our own, so that panda can be used better and easier?
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby drwr » Tue Oct 05, 2010 5:34 pm

The currently provided public server implementation is suitable for small multiplayer games, but probably wouldn't scale well to a massively multiplayer game. And Disney's not going to open-source its OTP server, no matter how nicely you ask, at least not anytime soon. Sorry. We already tried, and got shot down.

But you (and anyone else) are certainly welcome to write a public server for Panda's use that would scale to massively multiplayer games. :)

David
drwr
 
Posts: 11425
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby NetworkedMMO » Tue Oct 05, 2010 5:42 pm

I am not much of a programmer myself, i really have little-no good experience, but i would be willing to see what i can do with the code.

what code is there already concerning the small server/ client. what language would you reccomend for a server, and what does the server need to do other than connecting to clients (through sockets or python or something?).
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby drwr » Tue Oct 05, 2010 6:00 pm

The existing server is written (almost) entirely in Python and can be found in direct/src/distributed/ServerRepository.py.

All the server needs to do to is connect to clients and send messages back and forth. And keep track of the state of DistributedObjects. That's what ServerRepository.py does. In the case of an MMO, it has to do this blazingly fast. That's what ServerRepository.py probably doesn't do (though I don't think anyone has measured its actual performance).

If you're not a strong programmer, you would probably do well to use the existing ServerRepository.py until you understand it really really well, before you tackle the problem of making it better.

David
drwr
 
Posts: 11425
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby NetworkedMMO » Tue Oct 05, 2010 11:37 pm

so, if i make a game with the current server, then wirte my own server based off the existing one, will i have to change the rest of my code?

if it will work without changing my code, i think i will make my game, then develop a server, based on the existing one, but probably written in a more scalable language. (Erlang, C++)
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby NetworkedMMO » Wed Oct 06, 2010 12:59 am

Also, where would i find the files for the rest of the server?
does only the ServerRepository need redeveloping? or also the rest of the server?
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby drwr » Wed Oct 06, 2010 11:46 am

All the code is in the Panda source tree. You can look at ServerRepository and see what it imports.

I doubt you would be able to implement a new server without any changes to your client code at all, but probably the changes would be minimal. ServerRepository.py is designed to work more-or-less like Disney's ultra-efficient OTP server, after all, and programs that are written for the one would probably run with only minimal changes on the other.

David
drwr
 
Posts: 11425
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby NetworkedMMO » Wed Oct 06, 2010 3:47 pm

where would i find the CMU LAN server? ServerRepository.py says it is for use with it. I am having trouble finding the LAN server, to base an MMO server off of, following it for a design, adding scalability and efficiency.
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby drwr » Wed Oct 06, 2010 7:10 pm

ServerRepository.py *is* the CMU LAN server.

David
drwr
 
Posts: 11425
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby NetworkedMMO » Wed Oct 06, 2010 11:20 pm

Okay, I had misunderstood that, thanks. I think i might re-write the whole distributed object system in C++, for concurrency and scalability
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby Nox_firegalaxy » Fri Oct 08, 2010 5:47 am

Hi, I wrote a opensource MMO-network lib myself. Maybe it will help you to pick some stuff out or just merge it with panda3d: http://syncsys.sf.net . I will add "non-reliable-protocol support" soon, so using syncsys with a UDP based lib will benefit from the non-reliable stuff.

But maybe this system is not suitable for a panda application because its maingoal is to provide a library which scales well with the number of cores/threads. For some test of the system take a look at http://networklibsbenc.sf.net (have to update this side...).
Nox_firegalaxy
 
Posts: 120
Joined: Wed Jun 23, 2010 2:16 pm

Postby NetworkedMMO » Fri Oct 08, 2010 9:34 pm

I'll take a look at that, it might be just what we need, particularly with scalability support
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby NetworkedMMO » Fri Oct 08, 2010 9:43 pm

just a thought i had, i have seen others announce MMOs on the forum, has anyone developed code that they might like to share?
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby Praios » Sat Oct 09, 2010 4:00 am

There is http://www.panda3d.org/forums/viewtopic.php?t=9957 which could be helpful, too.
What am I actually talking about? - I don't know...
User avatar
Praios
 
Posts: 234
Joined: Fri Aug 31, 2007 2:23 pm
Location: Germany

Postby Nox_firegalaxy » Sat Oct 09, 2010 1:50 pm

Afaik CPython has a GIL which makes python unable to really benefit from multiple cores but maybe stackless python is a solution for you. Or you implement the server as a C++ app with embedded python and the client as a python panda3d app.
Nox_firegalaxy
 
Posts: 120
Joined: Wed Jun 23, 2010 2:16 pm

Postby Praios » Sat Oct 09, 2010 2:12 pm

jython has no gil either and for cpython guido says you should use processes instead which could giv even greater scalability because you can use different machines...

at https://smoothspan.wordpress.com/2007/0 ... computing/ there is an interesting article about the gil.
What am I actually talking about? - I don't know...
User avatar
Praios
 
Posts: 234
Joined: Fri Aug 31, 2007 2:23 pm
Location: Germany

Postby NetworkedMMO » Sun Oct 10, 2010 8:50 pm

Thanks, I'll take a look at that, might be a good solution
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby NetworkedMMO » Sun Oct 10, 2010 8:57 pm

Does anyone know what the OTP srever is written in

C++ or python?
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm

Postby Nox_firegalaxy » Mon Oct 11, 2010 4:25 pm

Well i know the concept of using multiple processes but this introduces a bigger otherhead and you have to use shared memory or serialize every information which has to be published to the other processes. So there is a reason why most application uses threads instead of processes.
But of course if cpython is the only solution processes would be fine :) .
Nox_firegalaxy
 
Posts: 120
Joined: Wed Jun 23, 2010 2:16 pm

Postby NetworkedMMO » Mon Oct 11, 2010 4:54 pm

well, i think if i do use python it will probably be stackless, for concurrency

EVE online used stackless for its servers, and if panda just needs to pass messages then it should be more than adequate
NetworkedMMO
 
Posts: 19
Joined: Mon Oct 04, 2010 10:45 pm


Return to General Discussion

Who is online

Users browsing this forum: Yahoo [Bot] and 0 guests