В-общем, почитал, что вы написали и придаумал такой алгоритм:
Файл, отвечающий за расстановку травы - есть черно-белое изображение. Где оно светлое - там есть трава, где оно тёмное - там её нет, а где оно серое - по степени светлости пикселя вычисляем, много ли на это место ставить траы. Алгоритм в общих чертах:
1. Стартует игрок.
2. вокруг игрока на дистанцию, на которой показываем траву, читаем пиксели на карте покрытия травой.
3. Соответственно этому по координатам, соостветствующим этим пихселям, расставляем траву - на белых пикселях больше, на серых - меньше, на чёрных - не ставим:

4. Обновление травы. Если игрок переместился так, что какой-то куст стал от него слишком далёким, то помечаем его как невидимый. Если появилась клетка, где надо поствить траву, то мы не создаём её, а перемещаем самый дальний невидимый куст - и так по циклу.