#RTX Remix Launcher

36 messages ยท Page 1 of 1 (latest)

tacit steeple
#

Heyo ppl. It has been a while already that me and my gf @floral lily have been thinking about developing a fully fledged launcher for remix, and recently decided to outline some features and would like to bring the discussion up to the channel.
The key concepts are:

  • Mods are self-hosted by the authors via GitHub and release packages, in repos tagged with a "RTX-Remix-Mod" topic so the launcher can list them all
  • Mods are self-contained in subfolders which allow them to be referenced in any order within the mod.usda file, and ppl can install multiple mods on a single game
  • The launcher integrates with a backend service (most likely a python FastAPI app for simplicity) which implements GitHub API and might not need a database at all
  • The launcher also manages dxvk + bridge installations, as well as sorting out mod dependencies, ordering, enabling/disabling and so on.

Here is a basic outline of the features. Feel free to contribute and add to the pile:

Game USDA Structure

  • gameReadyAssets/mod.usda
  • gameReadyAssets/EnhancedSkyboxMod/mod.usda + manifest.toml
  • gameReadyAssets/InteriorLightsOverhaul/mod.usda + manifest.toml
  • gameReadyAssets/PhotoscannedTrees/mod.usda + manifest.toml
  • gameReadyAssets/.../mod.usda + manifest.toml

Launcher Frontend

Mods "Marketplace"

  • Default page when opening up the launcher.
  • Lists all available mods for every game, with basic search, filtering and ordering options.
  • Similar to steam catalog, shows a carroussel of mods on top with respective images.
  • Below that, regular listing of mods with their banner logo, title, authors and stars. Hovering them shows images and more info.
  • Clicking a mod will redirect to the mod page.

Mod Page

  • Shows detailed description, stars, reviews & comments (if possible to integrate with GitHub Discussions API), authors & contact info, HD images, etc.

Library of installed games

  • List installed games and give options to find custom location. Show the multiple installations of the same game with some kind of distinction.
  • Show which ones have a supported installation and which ones don't.
  • Clicking a game directs to the game management screen.

Game Management Screen

  • Show installed bridge & dxvk versions and allow them to be changed, respecting game's custom install script.
  • List installed mods in their overlaid order, by parsing mod.usda and subfolders containing manifest.toml files.
  • Enable/Disable mods (by adding/removing the sublayer line in mod.usda).
  • Drag and drop mods to change their overlaying order.
  • Mods can only be installed on the ideal dxvk/bridge versions on their manifest file and users can forcedly unlock and use what they want.

Manifest File

"About" screen

  • Launcher info, build version & date, repository link, changelog.
  • Remix discord server invite
ripe flume
#

Very nice. Let me know what I can do to help.

#

I might be able to help a bit when it comes to the mod manager side, currently busy but I can start working on the frontend by the end of the week if you're interested.

floral lily
#

Heyou guys. I'm working on the backend service with Python/Fastapi to integrate the Github API. The repo has already been created but hasn't been updated yet. I'll leave the link for anyone who wants to contribute: https://github.com/gi0dogr4u/Nvidia-RTX-Remix-Launcher-Backend

GitHub

FastAPI based backend web service for the Nvidia RTX Remix Launcher app - GitHub - gi0dogr4u/Nvidia-RTX-Remix-Launcher-Backend: FastAPI based backend web service for the Nvidia RTX Remix Launcher app

tacit steeple
# ripe flume I might be able to help a bit when it comes to the mod manager side, currently b...

Sure thing man. I've been thinking about using C# + UWP for maximum native compatibility as a desktop app, given that python is somewhat difficult to distribute, but honestly, we'll be doing so much USD stuff that using the already known python libs might be the best way. What do you think about the frontend stack?

I'll be designing some prototypes on Figma during the week and should have enough content by the weekend

Also, I need some help on automating installation of remix on many different games, since each one has a different set of tools to work. Ex: U2 uses widescreenfix, with specific settings, bridge.conf, rtx.conf, etc., other games have dxwrappers and stuff... and it is a separate thing/step from installing actual remixing mods, which are just the contents of gameReadyAssets folder

ripe flume
#

Well, it'll be a learning experience for me as well. I was going to make a WPF app for my own purposes (Scrapland launcher) since my decision to use Unity last time aged poorly. On how to get this working with the USD libraries, I think I'll have to do some research and get back to you on that. But I think one way to streamline the installation process would be to have a simple renamed archive we search for by file extension. Installation varies per game so we would need to track the following info as metadata for a game profile:

  • Remix install location (usually EXE folder with some exceptions)
  • Remix base directory (usually EXE folder, but sometimes the top level folder; store rtx.conf,dxvk.conf, rtx-remix folders here)
  • bool: is 64 bit (include bridge or install dxvk remix directly)
