Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pull in XR plugin v0.8.4 #531

Merged
merged 4 commits into from
Feb 12, 2024
Merged

Pull in XR plugin v0.8.4 #531

merged 4 commits into from
Feb 12, 2024

Conversation

wheaney
Copy link
Contributor

@wheaney wheaney commented Jan 31, 2024

decky-XRGaming

This plugin installs and configures Breezy Desktop, which provides various features for AR glasses.

This update pull in Breezy's latest version, including support for Smooth follow and Automatic re-center modes, as well as support for a feature licensing system. All the Breezy changes can be seen in the comparison view between Breezy 0.8.4-beta and 0.7.0-beta (which is the version the currently-live plugin uses).

Checklist:

Developer Checklist

  • I am the original author or an authorized maintainer of this plugin.
  • I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.

Plugin Checklist

  • I have verified that my plugin works properly on the Stable and Beta update channels of SteamOS.
  • I have verified my plugin is unique or alternatively provides more/alternative functionality to a similar plugin already on the store.

Plugin Backend Checklist

  • No: I am using a custom backend other than Python.
  • No: I am using a tool or software from a 3rd party FOSS project that does not have it's dependencies statically linked.
  • Yes: I am using a custom binary that has all of it's dependencies statically linked.

Testing

  • Tested on SteamOS Beta/Preview Update Channel.

@wheaney wheaney requested a review from a team as a code owner January 31, 2024 19:32
@TrainDoctor TrainDoctor added the on-hold This pull request must wait until it can be merged label Jan 31, 2024
@TrainDoctor
Copy link
Member

TrainDoctor commented Jan 31, 2024

The donation-only features/features extension elements added in with this update are a potential issue for the SDH team. This PR is marked as "on-hold" until such time as the team has discussed and decided what we will be doing in regards to this for this plugin and any old/new plugins who may receive a similar functionality going forward.
I appreciate your patience in this.

@EMERALD0874
Copy link
Member

@wheaney Could you give some examples of what you'll use this "features licensing system" for? Would these be core features (ex. can only use a joystick if you're subscribed) or things users could get around with more technical know-how (ex. cloud syncing to other computers)?

@wheaney
Copy link
Contributor Author

wheaney commented Jan 31, 2024

My intention is to always offer core features to everyone, so the primary "modes" you see at the top of the plugin, which are the Virtual display, VR-Lite (mouse/joystick modes) and Sideview (renamed to "Follow" in the current release, but the sideview features are still there and not behind the supporter tier). The only things I'd offer paid are enhancements to those modes. In the current release (in this PR), those modes are:

  • Automatic re-centering of the virtual display (if you venture far enough away, or venture a smaller distance for a while). Without this feature, people can recenter manually (as they already do) using a button in the decky UI or a double-tap on the glasses themselves
  • Smooth follow is an extension of the follow/sideview modes where the screen smoothly accelerates to your eyes. Without enabling this mode, you can still view a static screen in the corners or center and change its sizing, and it follows you, but just not "smoothly."
  • Side-by-side mode is an extension of the virtual display mode where it supports putting your glasses in side-by-side mode (a feature of the glasses that splits the screen in half and renders to each eye, the glasses can always do this with or without my feature) and my shader renders a split-screen that accommodates this. Being able to do a stereo image means I can virtual move the screen closer or further, or support rendering games that natively support SBS 3D. Since most games don't natively support SBS, this feature mostly becomes an eye comfort thing with being able to change the perceived distance of the display.

I don't have immediate plans for supporter features going forward but I've considered things like:

  • OpenTrack in the VR-lite mode, a protocol that some games support as an alternative control method
  • 6DoF position tracking in virtual display mode - the only glasses I support right now are 3DoF, so they track the direction your head is looking, but not the position in 3d space. Adding 6DoF support would make glasses that support 6DoF more useful by essentially changing the display depth/position automatically when you move instead of having to do it through a slider in decky as you do right now, but this is mostly a productivity feature, for gaming its not super useful to be able to move around the screen.

My long-term goal is to offer productivity features (multi-monitor workspaces) in the underlying Breezy app, not Decky, which is why having paid tier support is useful in the long-term. I'm nearing feature-complete for the planned gaming features in this plugin so I don't see it having many implications here.

@wheaney
Copy link
Contributor Author

wheaney commented Jan 31, 2024

Just to add my 2 cents: I understand not wanting to get money involved out of worry that developers will begin to expect too much of a community supported project, put pressure on the SDH team, etc...

I think it's reasonable to set firm guidelines about what being a published decky dev DOESN'T mean in terms of feeling entitled to support, feature requests, timeliness, etc... and what being part of the community means in terms of behavior within the community. Banning devs and removing their apps from the store if they begin to cross the lines of good community behavior I think would be adequate. You could even restrict this as a privilege for devs that have earned the trust of the SDH community. I think @TrainDoctor and others can attest that I've been respectful and helpful in Discord, I've posted knowledge base content, and I've contributed back to a couple of the packages (or attempted to anyway); that wouldn't change going forward.

