Dynamic actually IS what you need. As soon as you start the game, materials are fixed. You cannot change a material inside a running game, unless you create a dynamic material instance of it.
- Create a material with a vector input parameter (you can plug it directly into base color) and give it a name (eg Color).
- Make a material instance of it
- Then setup your marble like [in the tutorial][1]
In the tutorial you can see how a color is passed into the material instance. all you need to do now is change this color parameter. You can use random to initialize this color parameter (eg 3x randomint plugged into a makevector)