Advertisement

P2P MMO(RPG)

Started by November 21, 2003 04:30 PM
3 comments, last by osh 21 years, 2 months ago
Yes, again! Somebody writes about it again I''m very impressed by MMO games and so I plan to do my own and now I need to discuss some aspects of my design. I plan to do the game P2P and I invited pretty good(my opinion) system, but I still have some problems. There will be one server but used only for updates and to hold one(or maybe more for paralels worlds) IP. The user will connect to server and receive that IP which point to ''root user''. Root user runs a list of users who have assigned static map part(eg. not change during user''s move). These users are assingned at need. Map will be divided to zones(I consider 8x8) and every zone will have(probably static) number which say how many users at avarege is there. Then imagine this: First user connects to the game and become a root user and simultaneously he become a ''server'' for entire map(he only generates events for him, so he needn''t to send any data over network). Then second user connect. Root user will assign him one half of the map(eg 8x4 zones) and he himself will keep the other one. Now when these users move, they send data to ''server'' who administrate their location. Now third user connect. The root user will compute which location assign to him. More ppl avaragly in zone, more points zone have(probably placed during map creation) - then all zone points are added and the half with most points is divided(when part of the map will not be longer divided it will get some additional points). So original part holder will get half of original half and new user will acguire second. Now other and other users connect up to time when every user has only one zone, then the users can help others(or earlier, depents on zones ranking again). It means that when in one zone is many real users, additional server user come(so every user in zone send its data to more servers at once but the each server send replies only to part of users in zone). Because the zone server users doesn''t change until they disconnect they are almost static so every server can know surrounding servers. When the normal user(or server user - it makes no difference - being server is absolutly independent from playing) move, he reconnects from server to server as he moves through zones. At the top of this tree there could be another ''really root user'' who can hold list of root users(that we were talking about up to now) for every map. Along with this hierarchy there should be a user who holds a list of all users online an when somebody send a private message to someone else, he will return his IP(which the user will store for some time if he wants to send him more msgs). Second function of this list will be holding the users who aren''t responsible for any zone, because they can replace someone who disconnects. I hope you understand the idea even I think it is hard Any suggestions to my idea? Now the problems: 1. Because of P2P, I need to store user account on his computer and only what I came up with are hashes. When user disconnect from game, cfg file hash will be created and stored somewhere (I''m new to this topic: is possible to store hash together with cfg file without being able to deduce the hashing function?) and then when user connect again, hash is made again and if it doesn''t match with old one, user made some changes and will be kicked up! Do you have other ideas? 2. Security. The biggest problem which was discussed here few times before. How can I secure the game? I have two ideas: a) What about public/private keys for msgs? Would it help (and be possible) to encrypt every message send? Would it help, or not? b) Random users will be choosen to became a ''guards''. The guards will change say in 5 minutes. Every guard will connect to random users and check if actions they perform are possible and they don''t cheat. One problem with this is how to check it, you can check if user use a speed hack or so, but can you guard everything? 3. Only small one. What if the user create a name identical to someone elses? I think that when they meet online for the first time, one of them can be permanently renamed for example as Richar I. and second one as Richar II. or so. But it''s a bit user-unfriendly. I think if you was able to read it all, you are really patient. Thx!!
This may sounds like not bad idea, but I suggest you read some more about Network Theory and Game Network architecture.
Advertisement
you still need a master server as reference for other player to search other P2P server and a database(SQL) server to keep track of the other servers and player records :D
:)
Data encryption is probably not going to help too much. The thing you have to worry about is hacked clients... If you let the clients decide the fate of the world, there will always be a way to cheat. You can do things to reduce this, but the smart, persistent users will find a way.

Mike
quote:
Original post by pakloong82
you still need a master server as reference for other player to search other P2P server and a database(SQL) server to keep track of the other servers and player records :D


No I think you don''t understand me. Non of this will be needed. New servers assignment will do a root user and user don''t need to now if there is a user at the other part of the map, he only needs to know users in his zone and thats what ''server user'' know.

This topic is closed to new replies.

Advertisement