Если в туннеле может быть только один путь, том можно например сделать так:
1. Сперва генерировать путь:
2. Затем, сгенерировать случайные стены, с плавным расширением/сужением:
3. Затем, привязать эти стены их центром к полученному пути:
Так как пещера будет создана из прямоугольников, можно легко рассчитать коллизий объектов с ними.