@wheaney
Copy link
Contributor Author

wheaney commented Jan 31, 2024

I realized I missed this part:

things users could get around with more technical know-how

My licensing system is intended to be pretty secure. It's maybe not perfect, but the only way around it at the moment would be to modify and compile the code themselves to exclude some of the checks.

@wheaney wheaney changed the title Pull in XR plugin v0.8.2 Pull in XR plugin v0.8.3 Feb 1, 2024
@AAGaming00
Copy link
Member

Smooth follow is an extension of the follow/sideview modes where the screen smoothly accelerates to your eyes. Without enabling this mode, you can still view a static Screen in the corners or center and change its sizing, and it folows you, but just not "smoothly"

my one concern with this is that it could be potentially considered an accessibility issue to not have this? how's it look with it off vs on?

@wheaney
Copy link
Contributor Author

wheaney commented Feb 1, 2024

I haven't heard it described as an accessibility feature, even on XREAL's own material (smooth follow mimics a feature of the XREAL Beam device).

I would describe it as a comfort thing as it provides a more stable image. Our head movements can be bumpy and jerky while our eyes sort of float independently and smoothly track things around us without us really being aware of it. Since glasses track our head movements and not our eye movements, the screen can move in ways we're not used to, so smooth follow makes it a more comfortable experience.

Without smooth follow or virtual display on, the image in your glasses will be static, so it'll behave like a standard monitor, just like if you had the glasses plugged in to the steam deck without my plugin (though you can resize/reposition the screen even without smooth follow).

@wheaney wheaney changed the title Pull in XR plugin v0.8.3 Pull in XR plugin v0.8.4 Feb 4, 2024
@EMERALD0874
Copy link
Member

@wheaney Small update so you're not worried about this PR being dead in the water: We've been having some internal discussions about what we want our monetization policy to be. Right now, we're moving towards allowing monetization, but we're still refining our policy on what should and shouldn't be allowed.

In the meantime, I'd like to ask for the licensing system:

  1. Will these be closed-source or open-source additional features?
  2. If open-source, will the code be stored within the plugin? Will it need to be downloaded separately?
  3. Will you be able to add licensed features without our approval (like how CSS Loader allows themes on their servers without Decky Loader moderation)?

Not sure how impactful the answers will be on any discussion but I'd like for us to have as much information as possible.

@wheaney
Copy link
Contributor Author

wheaney commented Feb 5, 2024

  1. All my code -- with the exception of the licensing backend server -- is open source, so anyone could check out and compile the code with these features enabled. For example, for the two licensed features in this release, the smooth follow feature implementation can be seen in the driver here, and the SBS implementation is enabled by this driver flag and its implementation lives in the vulkan shader here.
  2. At the recommendation of the SDH devs I've worked with, all code and binaries are bundled in the decky plugin zip file that gets downloaded on installation, nothing is downloaded behind the scenes after that.
  3. No, due to my answer to (2) above, the breezy archive (shader + vulkan implicit layer + driver bundle) are bundled into the decky installation with a checksum that ensures I'm linking to the installation that's been reviewed (and I include all breezy diffs in my PRs as you can see in the "comparison view" link above). So SDH devs have an opportunity to review all the breezy changes that are bundled with each release and I try to enumerate what that includes as it's usually a lot of code. In addition, my breezy and driver installs come with manifest files and verification scripts to ensure that the installed files are the ones bundled with decky.

@TrainDoctor
Copy link
Member

Pursuant to our new updated rules on plugin monetization in the plugin submission guide, the SDH team has decided that we will handle plugins with monetized features on case by case basis at our discretion with the guidelines in the plugin submission section as our outline for how we will judge plugins with monetization and or monetized features. Sorry this took so long to get back to you!

@wheaney
Copy link
Contributor Author

wheaney commented Feb 10, 2024

Thanks! Looks like the removal of the old plugin is causing the build action to fail.

@TrainDoctor
Copy link
Member

Thanks! Looks like the removal of the old plugin is causing the build action to fail.

Not sure why that build even ran but the correct plugin did get uploaded so all good.

@Valghora
Copy link

Major Issues

  • None

Minor Issues

  • Failure to send email when performing token refresh (Resolved)

Versions

  • SteamOS v3.5.7
  • Steam Client v1705108172

Installed Plugins:

  • CSS Loader v2.0.5
  • Bluetooth v2.1.0-1
  • ProtonDB Badges v1.0.12-1
  • Pause Games v0.4.2-1
  • AutoFlatpaks v1.6.6
  • DeckSettings v1.3.0-1

Merge Sign-off

  • Approved

@marios8543 marios8543 merged commit 04f7097 into SteamDeckHomebrew:main Feb 12, 2024
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
on-hold This pull request must wait until it can be merged plugin-update
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

6 participants