[Opensim-dev] llDetectedType and NPC's
R.Gunther
rigun at rigutech.nl
Tue Jul 10 00:51:32 UTC 2012
Just a short question. why did we not named the NPC's OSNPC ? then i
think you dont get quick problems with sl.
On 2012-07-10 02:30, Justin Clark-Casey wrote:
> Argus, I'm a little confused. Some of what you say seems to concern
> NPCs going to other regions via Hypergrid. But OS NPCs are bound to
> the region they are instantiated in. Possibly they may be able to
> cross to regions in the same simulator in the future, but they will
> never be able to go to other simulators, let alone Hypergrid.
>
> So I'm assuming you're talking about reliable NPC detection in a
> Hypergrid situation. Ultimately, this is impossible because the
> OpenSimulator operator can always change the code to return what they
> like. So it doesn't matter what function the script uses - it can
> always be fooled.
>
> I don't personally object to extending llDetectedType() to return NPC,
> though NPC was a poor choice of constant name imo since it could clash
> with Linden developments in the future. I also don't object to some
> config value to stop the use of OS_NPC_SENSE_AS_AGENT on a particular
> simulator. But being able to use NPCs with existing scripts is very
> useful in some contexts so if llDetectedType() is to be extended it
> must accomodate that option for consistency with everything else.
>
> Perhaps you could provide a concrete example. Not a whole script but
> described functionality for some real in-world tool.
>
> On 08/07/12 20:22, Argus wrote:
>> Quote: "If your solution is dependent on deviating from the SL
>> definition for any "ll" API call, it may be easier for
>> all involved in the future if you can redesign it such as to avoid
>> future incompatibilities."
>>
>> The implementation of NPCs are causing the deviations from SL while
>> all my scripts are based on the SL definitions and
>> also run 1:1 in SL. If there would be a possebility to solve this
>> issue, I also would redesign my application, but sofar
>> I havnt found any relyable method for NPC detection other than
>> llDetectedType returning NPC even when using
>> OS_NPC_SENCE_AS_AGENT. Even in our Opensim code we find the name
>> changes for hg visitors implemented as detection with
>> the deffrence that NPC are excluded via the opensim code.
>>
>> This is also a problem for others, it not only me who is having
>> issues with NPC detection.
>>
>>
>> Am 08.07.2012 20:26, schrieb Dahlia Trimble:
>>> In general it's not a good idea to extend any "ll" function beyond
>>> the equivalent SL definition as there is no
>>> guarantee that LL may add any new functionality that may conflict in
>>> the future. If this were to happen it would be
>>> difficult to resolve the conflicts as there would be scripts in use
>>> that depend on the conflicting definitions. Also
>>> some scripters don't always use symbolic constants (a terrible
>>> practice but it does happen) so it's not just a matter
>>> of changing a conflicting value for a constant and recompiling. If
>>> your solution is dependent on deviating from the
>>> SL definition for any "ll" API call, it may be easier for all
>>> involved in the future if you can redesign it such as to
>>> avoid future incompatibilities.
>>>
>>> On Sun, Jul 8, 2012 at 3:14 AM, Argus <argus at archimuh.de
>>> <mailto:argus at archimuh.de>> wrote:
>>>
>>> Hi.
>>>
>>> I have a problem with the way that NPCs might be implemented in
>>> llDetectedType. A patch can be found in Mantis 6066.
>>>
>>> In the events touch, collision and sensor one can use the
>>> function llDetectedType which return some basic infos
>>> on what type of object/agent... has been detected by the event.
>>> To complete this function, we still need to add
>>> NPCs as type. Sofar, so good...
>>>
>>> NPC do however also have the possebility to be created using
>>> OS_NPC_SENCE_AS_AGENT. This was implemented sothat
>>> NPCs would work with sensor events ( without changing the lsl
>>> script). At that time NPCs were not implemented to
>>> llDetectedType which one could have easely used to change the
>>> lsl script to work with NPCs and/OR agents instead
>>> of implementing OS_NPC_SENCE_AS_AGENT. The result is, that using
>>> OS_NPC_SENCE_AS_AGENT would return an agent when
>>> using llDetected AND that there is NO way to know if the event
>>> was triggered by an agent or NPC without forcing
>>> the users to enable osIsNPC for everybody, and I do realy mean
>>> everybody. For me and some other projects I know
>>> of, this will have fatal sideeffects.
>>>
>>>
>>>
>>> Let look at our 3 avatar type, normal agent, liblibomv bot and
>>> NPC's and how these can be used for identification.
>>>
>>> Situation 1) A closed grid with hypergrid disabled.
>>>
>>> - Normal agent = registered at grid, unique uuid + name within
>>> grid, controled by human
>>> - Bots = basicaly same as agent, registered at grid, with
>>> unique uuid + name within grid, but remotly controled
>>> by software
>>> - NPC = NOT registered, unique uuid within grid, ANY fictional
>>> OR existing name possible and like bots remotly
>>> controled.
>>>
>>> If llDetectedType return agent for NPCs using OS_NPC_SENSE_AGENT
>>> we only could detect the NPC using
>>> llRequestAgentData to see if we get a posetive respone via
>>> DATA_NAME (unless the region itself detects the online
>>> NPC as agent and returns the NPC data, havnt tested that yet.)
>>> In any case, the uuid remains unique and can always
>>> be used to identify a single agent/npc/bot
>>>
>>> Situation 2) Multigrid system with hypergrid enabled.
>>>
>>> - Normal agent = registered at grid, unique uuid + name within
>>> grid, controled by human, surname changes with
>>> hypergrid, name supplies griddata on hypergrid travels
>>> - Bots = basicaly same as agent, registered at grid, with
>>> unique uuid + name within grid, but remotly controled
>>> by software, surname changes with hypergrid, name supplies
>>> griddata on hypergrid travels
>>> - NPC = NOT registered, unique uuid within grid, ANY fictional
>>> OR existing name possible and like bots remotly
>>> controled.
>>>
>>> The uuid - name relation is still unique WITHIN a grid, but the
>>> same uuid-name relationship can be used in
>>> multiple grids by DIFFRENT users. However when hypergrid
>>> traveling the name changes and one can extract the agents
>>> origin grid sothat one recieves a unique uuid+name+grid
>>> relationship. In a multigrid system were llDetectedType
>>> return agent for NPCs using OS_NPC_SENSE_AGENT there is NO
>>> method using plain lsl to get the unique uuid+name+grid
>>> relationship, llRequestAgentData is not available in all grids
>>> from the hypergrid visitor. The names of NPCs are
>>> NOT unique within a grid AND the uuid could already exist in
>>> another grid for an agent. The uuid alone CAN'T be
>>> used to identify a single agent/bot/npc in a multi grid system
>>> which is hypergrid enabled.
>>>
>>> Short summary: In a mutligrid system with hypergrid each
>>> agent/bot has a unique uuid - name - grid relationship
>>> were 2 elements are needed for identification, in a single grid
>>> without hypergrid the uuid is enough to identify
>>> each agent/bot/npc. In a multigrid system NPC have to be
>>> identified as NPC sothat one can identify the NPC using
>>> uuid + grid.
>>>
>>>
>>>
>>> As mentioned there is no plain lsl method for identification in
>>> a multiple grid system with hypergrid if
>>> llDetectedType returns an Agent for NPCs using
>>> OS_NPC_SENSE_AGENT. In Opensim we do have OSSL function which could
>>> be used to help to distinguish between a registered agent and a
>>> NPC, eg. osIsNPC. The problem is however, that a
>>> multigrid system would have to have multiple scripts available
>>> for all sorts of ossl combinations.
>>>
>>> a) No NPCs allowed for anyone - script does not need any NPCs
>>> and all event can only be triggered by agents.
>>> b) NPCs allowed for 1 or more users, osIsNPC not enabled - Our
>>> script CAN'T recognize an NPC, so the service has
>>> to be excluded and may not be used on that region
>>> c) NPC allowed for 1 or more users, osIsNPC enabled for those
>>> users - Our script CAN'T recognize an NPC if the
>>> script is owned by someone not enabled to use osIsNPC, so the
>>> service has to be excluded and may not be used on
>>> that region.
>>> d) NPC allowed for 1 or more users, osIsNPC enabled for everyone
>>> - Our script can now use osIsNPC nowmatter who
>>> the owner is, only now we can recognize NPCs
>>>
>>> So if your offering a multigrid service, were we need 2 elements
>>> for identification, it is required to have
>>> atleast 2 script. 1 script for regions were noone can use NPCs
>>> and another were osIsNPC is enabled for everyone.
>>> This means that atleast 2 scripts need to be maintained by the
>>> scriptor and a huge support team which has to
>>> personaly speak to each customer to explain what script to use
>>> etc etc. Latest after 1 year the customer has
>>> forgotten everything and changes the NPC settings, which messes
>>> up the agent identification or the region owner
>>> changes something without notifying the parcelwoners because he
>>> himself only wants to try something.
>>>
>>> Now if the script is in a hud, then we never know what region
>>> settings are configured on the region we visit. So
>>> as we dont know anything about the settings, our entire
>>> uuid+name+grid relation is useless and we have NO method
>>> atall for identification in a multigrid system with hypergrid
>>> enabled. All ossl that could be used for NPC
>>> detection must be considered not avialble while NPC can be used
>>> by others.
>>>
>>> One could create extra modules to help us, but latest if a
>>> closed grid is involved we are not able to run our
>>> additional module. So thats also not an option.
>>>
>>>
>>> Résumé: The only method that would help in a multigrid system
>>> is, if llDetectedType ALWAYS returns NPC nomatter
>>> what settings is used and AGENT for any agent/bot. Enabling
>>> OS_NPC_SENSE_AGENT to alow llDetectedType to return
>>> agent makes all 3rd party systems in a multigrid hypergrid
>>> enabled enviroment virtualy impossible to handle.
>>>
>>>
>>> It was thus also my intention to get this issue solved prior to
>>> implementation of osNPCTouch, but for that it is
>>> to late now anyway :(.
>>>
>>> Michelle Argus
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Opensim-dev mailing list
>>> Opensim-dev at lists.berlios.de <mailto:Opensim-dev at lists.berlios.de>
>>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Opensim-dev mailing list
>>> Opensim-dev at lists.berlios.de
>>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>
>>
>>
>>
>> _______________________________________________
>> Opensim-dev mailing list
>> Opensim-dev at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>
>
>
More information about the Opensim-dev
mailing list