Physics Update Problems

we’ve developed and released a marble run app for mobile platforms, that heavily relies on the Unity built-in physics. The app was released a few years ago, and we’re steadily adding new content to it. We plan to continue supporting the game for at least a few years.

We initially built the app with Unity 5, and managed to upgrade the project to 2018.2, while keeping all marble run levels intact.

Now, with the new physics update from PhysX 3.3 to 3.4, in Unity 2018.3 and onward, we see major changes in physics behavior. Basically marbles don’t run as they used to, which resulted in some levels becoming unplayable.

  • In 2018.2 and older we were able to restore the old physics behavior by disabling PCM in the physics settings. It looks like this checkbox was replaced by the “Contacts Generation” dropdown. Selecting “Legacy Contacts Generation” however didn’t do the trick, as marbles continue to roll completely different, compared to previous versions. Might this be a bug?

  • One alternative would be trying to adjust forces and other physics settings in a way that older levels work again, but this would be tedious at best. Some levels might even be irreparable.

  • This video shows our problem: MarbleVersions.mp4 - Google Drive

Requirements like Android 64 bit support push us to use newer Unity versions. How should we future proof our marble run app with physics changes that big? How can we keep our Unity engine up-to-date without breaking existing levels?

Today, I updated to 2019.2.13 and as expected the physics went to hell. Oddly enough I managed to recreate the seemingly same physics behavior, by setting ‘Collision Detection’ in every ball’s Rigidbody to ‘Discrete’

The courses seem to run fine for now, so until we find another better solution, this is the right answer I guess.