Early this year we looked at updating our plugins to R20 whilst still supporting R14 to R19 and costed up the development and QA time and the impact these changes would have. We then looked at alternatives and came up with an R20 plugin that could load plugins from before R20 and bridge the API changes.
If we could get this Bridge working it also had the advantage that we could release it to the Cinema 4D community, not every C++ plugin developer has the time to port and support R20 ; this part is a bigger technical challenge for us to solve, but we’re going to give it a go.
X-Particles and Cycles 4D do ‘work normally’ and the latest X-Particles has R20 support for Fields. It makes little difference to the plugins if a call to an API function is done direct to C4D or through a bridge. The overhead of this is negligible, in some cases none at all. The biggest step was the technical challenge of how to do this because R20 has had major changes. The API has changed in every area. For example, something as simple as the Bool variable type has changed which means all functions and data using a Bool has also changed. We already use something similar to a bridge (on a much smaller scale) to support R14 to R19, the X-Particles core is actually built with 16.050 but can work in R14 to R19 and support features in R18/R19.
The advantage we saw was the possibility to have this Bridge support more than just our plugins. For now our focus is on X-Particles and the next Cycles 4D, we are encouraging other plugin developers to contact us (details are on our site) so we can see if their plugins work too. In some cases they may just work or we may be able to extend the bridge to help. In other cases it may need the plugin to be slightly changed as we had to with X-Particles. R20 brings not just API structure changes but some behaviour changes. For X-Particles that meant we had to change the code ; which we would have had to do even if we didn’t use the bridge.
As for updating X-Particles to R20, in time we may update to the latest Cinema 4D API but only when it is appropriate for us to stop supporting earlier Cinema 4Ds. For now we still have many users on earlier Cinema 4Ds and want to continue supporting them. Moving small plugins to the R20 API is a reasonable amount of work, moving X-Particles is a significant amount. When we moved X-Particles to the R16 API (which was simple compared to the R20 changes) we had to test it for months to find any bugs caused by the code changes.
We will release more information soon, an introduction to what we are doing is on our site:
Sorry for the long post, the technical details are pretty complex but I wanted to try and give an insight into what we’ve achieved.