Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Prevention against cheating on physics based games

Yiffy Squeegee
^vV^Squeeeeeee^Vv^
Join date: 28 Dec 2005
Posts: 34
04-30-2006 00:05
With games like billiards, pool, bowling, pinball, etc. I'm trying to figure out the best method to prevent a player from manipulating the game play.

Best I can think of is to use short-range sensors checking for foreign objects (ones not owned by the game's owner) while game is in use. If foreign objects are detected the game automatically ends and refunds.

Is this a good way to handle such a check for / stopping people from futzing with physics required games? Your alternative methods, comments and ideas are appreciated. :)
Seifert Surface
Mathematician
Join date: 14 Jun 2005
Posts: 912
04-30-2006 00:20
Worse, anyone can "edit" a physics object, stopping it dead in its tracks.
_____________________
-Seifert Surface
2G!tGLf 2nLt9cG
Yiffy Squeegee
^vV^Squeeeeeee^Vv^
Join date: 28 Dec 2005
Posts: 34
04-30-2006 01:05
From: Seifert Surface
Worse, anyone can "edit" a physics object, stopping it dead in its tracks.
Heh, yeah that's another fun issue. :) Though for what I'm working on I have that covered as the physical objects are always in motion. If the last checked position is the exact same as the current position someone's cheating.
Introvert Petunia
over 2 billion posts
Join date: 11 Sep 2004
Posts: 2,065
04-30-2006 02:05
From: someone
Heh, yeah that's another fun issue. :) Though for what I'm working on I have that covered as the physical objects are always in motion. If the last checked position is the exact same as the current position someone's cheating.
Or it could also be that the physics engine just randomly decided that a thingee suddenly has zero energy which it has an annoying tendency to do...
Yiffy Squeegee
^vV^Squeeeeeee^Vv^
Join date: 28 Dec 2005
Posts: 34
04-30-2006 08:49
From: Introvert Petunia
Or it could also be that the physics engine just randomly decided that a thingee suddenly has zero energy which it has an annoying tendency to do...
Luckily I don't have that lack of dependability to deal as I'm just counting on gravity to do its thing with keeping up the motion, which it seems to do, least didn't fail once after a few thousand tests.

So beyond the joys of someone edit stopping a physical object. For handling the issue of an (ab)user rezzing some prims to block off areas of a game board, is using a very short distance sensor scan for foreign objects my best bet to protecting against such a hack?
Logan Bauer
Inept Adept
Join date: 13 Jun 2004
Posts: 2,237
04-30-2006 09:47
From: Yiffy Squeegee
Luckily I don't have that lack of dependability to deal as I'm just counting on gravity to do its thing with keeping up the motion, which it seems to do, least didn't fail once after a few thousand tests.

So beyond the joys of someone edit stopping a physical object. For handling the issue of an (ab)user rezzing some prims to block off areas of a game board, is using a very short distance sensor scan for foreign objects my best bet to protecting against such a hack?



Regarding foreign objects in the playing field, couldn't you use the collision event (check to be sure we're colliding with our target or anything else that is supposed to be part of the game)?

But then, say someone uses llVolumedetect and llPushObject, or a sensor and llPushObject... llPushObject looks like it has a falloff instead of a range limit, in other words you'll want to scan more than a short distance unfortunately, I think...
Candide LeMay
Registered User
Join date: 30 Dec 2004
Posts: 538
04-30-2006 12:06
From: Yiffy Squeegee
So beyond the joys of someone edit stopping a physical object. For handling the issue of an (ab)user rezzing some prims to block off areas of a game board, is using a very short distance sensor scan for foreign objects my best bet to protecting against such a hack?
How about making the land no-build + very short autoreturn (if people decide to drop attachments etc)?

