Studio Installation of RD - License questions

Hello @marcus and community!

I wanted to make these questions visible to help contribute to the discord/community to help others in the future.
I was attempting to install ragdoll for the studio and came across some lic questions I wanted to inquire with you on how best to proceed.

  • Is installing the plugin manually an intended form of filtering/limiting licenses? To the desired artists.

  • I went about attempting to install it officially to help the less technically inclined artists ensure they are on the same version. Or if an emergency version need be released, it can be done quickly. (Or roll back) But I noticed that if the module is on path it autoloads. So people who may not need the plugin, modelers, lighters, etc, may be using licenses? How would you like to combat this?

  • I suppose the questions that come to mind are. I want to ensure that we as a studio respect the purchased lic limit. But I also want to make sure that whoever does use it, some approved technical artist, has the desired version as his/her/their teammates.

Would love to know your thoughts!

Hey @rav, great questions!

Is installing the plugin manually an intended form of filtering/limiting licenses? To the desired artists.

For a studio I think you are on the right track, with Rez or a global modules directory. Machines can be activated and deactivated with the UI that pops up on start, I think that would be the simplest approach initally, until the amount of moving licences around becomes a problem at which point we can look at a floating licence server.

But I noticed that if the module is on path it autoloads. So people who may not need the plugin, modelers, lighters, etc, may be using licenses? How would you like to combat this?

Good point, do you have anything similar in your studio currently, like a rendering licence not relevant to riggers? How do you address that? Would it make sense to add a RAGDOLL_NO_AUTOLOAD variable? Loading means calling ragdoll.interactive.install() from Python, that could happen at any point. It’ll take care of both the plug-in and UI menu. Maybe we also need a RAGDOLL_AUTO_SERIAL to automatically activate with a given key whenever it is installed? Artists shouldn’t need to ever see that dialog. And maybe a RAGDOLL_NO_STARTUP_DIALOG to avoid showing it regardless.

I suppose the questions that come to mind are. I want to ensure that we as a studio respect the purchased lic limit. But I also want to make sure that whoever does use it, some approved technical artist, has the desired version as his/her/their teammates.

For machines that haven’t been activated, it won’t be possible to exceed the licence limit, except for the trial that kicks in automatically. I would say it’s fine for trials to be accidentally used commercially, the trouble is how to communicate whether the current version is a trial to the artists… The only way to spot this currently is in that startup dialog. Without floating, there’s no centralised place to manage it. I’m thinking we would cross that bridge once we get to it?

  • Auto load Menu/Plugin
    At my studio we always start maya(any dcc) with -noAutoLoadPlugins and then load a show specific list of plugins. If they are needed with a larger list that is accessible, but not loaded. If there is something an artist needs, we add a menu item for it and that would then load the plugin and any additional menu items related to it. So any means that would respect the -noAutoloadPlugins is cool with me.

-RAGDOLL_NO_STARTUP_DIALOG
Would definitely be a great addition. Just so that it never disturb any artist that is not intended.

-For machines that haven’t been activated, it won’t be possible to exceed the license limit
Great, if it is not an issue for you, or in regards to license, then no trouble here. I will have to think of a way to ensure that a scene with a RD node does not get unintentionally passed around to different departments but I am sure that is what publishing is for.

So any means that would respect the -noAutoloadPlugins is cool with me.

Cool, that’s already the case. The plug-in doesn’t load until you call ragdoll.interactive.install(), that’s currently called from ~/maya/modules/Your-Ragdoll-Version/scripts/userSetup.py. You can currently skip the module altogether, and add the scripts and plug-in directories manually via your package manager, e.g. Rez.

Maybe that’s better actually, then you can experiment with multiple approaches until you find what works best, and then I’ll add the best approach to the product itself

See the contents of the Ragdoll.mod. It’s really simple, just two environment variables needed to do what it does; PYTHONPATH and MAYA_PLUG_IN_PATH

If you leave out MAYA_PLUG_IN_PATH altogether, you can set RAGDOLL_PLUGIN=c:\absolute\path\to\ragdoll.mll and only keep Ragdoll on your PYTHONPATH. That way, it can’t be automatically loaded by Maya when opening a scene saved with Ragdoll (it would instead throw a “missing plug-in error”).

For completenss, the aforementioned environment variables were added in version 2021.01.14!