Gigs Taggart
The Invisible Hand
Join date: 12 Feb 2006
Posts: 406
|
04-03-2006 23:35
llPushObject is a function that is fraught with problems. Everyone is familiar with the griefing problems it can cause.
It also causes me big headaches as a game designer, it's almost impossible to prevent cheating in a game that uses any physical objects at all.
People that want to see llPushObject stay point to the legitimate uses of moving an avatar around, trampolines, elevators, skydiving.
I think I have a solution that would help reduce the problem caused by llPushObject without breaking most legitimate uses.
Simply limit the range of llPushObject to 0.05 meters, or possibly even less. If you are standing on a trampoline, elevator, or skydiving launcher, everything works the same as it did before.
Bullets may still push you, but most of them are not going to be able to detect the collision in time to push before they are further than 0.05 meters (or less) away.
Please post feedback here about whether you think this is a worthy proposal or not.
An alternative that would completely solve my problems is a new prim property for "PUSHABLE", but this other solution might solve bigger problems at the same time.
|
Nargus Asturias
Registered User
Join date: 16 Sep 2005
Posts: 499
|
04-04-2006 09:41
Hm...i don't think that's really a solution to the griefing problem. Beside, push is needed for many more things, as well as real combat sim...
_____________________
Nargus Asturias, aka, StreamWarrior Blue Eastern Water Dragon Brown-skinned Utahraptor from an Old Time
|
Ordinal Malaprop
really very ordinary
Join date: 9 Sep 2005
Posts: 4,607
|
04-04-2006 09:48
At the moment the "distance" is based on distance between object centres, which could be a very long way if you're standing on a large object, and at the least is going to be half your height.
If distance is somehow redefined, which would be tricky, that would just mean that bullets will also be able to push you as their distance becomes zero as well when they hit you.
|
Argent Stonecutter
Emergency Mustelid
Join date: 20 Sep 2005
Posts: 20,263
|
04-04-2006 09:50
From: Gigs Taggart llPushObject is a function that is fraught with problems. Everyone is familiar with the griefing problems it can cause. Any kinetic, rendering, user-interface, or inventory function is fraught with problems and full of griefing potential. From: someone It also causes me big headaches as a game designer, it's almost impossible to prevent cheating in a game that uses any physical objects at all. Run your game on no-script land, or on no-push (see below) land. Quit trying to nerf one function that's not even the top griefing tool any more, especially when that won't fix your problem (the cheats will just cage your physical prims and use llApplyImpulse() instead). From: someone People that want to see llPushObject stay point to the legitimate uses of moving an avatar around, trampolines, elevators, skydiving. Yep. From: someone Simply limit the range of llPushObject to 0.05 meters, or possibly even less. If you are standing on a trampoline, elevator, or skydiving launcher, everything works the same as it did before. Nope. Moving people or objects any significant distance accurately requires continual feedback through the course of the operation. Trying to do it in one push would be like trying to land a spaceship on Mars without any course corrections after it left Earth. From: someone Bullets may still push you, but most of them are not going to be able to detect the collision in time to push before they are further than 0.05 meters (or less) away. They just need to drop a pusher prim that does non-physical moves to the target before pushing. From: someone Please post feedback here about whether you think this is a worthy proposal or not. Not. From: someone An alternative that would completely solve my problems is a new prim property for "PUSHABLE", but this other solution might solve bigger problems at the same time. You'd be better off with a "no outside push" option for your land.
|
Gigs Taggart
The Invisible Hand
Join date: 12 Feb 2006
Posts: 406
|
Thanks
04-04-2006 12:01
Thanks for the valuable feedback. It does seem that the distance limit suggestion is a bad one, consider it scrapped.
As for no-script land: My testing shows that people can wear attachments into no-script land that continue to run, if and only if the script has permission to take controls from the avatar.
Thus no-script flag is useless, since if I want to run a script in a no-script land, I just make it request controls permission and attach it.
Is this a bug? It seemed like one to me so I reported it.
I do like the idea of no-push on a parcel flag. Is there a proposal in the voting system for this already?
Any feedback on the prim property "PUSHABLE" flag?
|
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
|
04-04-2006 15:38
What is llPushObject() simply needed permission in order to push you, and can 'inherit' push permission from other objects? Basically what this means is that if you own an object in the same sim that received permission, then all other items in that sim that you/your group own, as well as the creator of the item will have permission to use push on the avatar for a period of time. e.g - if an avatar has left the sim then permission is no longer required to be noted so it expires.
So, when you jump on a trampoline/sky-diving launcher, etc. etc., you are asked for permission, permission is automatically given to items that you sit on (allowing for llUnsit() + llPushObject()).
In this way, if you someone wants to shoot you, then they must first have permission. If you own land, you have permission to shoot people ON that land (but not on neighbouring land).
In order to faciliate games, you would have to give combatants guns that are all owned/made by you, when they give it permission to push them (which they must do in order for it to work) then this gives permission for other combatants with those same guns to shoot them.
Sure, it's more complex than the current system, but it should hopefully allow for all legitimate uses of the function, while making it VERY hard to grief with it (if at all).
Not 100% sure on how it'd treat pushing of objects, I suppose these may always be allowed if both the pushing object and the object you wish to push are on your land, or are by the same creator/owner or something.
To add this though would require phased development as it would break a lot of things. ie - you first add in all the functions and have them perform 'stub' methods, so llGetPermission(id, PERMISSION_PUSH); will always succeed. An IM or something is given out to the owners of all scripts utilising llPushObject() (if possible, if not then just everyone) telling them of the change and what to do to update. Then later on you make the functions work correctly, this way active scripters will update their things seamlessly. It's a kick to old scripters, but leaving old scripts in a working state (ie only having the change affect new scripts) will only continue to cause problems as griefers keep copies of existing weapons.
The secondary problem then is that if you have an object using llPushObject(), then it may become useless. Only thoughts on this are that there could maybe be a feature whereby scripts that use llPushObject() automatically request permission if they don't have it, so you can still use the weapon, but you'd have to fire it once to get permission first.
|
Gigs Taggart
The Invisible Hand
Join date: 12 Feb 2006
Posts: 406
|
04-04-2006 16:15
Haravikk:
The avatar permission to be able to be pushed has been beaten to death in other threads. It has some serious flaws, not the least of which is the complexity for both LL and for the end users.
I'm leaning more and more toward Argent's no-push parcel flag idea. It's simple and it doesn't impose any extra burdon.
|
Argent Stonecutter
Emergency Mustelid
Join date: 20 Sep 2005
Posts: 20,263
|
04-04-2006 17:13
From: Haravikk Mistral So, when you jump on a trampoline/sky-diving launcher, etc. etc., you are asked for permission, permission is automatically given to items that you sit on (allowing for llUnsit() + llPushObject()). No, no, please, no more dialogs. They're bad enough already. Allow a landowner to block third party push on their land, so you can have a "safe zone", but don't break working code or present people with more dialogs.
|