Нарисовать несколько видов "пятен", и несколько "фонов". А потом рандомно располагать "пятна" на плоскости, задавать рандомный размер, поворачивая на рандомный угол.
Можно и форму тоже рандомно генерировать. Если вы умете работать с canvas, то особых проблем вроде не должно быть..
TANK_IST: Можно. Один из способов - это при определении случайной координаты производить проверку на минимальное расстояние до любого другого объекта.
С математикой у вас как? Вам нужно уметь работать с матрицами, тригонометрическими функциями, системами координат. Знать основные формулы, типа сумма квадратов катетов = квадрату гипотенузы (расстояние между точками). знать, что такое синус, косинус, и все такое..
Я все это в школе успешно про...слушал, и сейчас много времени и сил ушло на прояснение элементарных понятий, типа "что такое множество".
Еще можно было бы обучить нейросеть рисовать вам узорчики. Возможно есть даже готовые решения. Но это уже совсем другая тема)
Пусть у камней будет обводка фоном, тогда при наложении будет видна только часть камня из предыдущего слоя, то есть будет выглядеть, как будто в нём выемка, в которую лёг перекрывающий его камень. К тому же обводку для большей реалистичности можно сделать неровной
По идее, заливку обводки можно делать относительно полотна, то есть швов в пересечении видно не будет. Опять же, делать каждый камушек как пятно бОльшего размера с фиксированным относительно холста фоном внутри которого уже меньшего размера пятно с текстурой камня