Один из способов импровизировать - это использовать плитки.Таким образом, в любой момент вы сохраняете только те плитки, которые изменились с момента последней записи.Таким образом, вы не будете писать больше, чем необходимо, и, вероятно, сократите объем записываемых данных, поскольку пользователь вряд ли охватит большую часть чертежной доски.
Таким образом, после записи плиток, которые изменили последнюю итерацию, пометьте все плитки как чистые.Когда пользователь взаимодействует с доской, отметьте плитки, которые изменились, как грязные.После того, как пользователь завершит свое действие, выведите все грязные плитки в параллельную очередь.Повторите это снова.
Вы должны будете использовать те же самые метаданные, что и при смене тайлов, чтобы вы могли восстановить плату на заданной итерации, чтобы вы могли поддерживать операции отмены / повторения.
В качестве альтернативы вы можете улучшить подход к путям, сохранив изображения на важных этапах, например, через каждые 5-10 действий, чтобы отмена / повтор не была такой дорогой, а запись - тоже.