Quasi MMO and cheating

Started by
14 comments, last by Butabee 12 years, 1 month ago
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.
Advertisement
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.
enum Bool { True, False, FileNotFound };
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

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.


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.
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.
enum Bool { True, False, FileNotFound };
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.


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.


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.

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.
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.
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.
[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

I can easily validate that along with how long it takes to perform the action.

[/font]


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.

enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement