Ignore = inaudible ... and invisible?

Announcements and discussion regarding any projects related to Cyan Worlds' Plasma Engine including (but not limited to) CyanWorlds.com Engine, Drizzle, OfflineKI, PyPRP, and libHSPlasma.

Re: Ignore = inaudible ... and invisible?

Postby Tsar Hoikas » Sun Nov 20, 2011 1:16 pm

Gahlen wrote:
Tsar Hoikas wrote:You're doing a pretty good job of managing the masses over at MOUL btw 8-)

Thanks! :P

I promised myself I wasn't going to look in on the thread today, but of course I did. Nalates has raised some technical issues: do we have any idea of how implementing either of these changes might affect game performance? I'm guessing not a lot, but it would be better if either someone who knew things about this replied to her, or I could cite some hard facts/numbers in my reply on Monday.


The performance hit will be negligible. In the future, you might try to not respond directly to Nalates... She's our very own glorified troll who manufactures her own facts and uses the majority of her posts as vehicles for ad hominem. She has a very limited technical understanding, which she uses as a base for her own personal universe where only she is correct and no one else matters. That's just a heads up in case you've never found yourself on the wrong end of her spectrum.
Image
Tsar Hoikas
Councilor of Technical Direction
 
Posts: 2180
Joined: Fri Nov 16, 2007 9:45 pm
Location: South Georgia

Re: Ignore = inaudible ... and invisible?

Postby Paradox » Sun Nov 20, 2011 1:37 pm

Tsar Hoikas wrote:
Gahlen wrote:
Tsar Hoikas wrote:You're doing a pretty good job of managing the masses over at MOUL btw 8-)

Thanks! :P

I promised myself I wasn't going to look in on the thread today, but of course I did. Nalates has raised some technical issues: do we have any idea of how implementing either of these changes might affect game performance? I'm guessing not a lot, but it would be better if either someone who knew things about this replied to her, or I could cite some hard facts/numbers in my reply on Monday.


The performance hit will be negligible. [...]

Performance hit?

There would be a little bit more processing in the KI Python code to initially hide/show avatars (assuming that this would only run on /ignore, /unignore, local link-ins, and remote link-ins), but ignored avatars wouldn't be rendered which might be a performance boost on some computers that suffer from extreme lag.
Paradox
 
Posts: 1290
Joined: Fri Sep 28, 2007 6:48 pm
Location: Canada

Re: Ignore = inaudible ... and invisible?

Postby Tsar Hoikas » Sun Nov 20, 2011 1:53 pm

that's the longer but more correct version :) -- the processing overhead is extremely trivial and can be ignored, and (in most cases) the performance boost can also be ignored (it's just a few avatars).
Image
Tsar Hoikas
Councilor of Technical Direction
 
Posts: 2180
Joined: Fri Nov 16, 2007 9:45 pm
Location: South Georgia

Re: Ignore = inaudible ... and invisible?

Postby Gahlen » Mon Nov 21, 2011 10:07 pm

Thanks, guys. I shall communicate this over there in a nice, non-confrontative way. Nalates is a phenomenon you quite often see in politics: people who you know have an agenda, but at the same time couch it in language which a superficial reader will take to be entirely unbiased and rational, and in addition to all that, ask questions in the midst of it all that you can't ignore because you know that other people reading her stuff will be thinking, yeah, that's a reasonable question, why doesn't he answer that, what is he hiding? I'm aware of her ongoing crusade against "certain people" at the GoW. What she might just be starting to suspect, however, is that I might have an agenda too. ;)

Trek: thanks for getting the Wiki up. :)

Adam: You'll have noticed that I have some concern that bunlding revoking Age invitations with one-way invisibility might make the command really inconvenient for those people who like to use it to silence over-talkative buddies (such as our friend Marten). What do you think? Perhaps do without it for the moment?
User avatar
Gahlen
 
Posts: 41
Joined: Sun Nov 13, 2011 4:00 pm
Location: Germany

Re: Ignore = inaudible ... and invisible?

Postby Trekluver » Tue Nov 22, 2011 10:22 am

No problem. If someone with an OpenUru account can keep a copy up to date there that would be great.

On Nalates, she's not unintelligent; the problem is if you're not careful you'll find yourself believing everything she says. Believing everything someone says is dangerous. I read what she has to say and if I need to reply I do so after much consideration, because I know she has an agenda. I won't talk about her here much though, I'm just stating my basic observations. Like the old saying goes, if you wouldn't say it to their face it's best not to say it about them at all.
Image
TOC#60089 DI#132103 MOULa is Image
Trekluver
 
