Cross-server teleportation

04/27/2013 14:06 _DreadNought_#1
So.

Let me start off with one thing in mind, Cross-server teleportation is not an inter-server meeting area - so don't get confused.

My question is, would anyone be interested in a ready-to-go package which would allow you to connect your server to another?

For example - It would be ideal for server owners with a PVP server & Leveling server to connect them both, so if you logged into the PVP server you could just do "@server level" and boom, there you would be.

All you'd have to do is essentially drop the .exe onto the servers you wish to link, fill out the config.ini file and start em up!

Thoughts?
04/27/2013 14:07 Epic-Chaos#2
Would be interesting.
04/27/2013 20:56 .Kinshi#3
That would be hella cool.
04/27/2013 21:09 Spirited#4
An inter-server meeting area is completely possible. If the servers are hosted on the same machine, you could use pipes. Else, you could use socket systems between the two servers to bring them together on a third, union server (like a bridge connection in networking). It would increase the ping between the client and final server meeting place, but it's possible. The union server would request packets from the other two servers and send them to each other and such. It's inefficient (the concept itself), but it would allow for almost any patch version to be supported.
04/27/2013 21:29 _DreadNought_#5
Quote:
Originally Posted by Fаng View Post
An inter-server meeting area is completely possible. If the servers are hosted on the same machine, you could use pipes. Else, you could use socket systems between the two servers to bring them together on a third, union server (like a bridge connection in networking). It would increase the ping between the client and final server meeting place, but it's possible. The union server would request packets from the other two servers and send them to each other and such. It's inefficient (the concept itself), but it would allow for almost any patch version to be supported.
No you misunderstood - If I wanted to release an interserver I would.

The whole goal of this project is to allow cross-server teleportation and for no interserver support to be put it.

The other goal for this is for it to be plug and play - so there's no setup actually required (Yes, I am heavily inspired by the minecraft dev).

I mean, it's not like I'm benefiting them much - They just get to jump from server to server which is just helping the front-end player as opposed to greedy server owners.

As for the ping being increased - If we're talking about the package & the servers being hosted on the same machine thats going to increase the ping by a mere few milliseconds - If the package is on one machine and the servers are on different machine (Great way to hide the server(s) REAL ip) the only time thats going to be added is the package machine->Real server ms, so again thats never normally more than 100ms or so... meaning nothing noticeable to the end-user.

Infact in extreme circumstances it could potentially increase the users ping. (I can only think of one situation where this would be true)
04/27/2013 23:59 Spirited#6
Oh, I see. I wasn't sure if you were limiting yourself or not. Well, proper cross-server teleportation isn't possible without client support. The workaround would be to route all packets from one server to be processed on the other server. It would mean that the client would still be logged into the server they originally logged into, but the server would be processing the information on the other server. I'm all in if you'd like to do something like that, but I'm not sure if the work would be worth it.
04/28/2013 12:04 _DreadNought_#7
Quote:
Originally Posted by Fаng View Post
Oh, I see. I wasn't sure if you were limiting yourself or not. Well, proper cross-server teleportation isn't possible without client support. The workaround would be to route all packets from one server to be processed on the other server. It would mean that the client would still be logged into the server they originally logged into, but the server would be processing the information on the other server. I'm all in if you'd like to do something like that, but I'm not sure if the work would be worth it.
Yeah, without a client mod you cannot do a REAL server change - so yes it would work much like a proxy.

I was looking around a few big minecraft servers the other day who do a similar kinda thing, I couldn't notice any lag increase - at all(note; the server did have 2.1k players spread over 10 servers)

.. not to mention NewestCOServer rapes Minecraft Server.exe
04/28/2013 13:39 Spirited#8
Quote:
Originally Posted by _DreadNought_ View Post
Yeah, without a client mod you cannot do a REAL server change - so yes it would work much like a proxy.

I was looking around a few big minecraft servers the other day who do a similar kinda thing, I couldn't notice any lag increase - at all(note; the server did have 2.1k players spread over 10 servers)

.. not to mention NewestCOServer rapes Minecraft Server.exe
I see... the client connects to a proxy instead. From there, it routes packets to one server or the other. What patch are you considering for the target?
04/28/2013 13:48 Korvacs#9
This sort of thing isnt client specific, as soon as the choice to move is made the proxy just routes to the second server instead of the first and nothing changes except that a map change would be triggered to the same location as previously, or to some custom location.

The client would have no idea.
04/28/2013 15:14 Spirited#10
Quote:
Originally Posted by Korvacs View Post
This sort of thing isnt client specific, as soon as the choice to move is made the proxy just routes to the second server instead of the first and nothing changes except that a map change would be triggered to the same location as previously, or to some custom location.

The client would have no idea.
I was more thinking about cryptography. The sniffing of packets would be required to properly track character data (like any bot does). Otherwise, it wouldn't teleport the character properly (unless the databases were shared and everything saved upon change, I suppose). What would be the point of the project at that point though, besides taking up resources?
04/28/2013 15:55 _DreadNought_#11
Since the commands to switch between servers would be controlled via the proxy, it would be patch specific.

The chat packet doesn't change very often - which is a good thing.

I'd probably implement all the main patches, 5017, 5165, 5530 & whatever the latest is.

Authorization when switching severs would also be infact quicker, since the proxy would just cache all of the initial exchange packets etc and be able to just ship them off to whatever server wants it.

Another option would be to replace the AuthServer from the servers connects and let the proxy handle that, but I worry that would remove any freedom and customization people would have on their authserver.
04/28/2013 16:53 Spirited#12
Quote:
Originally Posted by _DreadNought_ View Post
Since the commands to switch between servers would be controlled via the proxy, it would be patch specific.

The chat packet doesn't change very often - which is a good thing.

I'd probably implement all the main patches, 5017, 5165, 5530 & whatever the latest is.

Authorization when switching severs would also be infact quicker, since the proxy would just cache all of the initial exchange packets etc and be able to just ship them off to whatever server wants it.

Another option would be to replace the AuthServer from the servers connects and let the proxy handle that, but I worry that would remove any freedom and customization people would have on their authserver.
That would be interesting, but then the proxy would require a database connection and all of those authentication packets. I think your best option would be to select a patch and go for it as a game server proxy. If people want it on another patch, let them do the work. I think it'd be appropriate to target a patch that uses Blowfish (since they used that for the longest period of time).
04/28/2013 19:20 Super Aids#13
Quote:
Originally Posted by Fаng View Post
I was more thinking about cryptography. The sniffing of packets would be required to properly track character data (like any bot does). Otherwise, it wouldn't teleport the character properly (unless the databases were shared and everything saved upon change, I suppose). What would be the point of the project at that point though, besides taking up resources?
Well you have the keys on server1, so you could basically just send them to server2
04/29/2013 01:55 _DreadNought_#14
Quote:
Originally Posted by Fаng View Post
That would be interesting, but then the proxy would require a database connection and all of those authentication packets. I think your best option would be to select a patch and go for it as a game server proxy. If people want it on another patch, let them do the work. I think it'd be appropriate to target a patch that uses Blowfish (since they used that for the longest period of time).
Very good point well made.