#

I had some docs for this I was working on when PBROven was in full swing but a lot has changed in Remix since I was actively working on it and I need to do a little catching up.

grave robin
#

I'll also mention that I actually prefer working with USD via c++ instead of python - the python libraries don't exactly match the documentation online

tacit steeple
grave robin
#

I'm not sure what C# to c++ interaction is like, is it easy to just run c++ code in a c# app? if so, c# for UI and c++ for usd interaction may be easier on you

tacit steeple
#

I just mentioned python cause I'm very used to it, though it comes with its own caveats

grave robin
#

๐Ÿ‘ learning c++ and usd-in-c++ will also make it easier for you to make changes to remix... especially if you just use imgui for your UI

ripe flume
#

I haven't had the time to look through it yet but I believe Python is being used for the GUI of OctoTex.

#

I don't really have an answer yet but I will say being able to run Python is an important feature to me as we can then handle custom install scripts and expose those to creators; in Scrapland's case it'll be necessary as the ScrapHack tools are written in Python.

tacit steeple
ripe flume
#

Hmm, yeah that's not really ideal for a launcher.

#

I'll start looking into WPF to see if I can wrangle some good results out of it.

tacit steeple
tacit steeple
grave robin
#

Omniverse has both c++ and python, and individual extensions can use either or both. Most of the remix toolkit is programmed in python right now, but most standard OV utilities are all in c++.

tacit steeple
# grave robin Omniverse has both c++ and python, and individual extensions can use either or b...

I thought about writting the launcher as a standalone omniverse app (https://docs.omniverse.nvidia.com/kit/docs/kit-manual/latest/guide/creating_kit_apps.html), it seems fitting quite nicely within the ecosystem, but that would require the omni kit to be installed by users as well as the omniverse launcher and so on, and also since its meant for content creators, I ended up ditching that idea and going for something more native

grave robin
#

OV can be pared down quite a bit (you can even make headless apps on it), and implementing it as OV extensions may make it easier to integrate into the toolkit later...
But if you just want a slim and simple launcher app to download and manage some files, you're probably better off going for something simpler.

That being said, Remix does work on Linux, so using a framework that will let your program run on Linux would be a good idea

analog robin
#

seems like an interesting concept. i hope this goes places, very nice

tacit steeple
#

Lil spoiler of the design I'm coming up with ๐Ÿ‘€ . It is a combination of the already well known steam launcher ppl are used to, with omniverse launcher following nv style guides a bit.
Nvm the artstation background, it is supposed to be replaced with #showcase cinematic pics

What do you guys think so far? Should I keep it on this line?

#

it is a Figma prototype

ripe flume
#

Haha you work way too quick, I was just prototyping in Lazarus and Electron to see what stuck.

#

I think going for a layout similar to Omniverse would be cool, but I think we could maybe organize this by having a GitHub to pull from where every game displayed is a submodule. So the projects hosted on GitHub can become compliant to the community launcher requirements by:

  • Including metadata and thumbnails
  • Being hosted or mirrored on GitHub
  • Having adequate security to prevent bad actors from uploading malicious d3d9 dll's
    Then manually added by a launcher project admin.
tacit steeple
ripe flume
#

I think it's an interesting idea but depending on how many projects are available I think the space may be better used in a different layout that focuses on getting those titles up in your face as opposed to showing you lots of curated queues.

tacit steeple
# ripe flume I think going for a layout similar to Omniverse would be cool, but I think we co...

Cool. My idea is that mods are just the gameReadyAssets folder downward, no d3d9, other dlls, custom stuff. That would be left for "admins" to setup a custom script for a given game Peepo_Think
That way ppl would only publish remixes, not entire modifications to the game.
Also, each game can have multiple mods published by different authors, say, one for improved lighting, other for custom photoscanned tree meshes, other for asphalt textures, etc.

ripe flume
#

That sounds like a good plan for a lot of reasons yeah. Better to just have the commit hash in the metadata or something.

tacit steeple
nocturne bear
#

Is this dead ?

#

There is nothing on the github too so idk

tacit steeple
#

Not yet. Just had to prioritize some other stuff atm, but wanna come back on the project asap