Sign in to follow this  
Butabee

Quasi MMO and cheating

Recommended Posts

I'm in the process of designing a game where players host their own worlds but players can take their stuff gained from any certain world with them to other servers. Players will be able to literally take pieces of worlds into their inventory. The environments are voxelized so players can pick up a chunk of voxels of dirt or any other material and keep it in their inventory.

Player data will be kept on a central server.

I'm trying to think of a way to do this that will minimize cheating. I don't want to keep player created data on my own servers.

How could I validate gathered materials without actually hosting the maps?

I think I can host things like monster and treasure spawns but not player created content.

Share this post


Link to post
Share on other sites
The short answer is: you can't. You need to store something that gates the "value" created on servers that you trust.
The longer answer is: Is it that bad if players cheat? If they do, it means they like your game. As long as it doesn't ruin the experience (griefing) for others, it might not be worth fixing.

Share this post


Link to post
Share on other sites
I guess I will have to make real valueable stuff, like item crafting materials, only drop from monsters and treasure chests which would be controlled by an authorized server.

The materials gathered from the open world will have to be building material... or I guess I could have a dice roll on the central server when a player mines a chunk of ore to produce a random amount of valuable materials. Like I could have the player ran server say "Player A struck stone of this type with his pick" then maybe generate him some gold or something on the central server.

So the real basic stuff, like dirt, stone, and wood, etc. could be gained from cheating but the valuable materials couldn't

Share this post


Link to post
Share on other sites
[quote name='Butabee' timestamp='1330134695' post='4916409']
Like I could have the player ran server say "Player A struck stone of this type with his pick" then maybe generate him some gold or something on the central server.[/quote]

And now player has 2,004,154,223,413,558 + 1 pieces of gold. They use half of that to buy Epic Pickaxe from another player. Each of those players has bazillion of gold left.

It doesn't matter who generates the gold, unless entire generation chain is checked via authoritative server on each operation. In above case, when a transaction is performed, the central server would need to check that player really did gather 2,004,.... pieces of gold by summing up all loot rolls so far.

Since that is obviously not viable, one moves trading to this central server. Now people realize that gold is hard to dupe, so they start trading with dirt. So dirt is moved to central server. And so on...

Bitcoin is a concept that works around central authority by establishing a conversion between bitcoin and electricity. Anyone can take existing resource and convert it to bitcoins. As long as the conversion factor is sufficiently high, the "dupe" generation will be slowed down. In case of traditional item duping, this conversion factor is way too small to matter. Cost of duping billion items is a fraction of a cent.

Share this post


Link to post
Share on other sites
Also, I can spin up N script, each of which just hits your server with the "I hit an Ore with a Pick-axe" at the right rate, and generate all the resources I want.
You have two options:
1) Run all the economy, which includes game rules, on your servers.
2) Accept that people are in control of the economy, and build the best game you can with an effectively unlimited resource supply.

Share this post


Link to post
Share on other sites
I would expect people to generate scripts or what have you to say they hit the ore that gives gold... but the thing is the rate of which gold is generated can be controlled, if they send those messages rapid fire I can easily validate that along with how long it takes to perform the action. And even if they do send the messages at the right times, the gold isn't generated on every hit. As I already said, it's based on a dice roll. Kind of like a chance of getting a magical item off a mob. Valuable materials like gold will have very low chances to drop any at all. Most of the time the player will get zero. So it almost doesn't matter if they actually are hitting stone or just sending a message saying they are, since the actual stone will be very prevalent and it takes almost no effort to perform the action in the first place.

In this case it would hardly be worth making a program that just pumps ore hit messages, but if it does happen it matters very little, as the gold flow is still controlled by the central server.

Share this post


Link to post
Share on other sites
[quote name='Butabee' timestamp='1330193579' post='4916527']

In this case it would hardly be worth making a program that just pumps ore hit messages, but if it does happen it matters very little, as the gold flow is still controlled by the central server.
[/quote]

There was a story a while back about WoW. I don't recall the details, but some top guilds used permutation of their characters to get around the raid lockout while maximizing loot.

While normal player would take their main, raid, roll 1:25 chance on loot, these players arranged optimal groups of, say, 50*10 character, then ran 20 raids, giving very high probability that each of their characters gets required gear.


I think that original Diablo was the last attempt at making hybrid client/server logic. They tried to counter every attempt using GUIDs and whatnot but eventually just gave up.

[quote]Most of the time the player will get zero[/quote]

Gold rushes are like that. In the beginning, everyone went to seek fortune. Chances of striking gold were good enough to make it worth. After a few years, these rewards diminished and people gave up.

Today, gold is mining by biggest companies by simply taking a mountain, chemically treating it and extracting the 0.00001% of gold residue. By lowering the chances, it becomes more viable for automated farming.

Share this post


Link to post
Share on other sites
Diablo had player data stored client side. All my player data, like inventory, is stored on an authorative server, and also all items are generated server side, except next to worthless things like dirt, which players can only fit so much of in their inventory.

Share this post


Link to post
Share on other sites
Hell, I might even provide players with programs that pump ore hit messages myself, just to keep everyone on even ground for the most part.

Actually, instead of a seperate program, I think I'll just build it right in to the game. Like give the player a minion that can mine for them. but they share some sort of linked energy so they can't both mine at the same time... if I let them both mine for double the speed then the cheaters would just make a cheat to send two messages at a time.

Share this post


Link to post
Share on other sites
[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][size=4][left] I can easily validate that along with how long it takes to perform the action. [/left][/size][/font][/color]


But how can you tell if I spin up 200 (virtual/fake) servers, each of which runs the script for 500 different characters?

If you charge people money to run servers (or scripts that look like servers) then you can limit the drop rate per server. Then you've created something "of value" to gatekeep.

Share this post


Link to post
Share on other sites
Well, I plan on selling the game/accounts and only allowing each account to run one server. I don't want to charge players to actually run their own server, although a guess I could since it will also take up resources on the central server. Like maybe subscribed accounts can run their own server, but free accounts can only play on other players servers. I'd like to prevent every player that buys the game from running their own server since the central server will only have so much power for every player server.

Not sure exactly how I'm gonna do it yet, maybe I'll charge per day or something for a player ran server.

How much do you think I should charge for it?

Share this post


Link to post
Share on other sites
You said the player data is stored on a central master server. How would it be to make a report-system like tickets in wow for hackers etc. and then check those people, if it´s possible to have this amount of money/equip etc in this time. Its not the best approach but if you want to allow private servers you cannot control everything.

Share this post


Link to post
Share on other sites
If you charge for accounts, and one account can run only one server, and players have to go through your central server to find other servers, then that's sufficient. No need to charge for running a server specifically.

Share this post


Link to post
Share on other sites
I thought of a new way to mine valuable materials today... instead of generating them randomly per ore hit, I would instead generate gold spawn chunks randomly for a player ran server, but the locations would only be kept on the central server. So if a player was mining at the same location as one of these gold spheres, then they'd get some gold, until there was no more in the spawn.

Since the locations are kept on the central server, and neither the client or the player server knows anything about them, players can't use any sort of cheat to track them either.

Share this post


Link to post
Share on other sites
[quote name='hplus0603' timestamp='1330394253' post='4917257']
Sounds like a good way of enforcing rules on the server!
[/quote]

YES! I'm doing something right!

Thanks :P

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this