Plugin Package format changes

ADSK_APPLICATION_PLUGINS can point to a specific plugin package (3ds Max Update 2022.2)

The ADSK_APPLICATION_PLUGINS environment variable can now include paths that contain a plugin package XML file at the top level. This can be used to only load specific plugins, or versions of plugins. See Packaging Plugins for more information.

SeriesMax attribute is mandatory

The "SeriesMax" attribute of the <RuntimeRequirements> element is now mandatory for plugins using the Plugin Package format.

To assist third-party developers in providing a great user experience and prevent 3ds Max from attempting to load incompatible plugins, scripts and associated resources, developers should now specify the maximum version of 3ds Max their plugins are compatible with.

While it was previously possible to omit the SeriesMax attribute on <RuntimeRequirements> elements of the PackageContents.xml file, plugins will no longer be loaded if the attribute is not found.

SeriesMin and SeriesMax attributes allow for fine grained version specification

The format of the "SeriesMin" and "SeriesMax" attributes of the <RuntimeRequirements> element has been extended to support additional version information about a 3ds Max release.

Previously, the specification only supported the release year of 3ds Max that plugins were compatible with (e.g. "2022"). This has now been expanded to support the YYYYY.u.h.bbbb format (e.g. "2021.2.1.4567"), where:

When SeriesMax is set to the release year only (for example, "2022") the plugin package will be supported by all update releases of that main 3ds Max release version.

Through this change we support third-party developers in the 3ds Max Beta program, who wish to recompile their plugins for 3ds Max 2022, before its SDK is finalized. The previous notation (limited to the release year) had a limitation where 3ds Max beta builds would attempt to load plugins that could be binary-incompatible, resulting in errors, and a degraded user experience.

Since update and hotfix releases of 3ds Max (e.g 3ds Max 2022 Update 2) are binary compatible with their main release (e.g. 3ds Max 2022), the YYYY notation for the "SeriesMin" and "SeriesMax" attributes is still supported, and it is useful in the context of non-beta builds.

Tip:

Developers may wish to use the maxVersion() MAXScript function to identify the values to use for a specific release, using indices 4 to 8 of the returned array.

Examples

A plugin that is compatible with 3ds Max 2022, and all its updates

<RuntimeRequirements OS='Win64' Platform='3ds Max' SeriesMin='2022' SeriesMax='2022' />

A value of "2022" for SeriesMin means "3ds Max 2022 is minimally required for this plugin to work correctly". A value of "2022" for SeriesMax means "the plugin works in all 3ds Max 2022 updates, but not major versions of 3ds Max greater than 2022". This notation relies on the fact that 3ds Max Updates remain binary and source compatible with previous updates of the same main 3ds Max release, which is guaranteed by the 3ds Max team.

A plugin that requires 3ds Max 2022 Update 1 and is compatible with all future 3ds Max 2022 updates

<RuntimeRequirements OS='Win64' Platform='3ds Max' SeriesMin='2022.1' SeriesMax='2022' />

A value of "2022.1" for SeriesMin means "3ds Max 2022 Update 1 is minimally required for this plugin to work correctly". A value of "2022" for SeriesMax means "all 3ds Max 2022 updates, but not major versions of 3ds Max greater than 2022".

A plugin that requires a certain beta build of 3ds Max

<RuntimeRequirements OS='Win64' Platform='3ds Max' SeriesMin='2022.0.0.514' SeriesMax='2022.0.0.514' />

The above runtime requirements express the fact that the plugin was compiled against beta build 514 of 3ds Max. Constraining a plugin to a given beta build is useful when the 3ds Max SDK is undergoing breaking changes, and beta builds do not maintain binary and/or source compatibility with each other.