Jump to content

[Discussion] Idea about a global, cross-server chatting system


Recommended Posts

First of all greetings, I got no clue on the state of l2j and the servers nowadays, at least I hope I am posting this in the right section. Here's an idea I came up with some days ago. Try to read carefully cause it's a bit new for l2 and a bit complex.

 

Idea:

 

Enabling chatting between different servers through a p2p or master/slave architecture.

 

Details:

 

Imagine this scenario. We have two servers, lets call them L2Custom and L2Oldschool. They are both registered in the global chatting system. Here's what players and admins would be able to do.

 

Player in L2Oldschool:

 

.global Hallo everyone in Lineage 2 ! ---> Everyone in servers registered to that system would get this message, both in L2Custom and L2Oldschool

.pm L2Custom xxBestPlayerxx Hey man --> Player from L2Oldschool sends a pm to xxBestPlayerxx who is in L2Custom

 

Admin in L2Oldschool:

 

.ban L2Custom --> Bans all L2Custom incoming/outgoing chat to prevent advertising and flame if things go bad.

.ban L2custom xxBestPlayerxx --> Bans a player from L2Custom from chatting in L2Oldschool because he says shit about the server.

 

Commands and filters can be extended/applied to filter out unwanted behaviour such as server adverticement.

Link to comment
Share on other sites

It's really an interesting idea, but requires a lot of work. It's like re-coding the whole chat system from scratch. I would really be glad to see it, too bad i don't have enough knowledge to help in it.

Good luck if you're going to try it :D

Link to comment
Share on other sites

It's really an interesting idea, but requires a lot of work. It's like re-coding the whole chat system from scratch. I would really be glad to see it, too bad i don't have enough knowledge to help in it.

Good luck if you're going to try it :D

 

not rly, the hard part is the communications between the servers, not the chat system, the only thing that needs modification is the server socket communication, the chat system is fine, it doesnt need any heavy modification ;)

Link to comment
Share on other sites

It's funny you speak about that, Cryptic studios made it with Neverwinter and Star Trek Online, the chat system is global to both those games (can see/PM online friends even if connected on another game, and probably admin side is also centralized).

 

Got an idea how the link will be made ? I guess during LoginServer hook ?

 


 

Another idea, if you manage to make it, is : adding a friend is linked to your account. Aka, when you invite someone you invite the account. Meaning if your friend logs on another character, then you still know he is online. Still an Cryptic idea.

 

Basically, on Cryptic games, a player is considered as playerName@accountName. You invite @accountName, and can see playerName when logged.

Link to comment
Share on other sites

It's funny you speak about that, Cryptic studios made it with Neverwinter and Star Trek Online, the chat system is global to both those games (can see/PM online friends even if connected on another game, and probably admin side is also centralized).

 

Got an idea how the link will be made ? I guess during LoginServer hook ?

 


 

Another idea, if you manage to make it, is : adding a friend is linked to your account. Aka, when you invite someone you invite the account. Meaning if your friend logs on another character, then you still know he is online. Still an Cryptic idea.

 

Basically, on Cryptic games, a player is considered as playerName@accountName. You invite @accountName, and can see playerName when logged.

 

sockets

Link to comment
Share on other sites

I would probably implement it using a Master-Slave architecture with a RESTful streaming API using HTTP.

 

For example say we have Master and Slave1 ( l2j server ) , Slave2 ( l2j server ) all of them running a web server and web client ( Jetty , Apache commons HTTPClient ).

 

From Slave1 to Master HTTP request:

 

1)/GET www.master.com/serverlist <-- Returns a list of registered servers with their Ids and Slave1 gets the Slave2's id.

2)/GET www.master.com/allow/{slave2Id}

 

From Slave1 to Master HTTP request:

1)/POST www.master.com/chat , json list of chat logs.

 

Master server reads the POST and forwards the POST to the Slave1 because Slave1 allowed Slave2 to communicate with it.

 

The basic idea flow for the chat is

 

a)SlaveX sends logs to be broadcasted to Master

b)Master receives the logs and forwards them to Slaves that have SlaveX in "allow" mode. That way you can configure which server you want to allow/block.

c)SlaveY receives the messages and pushes them into it's chatting system via shout/trade or whatever same way as some NPC's talk.

 

In every communication case above, the Slaves allow HTTP Posts/gets only from the Master IP address. That can be secured more using some clientid/clientsecret combination to authenticate the slave servers on the master server.

Link to comment
Share on other sites

http://docs.oracle.com/javase/tutorial/networking/datagrams/clientServer.html

All you need ^^

 

It's safe, it's streightforward, you wont need to over-complicate yourself with TCP procedures, and you wont be afraid of syn ACK packet floods :P (before you say smth regarding UDP flood, you'll get flooded with udp on standard ports like services 0 and 80, if you open a obscure one it wont affect anything)

 

Also, a good thing to it is, you dont need to maintain connections, each connection stands tll all data is written and flushed out :P So you wont need another server to maintain connections, that is vulnerable to attack :P. No master no slaves, just short and efficient connections.

 

PS: it supports Selectors, and nio Channels :P

Link to comment
Share on other sites

less work than you might think, since l2j separated the community server you can try to mod the new cb server so multiple servers can connect to it once and if you do it right there you have your cross server forum :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...