nwnxee / unified

Binaries available under the Releases tab on Github
https://nwnxee.github.io/unified
GNU General Public License v3.0
131 stars 92 forks source link

Server list syncing #4

Open Liareth opened 6 years ago

Liareth commented 6 years ago

The ability to sync player lists between servers (and allow cross-server tells as if they were native) would be very useful to many major servers.

This will probably require a separate server binary which handled synchronising the player list and communicating cross-server tells and shouts. The flow being:

Rinse and repeat for disconnected users and for sending tell/shout messages.

Sync server must receive a heartbeat every seconds or it will trigger disconnect notification for that server's players to all other servers.

It's pretty complicated but up for grabs if anyone wants to work on something like this.

GoLoT commented 5 years ago

After working on this for a bit I have a simple prototype running that does (mostly) what it's expected to do.

So far only one function has to be hooked exclusively and rewritten: HandlePlayerToServerChatMessage. The rest can be done with shared hooks: SendServerToPlayerPlayerList_All, SendServerToPlayerPlayerList_Add, SendServerToPlayerPlayerList_Delete and CServerExoApp::MainLoop.

The main issues I found so far:

It's far from being ready to be released but I thought I should inform of the progress and hopefully get some feedback. Mainly regarding what other functionality could be useful and how to deal with the current issues.