view
Tweet
hifi: #21492 Add 'Speed Limit' option in server settings

To the domain server settings, add a 'Speed Limit (meters/second)' field that defaults to zero (no speed limit). When not zero, this field should be sent to the avatar mixer, and the avatar mixer should subsquently enforce that in each timestep, the avatar's reported position can not change more than the distance specified by the speed limit.

The avatar mixer should also send the speed limit to the interface client, so that the client is aware and can appropriately restrict the velocity (for example when flying) to be no greater than the speed limit imposed (since otherwise it will look juddery to have the avatar mixer snap you back to a different place than the client wants you to be).

When the speed limit is non-zero, the user experience should be that you basically have to walk/fly to where you are going.

Comments & Activity

  • 2 mnths, 22 days ago

    #21492 created by PhilipRosedale Status set to Bidding.

  • 2 mnths, 8 days ago

    A bid was placed on #21492

  • If the settings is in the right category, the DS will send it to the Avatar Mixer automatically.
    You can read it from here for the Avatar Mixer:
    https://github.com/highfidelity/hifi/blob/959499eab8c8da6c01aa25bbf8d46e15b5b42e24/assignment-client/src/avatars/AvatarMixer.cpp#L908
    The interface should not pull that info from the DS, the Avatar mixer should send it to the connected Interfaces.

    Clément Brisset @Atlante45 11:21
    Looking at the job though, I feel like this should be implemented like the flying restrictions.
    Meaning it would be a zone property that would limit the speed only within that zone.

    See ZoneEntityItem:
    bool getFlyingAllowed() const { return _flyingAllowed; }
    void setFlyingAllowed(bool value) { _flyingAllowed = value; }
    bool getGhostingAllowed() const { return _ghostingAllowed; }
    void setGhostingAllowed(bool value) { _ghostingAllowed = value; }

    Would be interesting to get @PhilipRosedale's opinion on it.
  • Property of a zone would be great, I agree. @Atlante45 does the client know the zone properties?
  • It does, yes.
    As with flying and ghosting, it would only be enforced at the client level, so I could modify my client to ignore it.

    To fix this in the future, I think we should take the same approach as what we want to do for audio zones.
    Have the Avatar mixer pull the zones from the entity server and enforce those settings at the server level as well.
  • 1 mnth, 24 days ago

    A bid was deleted from #21492

  • 1 mnth, 24 days ago

    A bid was deleted from #21492

  • What if the agent is riding on a vehicle/entity?

    Shouldn't the speed limit take this to account, and if so, shouldn't the speed limit limit it self to the relative velocity of the Avatar to what ever its parent is?

    This way, if the avatar is not parented to an entity, its speed limit would be compared to a zero vector, while if it is parented to one, their speed would be limited in relation to the parent?
  • 1 mnth, 15 days ago

    A bid was placed on #21492

  • 1 mnth, 12 days ago

    themelissabrown accepted 1200.00 from Menithal on #21492 Status set to In Progress.

  • 1 mnth, 10 days ago

    #21492 updated by Menithal Changes: Status set to Merged.

  • 1 mnth, 10 days ago

    #21492 updated by Menithal Changes: Status set to In Progress.

  • My bad, thought this was the ticket 21484. This ticket is in progress
  • Regarding the position check on the Avatar mixer. What if the avatar teleports from one location of the domain to another in the same domain?
  • @Menithal you should keep the check in the client for now.
    To properly make the check on the server, we need some infrastructure that's not in place yet.

    Additionally, you have the velocity of the Avatar on the client and that's not affected by teleports, so you can work with that without worrying about the person teleporting.
  • @themelissabrown it is now available on github. Since there was discussion of this on here, and it was quicker than I expected,

    @Atlante45 / @PhilipRosedale
    I have left it open a weekend of further improvements based on feedback, which was also taken to account in the bidding, as it was unclear what exactly you guys needed due to discussions.

    For now, I left it as a Client side limit, that's setup on the domain settings: But I could still implement the Domain Zone based method instead. Next time it would help if the WL would have the updated specs instead of it being in the discussions.
  • Managed to get the domain speed zone as well, so Included that with the PR. Zones now can set the speed limit, but Domain speed limit overrides Zones, if the zone speed limit is higher than the domain. This however does up the Packet Header again.
  • 21 days, 7 hrs ago

    #21492 updated by Menithal Changes: Status set to QA Ready.

  • @Menithal: Thanks for the work on this. Clement and I managed to get this confused. What I wanted here was the actual ability to enforce a speed limit so that a domain owner could make the choice to want to see people move slowly and smoothly at all times. So, for that reason, I wanted it to affect teleporting, and also be enforced at the server. Adding the requirement of zones and deleting the requirement of server-side enforcement wasn't what I wanted. Would you be interested in removing the zone work and putting the restriction on speed into the server as well as client, and making it work on teleports as well? That's what I was actually wanting. Would you like to give me a new/extra bid for that, or alternatively we can just pay you for the work on this and close the PR.
  • @PhilipRosedale I'll check if my prototypes I had done earlier would work in a stable manner and rollback the zone changes and give a new estimate.

    Why not keep the zone stuff as well though?

    While not server enforced I am sure some may find some interesting applications for it.
  • 20 days, 13 hrs ago

    #21492 updated by Menithal Changes: Status set to In Progress.

  • 20 days ago

    Menithal added a fee of $600 to #21492

  • 19 days, 23 hrs ago

    Menithal deleted a fee from Menithal on #21492

  • Been going over the code and retesting their viability, and I cant seem to be able to force avatar position via the Avatar Mixer as-is, would take a lot more time to investigate get one working from the server side.

    I can remove the Zone changes from the PR and submit it as is, and then on a separate ticket do the full server-side implementation @PhilipRosedale
  • Let me just pay on on this, but don’t do the PR. I don’t want to check in the client-only work as I think it will result in other problems and bugs. I will think about how to rewrite this more clearly to as a new project.
  • 18 days, 7 hrs ago

    #21492 updated by PhilipRosedale Changes: Status set to Done.

Labels Saved!

Bids

Login to bid
Who Amount Done in ...
*name hidden*$ ***7 days