I have been playing Rainbow six for the past 6 years. Rainbow six is the only multiplayer game that gives me a unique experience every time I play it.
The reason for this is Procedural Destruction. The destruction system in the game creates endless possibilities for all players. Most of the game uses pre-fragment destruction, which is pre-determined and has a fixed outcome. But in Rainbow, you can find procedural destruction, which is a change in the state of an object generated at runtime where the outcome is unique. This made this game special and addictive over the years.
So I started my research on this topic until I found this video, which pretty much explained everything I was looking for.
Link: https://lnkd.in/dVVxBrBh
In this video (2016 GDC session), Julien L'Heureux from Ubisoft discusses the process of developing and integrating Realblast, a destruction engine, as a core gameplay feature to Rainbow Six: Siege and all the technical hurdles encountered along the way for 5 long years.
This video helped me to start working on this system in Unity. After a week of development, I was able to implement the basic mechanism for this procedural destruction. I took a plane and broke the mesh along the plane. The plane can be aligned in any direction and we can see the mesh break accordingly.
My code is working fine on all kinds of meshes, but I still feel there is a scope to optimize it further.
I will be sharing my GIT link to the project soon.