I am about to start porting my plugins to R21 and hence have been looking into the new plugin licensing manual of the R21 SDK documentation.
Most of the information is quite clear, except for a few details I am missing.
(I am sure most will understand the general concept of the information, but might also be interested in some of the details below. So, while this post is for my own benefit, I hope it can also provide information to others)
Example is the call GetGeneralLicensingInformation. It provides productId, systemId, userId, licenseId and userName.
Obviously, the productId is an identification of the product and would rather be useless for purpose of plugin registration, except in those cases where there's a need to know difference between cinema4D or teamrender, and commercial versus education, lite, nfr, etc ..
However, in most cases, plugin developers might skip this productId to generate plugin licenses.
The systemId, being hardware related might be useful to distinguish between different workstations, although hardware-upgrades performed by user overtime might result in a same workstation to be detected as a different one. (correct ?)
The userId seems to be the most potential piece of information to be used for flexible plugin licensing, in the way that a single user can have different workstations (work and home) for a single cinema4d license. Here the systemId will be different but the userId not. To be flexible and allow a same user to purchase a single plugin license (to be used on a home or office workstation) it seems the easiest would be to only use the userId for generating the plugin license.
But what about a single user / company having multiple licenses? Is the userId the same for all licenses?
Documentation also doesn't mention the licenseId. Is this something which changes each time a new rental contract is started? What about next Cinema4D releases? Do these affect any of the Ids?
Probably not the userId, nor the systemId. Maybe the productId? What about the licenseId?
So, while the Plugin Licensing Manual provides quite some information, it still leaves out specific details needed to know, as a 3rd party developer, what exactly to use.
as far as I know the licenseID is a temporary session ID that is only used internally. It has no use for third party developers.
The hardware ID is based on the corresponding OS functions. So the hardware ID is the same as long the OS thinks the system is the same.
Please also notice that, for internal reasons, the format of any of these IDs may change in future releases.
Is it up to the studios to decide how they want to license their software. A typical use case could be that a studio creates a single account that is shared in the company. So there would be one user ID for the whole studio.
It is up to you to decide if you want to bind your plugin to that user ID or a system ID.