Posts: 17
Joined: Fri Nov 11, 2011 4:41 pm
Location: US

Re: Ignore = inaudible ... and invisible?

Postby Tsar Hoikas » Tue Nov 22, 2011 7:21 pm

I'm thinking that's a nice way to describe Nalates ;). Pretty much everyone has their own agenda, which is really and truly no biggie (as far as I'm concerned), unless said agenda is of malicious (intentional or not). On other subjects, I can skip adding the age invite revocation feature--leaving it out is certainly less code to write. As I mentioned before, this feature would work unreliably anyway, so leaving it out will likely be for the best. We will probably want to revisit this feature when the network protocol gets an overhaul, the KI gets a proper MMO interface, and party/team management appears. All of those things are long term projects, obviously.

I will do a little bit of coding tonight while I sit in bed with my laptop. I know if I don't get this done soon, then you'll have to wait until after my finals.

@Trekluver:

It would be helpful if you could perhaps transform that wiki page into a nice listing of all feature requests and common annoyances, including specifics requested in forum postings. While I would generally prefer to use github issues for these things, I know that *most* of the community will do no such thing. If one of us (the developers) determines something posted on the wiki is a bug, then we can always file a github issue ourselves and post a link.
Image
Tsar Hoikas
Councilor of Technical Direction
 
Posts: 2180
Joined: Fri Nov 16, 2007 9:45 pm
Location: South Georgia

Re: Ignore = inaudible ... and invisible?

Postby Tsar Hoikas » Sat Nov 26, 2011 4:10 pm

Done!

Old /ignore Command:
Avatars you ignored would be visible but not be clickable, nor would their names appear when you hover over them. They would also not appear in the Age Players list. Your avatar was visible to ignored players. They would be unable to see your text chat (unless you were /shouting or had /autoshout enabled). They could hear your voice chat if they were in range. You could not see text chat from an ignored player nor could you hear their voice chat.

New /ignore Command:
Avatars you ignore are not visible, but they do appear in the Age Players list*. You can recognize that they are ignored because they are never marked as being nearby (ie >Adam<). Since they are invisible, you cannot click on them or see their names on cursor hover. Your avatar is by default invisible to ignored players. You can toggle mutual invisibility by using the /shun command (it works just like /autoshout). Players that you have ignored will be able to see your text chat (regardless of whether or not you are shouting) and hear your voice chat if they are in range. You cannot see text chat from a player you have ignored nor can you hear their voice chat.

So what does this add?
You have the option of hiding your location in the age from players you have ignored. They will still know that you are somewhere in the age*, but will be unable to find your exact location. You are now also able to know if ignored players are in the age with you.

* --> If it is so desired, I can make ignored players not appear in your age players list and/or remove your name from the ignored player's age players list (if /shun is enabled, of course). I decided to wait and see on that change though.
Image
Tsar Hoikas
Councilor of Technical Direction
 
Posts: 2180
Joined: Fri Nov 16, 2007 9:45 pm
Location: South Georgia

Re: Ignore = inaudible ... and invisible?

Postby Trekluver » Sun Nov 27, 2011 11:15 am

Awesome job Adam. I fixed up the page (added a common annoyance section) like you asked, added a "Complete; Waiting for Testing" status to /ignore + /shun (The new name for it on the wiki page), and Mac_Fife make a copy to the OpenUru wiki. I also added a link at the bottom of the wiki home page for developers to see.
Image
TOC#60089 DI#132103 MOULa is Image
Trekluver
 
Posts: 17
Joined: Fri Nov 11, 2011 4:41 pm
Location: US

Re: Ignore = inaudible ... and invisible?

Postby Christian Walther » Tue Nov 29, 2011 12:26 pm

I’ve been trying out the ignore-plus code and it works quite well. I did find some bugs, though. (Limitations: this was on a MOSS server, not on MOULa, and only with two avatars (ignorer and ignoree) – proper testing should include at least three (ignorer, ignoree, uninvolved).)

  • After the first login after having once toggled /shun, you are unable to use your KI, with the following message in Python.0.log: ValueError: invalid literal for int() with base 10: 'True'. This is easy to fix:
    Code: Select all
    diff --git a/Python/xKI.py b/Python/xKI.py
    index 6e9448a..8b893a7 100644
    --- a/Python/xKI.py
    +++ b/Python/xKI.py
    @@ -6909,7 +6909,7 @@ class xKI(ptModifier):
                     return None
                 
                 # Proc the changes
    -            MutualIgnore = not MutualIgnore # You're an oxymoron.
    +            MutualIgnore = int(not MutualIgnore) # You're an oxymoron.
                 for player in PtGetPlayerList():
                     kiNum = player.getPlayerID()
                     if ignores.playerlistHasPlayer(kiNum):

  • With mutual invisibility, the ignorer remains clickable to the ignoree, even though invisible. Disabling drawing does not disable clickability – this only works the other way around (ignoree is unclickable to ignorer) because that case is explicitly handled in plSceneInputInterface::MsgReceive(). That implementation is not perfect however because it weeds out ignored avatars after the LOS test, which means that the ignored avatar, even though not clickable itself, can still obstruct other clickable objects by standing in front of them. Better would be a solution where the avatar could be declared invisible to the LOS test in the first place. On a hunch, I tried disabling physics, but that didn’t do it.
  • When I ignore a player, have mutual invisibility on, am in 3rd person view, and that player links into the age where I am, my avatar disappears to me (until I re-enter 3rd person view). I don’t quite understand why. I can fix it as follows, but I suspect I’m fighting symptoms here and the proper fix is somewhere else.
    Code: Select all
    diff --git a/Python/xKI.py b/Python/xKI.py
    index 6e9448a..7f89fa3 100644
    --- a/Python/xKI.py
    +++ b/Python/xKI.py
    @@ -1347,6 +1347,10 @@ class xKI(ptModifier):
                     action = data[0]
                     kiNum = int(data[1])
                     
    +                if kiNum == PtGetLocalClientID():
    +                    # don't hide ourselves from ourselves when an ignored avatar links in
    +                    return
    +               
                     # Acceptable actions: [show, hide]
                     sender = PtGetAvatarKeyFromClientID(kiNum)
                     if sender:

    Somehow I’m receiving my own notification, even though I assume if not PtWasLocallyNotified(self.key) is supposed to prevent that.
  • Minor thing and probably not caused by the new code: When I ignore or unignore a neighbor who is online but not in the age with me, they don’t immediately disappear from or appear on the neighbor list, but only after e.g. opening the KI, opening the Relto book, or they link in.

A note that may or may not be relevant: Is this new ignore function the only use of disabling drawing of an avatar? If not, and there is another feature that disables drawing of an avatar, I could now subvert that by ignoring and unignoring the player. What about CCR invisibility, does that work differently?

Fun fact: Did you know that there is an “ignore avatars” key? While pressing the Delete key, all avatars become unclickable and you can click on clickable objects behind them.
Christian Walther
 
Posts: 443
Joined: Sun Jun 08, 2008 3:10 am
Location: Switzerland

Re: Ignore = inaudible ... and invisible?

Postby Tsar Hoikas » Tue Nov 29, 2011 8:26 pm

Thanks for the testing. I only tested on MOULa, so MOSS testing is definitely useful.

  • Bah. I thought I fixed all of those. I guess not. thanks!
  • I can't believe I didn't catch that... I had to fiddle with the SceneInputInterface a little bit anyway. I suppose we should take a look into how to override the LOS detection. I would expect that supressing (ptPhysics.supress) is what we want to go with rather than disabling them. Of course, it's been awhile since I've looked at the physical controller code, so I might be wrong. If neither of those works, then I'm sure we can patch it.
  • I had instances of this happening to me on MOULa, which I managed to fix with the PtWasLocallyNotified call and another check, similar to the one you added. I think that what is *probably* happening in this case is that MOSS is sending the directed game message *back* to the sender. In that case, the PtWasLocallyNotified check would fail because only messages that *don't* come through the net client manager will pass that check. There's a flag in the message that gets set and unset. I am unsure if this happens on MOULa or not. Some more testing and code snooping will be required.
  • Those are instances when those portions of the KI update. This could be fixed by adding the appropriate Update calls to the low-level vault notify callback that now handles the ignore list.

The ignore function is the only way that I know of to disable the drawing of an avatar, unless you expose the python API through the console or run some custom code. The CCR invisibility uses a custom plMessage, and I'm not even sure if it will make the player invisible anymore. There are some claims that Cyan broke it after the "NotABeast" incident. I opted to not add another creatable as I felt this would decrease the chances of the changes getting merged back to Cyan.

Re fun fact: Amazingly, I did! Back when I was doing some input work, I managed to create a crash that would happen when the input core would attempt to process that key binding. I don't remember how I did it or what the fix was though :oops:
Image
Tsar Hoikas
Councilor of Technical Direction
 
Posts: 2180
Joined: Fri Nov 16, 2007 9:45 pm
Location: South Georgia

PreviousNext

Return to Plasma Development

Who is online

Users browsing this forum: No registered users and 0 guests

cron