As for edit stopping a physical object, we had to deal with that for Castle Wars (go and play it in Arcadia 2 now) - which is a catapult game. The solution was for the catapult projectile to rez a copy of itself when it detects someone stopped it and continue the on the original trajectory - works reasonably well.
_____________________
"If Mel Gibson and other cyberspace writers are right, one day the entire internet will be like Second Life." -- geldonyetich
Fojar Chaika
The Monkey in the Moon
Join date: 25 Mar 2006
Posts: 2
transparent cover?
04-30-2006 20:17
You could try placing a phantom, transparent prim over top of the board. That way, if they tried to right-click, it would force them to select it instead. The only way around it I see is if they started a drag box with an edit window already open. Also, if they tried to rez/create an object, it would get placed on the box (I think). Physical objects would fall through, though.
_____________________
grumble Loudon
A Little bit a lion
Join date: 30 Nov 2005
Posts: 612
05-01-2006 22:40
They could still mouse look and use touch drag.

See wiki in "Block touch somthing....

The only way to truly prevent cheeting is to use LSL to do the math and have the objects just move based on a chat channel command.

A pool cue would have to be a scripted camera, that then says it's position and angle and then some user said force number.

Reminds me of an old video game where you entered angle and pounds to shoot. Oh wait we have that too. "Tinas tiny cannon" now I'll have to get one. ;)
Yiffy Squeegee
^vV^Squeeeeeee^Vv^
Join date: 28 Dec 2005
Posts: 34
05-03-2006 09:17
From: grumble Loudon
They could still mouse look and use touch drag.
llSetStatus(STATUS_BLOCK_GRAB, TRUE) would stop that from being possible at least.

From: grumble Loudon
Reminds me of an old video game where you entered angle and pounds to shoot.
Scorched Earth or clone of that type? Can even play it multiplayer online.
Xixao Dannunzio
Owner, X3D Enterprises
Join date: 20 Mar 2006
Posts: 114
07-12-2006 16:06
From: Yiffy Squeegee
llSetStatus(STATUS_BLOCK_GRAB, TRUE) would stop that from being possible at least.


I think you meant to say llSetStatus(STATUS_BLOCK_GRAB, FALSE)

;)
Jesse Malthus
OMG HAX!
Join date: 21 Apr 2006
Posts: 649
07-12-2006 21:36
From: Fojar Chaika
You could try placing a phantom, transparent prim over top of the board. That way, if they tried to right-click, it would force them to select it instead. The only way around it I see is if they started a drag box with an edit window already open. Also, if they tried to rez/create an object, it would get placed on the box (I think). Physical objects would fall through, though.

For bowling atleast you could expand on this and put a phantom, transparent prim over the pins and enable volume detection. By using a random number generator on rez (have it change the description and say the number), the box can detect if said ball is legit.
Wainwright Loudon
Registered User
Join date: 13 Dec 2005
Posts: 27
04-15-2007 15:01
Try follow prims, and allow for re-rez. Seen that work well.
Stavros Augustus
Registered User
Join date: 14 Nov 2005
Posts: 38
04-15-2007 17:52
Maybe do a check so that the velocity vector doesn't change too suddenly (for the "edit" trick), and a collision check to ensure that the only objects hitting it are yours.
Fenrir Reitveld
Crazy? Don't mind if I do
Join date: 20 Apr 2005
Posts: 459
04-16-2007 15:08
Some thoughts (by no means foolproof):

1) Random object name upon spawn, so people can't key sensors to attack a particular object name.
2) Set up very strict out-of-bounds checks -- if the ball goes out of the ring or table, delete it instantly and stop the game
3) Try to constrain the physics as much as possible, by placing game entirely inside another object
4) Skip physics and do the math yourself (very unlikely for some things) ie: Calculate where the ball will end up, use physics to "help it along" and then snap it to that final, pre-calculated position
5) Check for continous movement. If someone is using edit to stop an object, you'll know because it'll have the same exact position over the same two frames. (As long as a prim has enough velocity, it's position will twitter enough that it should be detectable.)
_____________________
----
----
----