In short:
We would like to have all user paths configurable and be able to set them per Max session using environment variables.
Description:
There currently quite some paths that plugins may have to put files into that are not configurable (e.g. maxroot\AMG\.. for viewport shaders). In order to make plugins switchable per sessions these have to be configurable.
In addition the current possibilities for configuring user/system paths leaves a lot to be desired. First and foremost these paths should be lists of paths rather than a single path so there can be multiple icons and scripts paths for example. It should also be possible to override these paths using environment variables to allow per session configuration of plugins to load.
Plugin paths:
I would like to explicitly mention plugin paths. Rather then one (or many) plugin.ini files i would like to have a semicolon separated list of paths that are scanned by max. Along the lines of current env variables the name of the variable could be "ADSK_3DSMAX_x64_2017_PLUGINS".
System paths:
There are also many other paths that plugins need to write to which are configured in "configure system paths". These should also be lists of paths and overridable using environment variables. Proposals for naming them:
ADSK_3DSMAX_x64_2017_ICONS
ADSK_3DSMAX_x64_2017_MACROS
ADSK_3DSMAX_x64_2017_SCRIPTS
ADSK_3DSMAX_x64_2017_STARTUP_SCRIPTS
ADSK_3DSMAX_x64_2017_SHADERS_CACHE
ADSK_3DSMAX_x64_2017_PAGEFILE
ADSK_3DSMAX_x64_2017_TEMP
User paths:
ADSK_3DSMAX_x64_2017_FILE_IO: Allow overriding all File I/O Paths.
ADSK_3DSMAX_x64_2017_EXTERNAL_FILES: Allow adding to the External File Paths
ADSK_3DSMAX_x64_2017_XREFS: Allow adding to the XRefs Paths
Implementation:
I propose to make the environment variables complementary to the current implementation if needed to stay backwards compatible with existing setups. So a default installation would look and behave just like the current setup. IF any of the environment variables are set the corresponding paths would be ADDED to the list of paths for the corresponding asset types.
Rationale:
We are dealing with a lot of different projects that are often very long running and there are typically many in parallel. This means we can hardly find a time to update plugins to new versions. Typically our plugin versions are locked with every Max version. But we neither find a spot to switch Max version easily too for similar reasons.
We are in the process of moving to rez to allow per-session configuration for our tools. This way we could be using different Max+Plugin Versions per project or even more granular. So we could have a VFX fluid shot use some nightly build whereas the rest of the shots would be locked to stable.
Also we could segment our plugins so that only the ones that we need in a specific session are loaded reducing bloat and load times while increasing stability and performance.
Can't find what you're looking for? Ask the community or share your knowledge.