Controlling content on a server-by-server basis?

Ask away

Moderator: OpenUru.org Moderators

User avatar
zib_redlektab
Member
Posts: 15
Joined: Sat Dec 13, 2008 2:02 pm

Controlling content on a server-by-server basis?

Post by zib_redlektab » Wed Dec 17, 2008 11:26 pm

I'm not sure if this is actually a problem that people are worried about or not, but as a prospective shard owner, I've been thinking about this quite a bit. How are the changes to each client going to be monitored so that modifications not supported by certain servers cannot be used on those servers? For example, if someone hacks their client to have flymode, what will stop that person from connecting to a server and using flymode on it? We have the option of simply allowing the client to "update" itself to the server-specified files every time it connects, but this will become very annoying very quickly, as the servers grow more independent of each other.

I'm not sure if my point is coming across, so here's an example. Let's say I have significantly modified my Uru client to include flymode, fan ages, Myst V content, and a completely different KI. Server A supports all of this stuff. Server B however, only supports fan ages, and no other modifications. If I connect to Server A, I should be fine, as everything is supported, but if I connect to Server B, I suddenly have a client that is incompatible with the server. Hopefully, one of the two (server or client) will notice this, and I won't be able to connect before rectifying the differences. However, nobody is going to want to have to go through the client manually and enable or disable hacks/features just to use a different server, so we either need a way to automatically disable modifications that are not supported (a la userKI & D'mala in Until Uru), or people are going to pick a server and never bother trying other ones.

Now, as I said above, the simplest way to do this is probably just to have the client "update" itself from the server, the way it would if a new age were released in MOUL. The new files would download from the server, and overwrite the old ones. This would be ok, but having to re-download these files every single time and wait for it to re-patch just to use a different server is also going to get annoying. I think what would be good (and perhaps someone will think of something better, this is just my first idea) is either a cache system or a client-side database of all the installed modifications. The cache system would work by allowing the client to keep track of all the changes each server wants the client to make before it is allowed to connect, which would mean that after the first update on a server, the client would be able to patch itself automatically, with no downloads, every time after that. The database system would be simpler, as a server could just tell the client the names and versions of the modifications that are allowed to connect, and the client could disable the rest. This would only work (I think) for simpler modifications (like userKI and fan ages), not big fancy mods that I suppose will become more popular when the code is released.


Perhaps this is not a problem at all, I don't really know what I'm talking about. I just really don't want it to end up with those who have the ability to code changes into the client being able to take over servers because any code in the client can be run on the servers or something.

GPNMilano
Member
Posts: 38
Joined: Sat Dec 13, 2008 1:52 am

Re: Controlling content on a server-by-server basis?

Post by GPNMilano » Thu Dec 18, 2008 2:08 am

zib_redlektab wrote:I'm not sure if this is actually a problem that people are worried about or not, but as a prospective shard owner, I've been thinking about this quite a bit. How are the changes to each client going to be monitored so that modifications not supported by certain servers cannot be used on those servers? For example, if someone hacks their client to have flymode, what will stop that person from connecting to a server and using flymode on it? We have the option of simply allowing the client to "update" itself to the server-specified files every time it connects, but this will become very annoying very quickly, as the servers grow more independent of each other.

I'm not sure if my point is coming across, so here's an example. Let's say I have significantly modified my Uru client to include flymode, fan ages, Myst V content, and a completely different KI. Server A supports all of this stuff. Server B however, only supports fan ages, and no other modifications. If I connect to Server A, I should be fine, as everything is supported, but if I connect to Server B, I suddenly have a client that is incompatible with the server. Hopefully, one of the two (server or client) will notice this, and I won't be able to connect before rectifying the differences. However, nobody is going to want to have to go through the client manually and enable or disable hacks/features just to use a different server, so we either need a way to automatically disable modifications that are not supported (a la userKI & D'mala in Until Uru), or people are going to pick a server and never bother trying other ones.

Now, as I said above, the simplest way to do this is probably just to have the client "update" itself from the server, the way it would if a new age were released in MOUL. The new files would download from the server, and overwrite the old ones. This would be ok, but having to re-download these files every single time and wait for it to re-patch just to use a different server is also going to get annoying. I think what would be good (and perhaps someone will think of something better, this is just my first idea) is either a cache system or a client-side database of all the installed modifications. The cache system would work by allowing the client to keep track of all the changes each server wants the client to make before it is allowed to connect, which would mean that after the first update on a server, the client would be able to patch itself automatically, with no downloads, every time after that. The database system would be simpler, as a server could just tell the client the names and versions of the modifications that are allowed to connect, and the client could disable the rest. This would only work (I think) for simpler modifications (like userKI and fan ages), not big fancy mods that I suppose will become more popular when the code is released.


Perhaps this is not a problem at all, I don't really know what I'm talking about. I just really don't want it to end up with those who have the ability to code changes into the client being able to take over servers because any code in the client can be run on the servers or something.
Simply put, each shard owner will need their own Dataserver. They'll need this for fan ages anyway. The dataserver is set up to search the users install for any changes in the python, dat files etc that don't match the ones on the dataserver, and replaces them with the ones from the dataserver by downloading the ones for that server. Since the prp, age, and fini files will be for the most part interchangeable. (You can take the UU files for example and plop them in POTS even though they have a different client.) Unless severe changes are made to the MOUL client that warrant changes to the structure of the PRP files (doubtful as this would require changes to the source code for the age creation tools, and the client, and possibly the server code). Then all you'd need to put on the data server will be the client, and its associated binaries. Upon hooking up to the age, it will check your install, replace whatever's been changed, and you're off and running. The client is relatively small. (Somehting like 8 megs) So it will be a hassle, but in the end the best and easiest way to do it.

a'moaca'
Member
Posts: 163
Joined: Sat Dec 13, 2008 11:22 pm

Re: Controlling content on a server-by-server basis?

Post by a'moaca' » Fri Dec 19, 2008 7:35 am

You seem concerned with Python hacks and features.

In the MOUL architecture the Python is downloaded from the auth server every login.

GPNMilano
Member
Posts: 38
Joined: Sat Dec 13, 2008 1:52 am

Re: Controlling content on a server-by-server basis?

Post by GPNMilano » Fri Dec 19, 2008 10:49 am

a'moaca' wrote:You seem concerned with Python hacks and features.

In the MOUL architecture the Python is downloaded from the auth server every login.
Yes the Python pak and (I believe, but don't quote me on this) The SDL files were downloaded upon each login.

realXCV
Member
Posts: 257
Joined: Sat Dec 13, 2008 2:07 am
Contact:

Re: Controlling content on a server-by-server basis?

Post by realXCV » Fri Dec 19, 2008 9:38 pm

What if a user implements a hack into the client (.exe)? Will the server will be able to detect it and force the client to not use it ?

Dachannien
Member
Posts: 16
Joined: Wed Dec 17, 2008 12:23 am

Re: Controlling content on a server-by-server basis?

Post by Dachannien » Sat Dec 20, 2008 12:51 am

To be honest, you'll probably never be able to guarantee that someone doesn't hack the client. MMOG companies have spent a ton of money and resources combatting this problem. The saving grace for Uru is that there's not a whole lot of motivation to hack the client - you don't get xps or gold faster by hacking, you don't get invulnerability against all the stuff that's not attacking you, and really, all that happens is you spoil the surprises for yourself.

Ultimately, all you really need is a sanity check to ensure that people don't inadvertently run the wrong version of the client or play with corrupt data files, and then you just keep an eye on things to boot people who actively try to give other players a hard time.

Chacal
Member
Posts: 29
Joined: Mon Dec 22, 2008 12:41 am
Location: Quebec City, Canada

Re: Controlling content on a server-by-server basis?

Post by Chacal » Mon Dec 22, 2008 1:10 am

I have hosted game servers for years, and the problem of client hacking has been all but unsolvable.
I was hosting highly-competitive games such as the Battlefield series, for which the motivation to hack and cheat was high.
Third-party solutions were added to the client installs, such as Punkbuster. These would filter out the casual cheaters, but real hackers were always a step ahead. Such watchdog systems would be possible for MO:UL, but I doubt it would be worth the effort.

Fortunately, as was said previously, the player base is entirely different, and the nature of the game makes it less desireable to hack the game.

It is far more important to protect the servers themselves, to prevent vault corruption from involontary denial-of-service attacks such as happened to UU servers when someone tried flymode. This would be possible by designing an application-level firewall in front of the data servers. Such a firewall can only be designed after careful examination of normal and abnormal network traffic.

Apart from that, the MO:UL concept of downloading Python and SDL files only when needed works well, even if it can be easily circumvented.

The answer to the question of "what to do when you want to use two different shards with different clients and content" is, of course, to have two different installs of the game on your PC.

Hope this helps.

realXCV
Member
Posts: 257
Joined: Sat Dec 13, 2008 2:07 am
Contact:

Re: Controlling content on a server-by-server basis?

Post by realXCV » Mon Dec 22, 2008 2:37 am

In this case, flymode shouldn't be a problem on the the technical side but on the gameplay side. The server will see the player moving and assume it's a normal behavior. It's the client that prevent the player from flying in the air or going through walls.

MustardJeep
Member
Posts: 54
Joined: Sat Dec 27, 2008 8:15 pm

Re: Controlling content on a server-by-server basis?

Post by MustardJeep » Sun Dec 28, 2008 5:04 am

They are not going to be hacks anymore but features...............

Flymode, User KI, Admin KI, and ect can all be made legit add-on programs. :mrgreen:

If the server can tell the KI to disable the official patches it's as simple as a sdl variable to implement. Not saying that you wouldn't want the server scanning for illegitimate mods but if Explorers don't have to install or uninstall anything just stick their hand in a KI machine it would be a sweet setup. Let the big bad hacker types cry but if the toys are made official and the clients patchable server side all you'll have to watch for are the real crackers. The really bad people that find a way around the protections are going to do the stupid stuff IC that gets them noticed and banned anyway. <shrug>

As has been said it's a running arms race, but the add-on's can be made official and very well controlled server-side.....No reason for multiple installs to access multiple shards.

User avatar
Marten
Member
Posts: 174
Joined: Fri Dec 26, 2008 1:19 am

Re: Controlling content on a server-by-server basis?

Post by Marten » Sun Dec 28, 2008 6:12 am

MustardJeep wrote:As has been said it's a running arms race, but the add-on's can be made official and very well controlled server-side.....No reason for multiple installs to access multiple shards.
Unless the server/client protocol changes. 8-)
The music is reversible, but time is not.

Post Reply

Return to “Questions”

Who is online

Users browsing this forum: No registered users and 1 guest