Allow Terrain.Archivable to be set to false

I’m developing a map data system that generates grass/water graphics automatically for nearby objects. I’m working on studio tools and it’s really frustrating for the dynamic visualization to be affected by undo/redo. It also adds extra data to my save file. It’s important to be able to visualize grass decoration and water while developing the world in studio and this behavior seems like a reasonable change.

I would expect setting Terrain.Archivable to false would make it not interact with undo, as well as not serialize its properties when saving. Right now it’s just locked.

Also I’m not entirely sure if this is the case, but I don’t think non-Archivable instances should replicate in team create either. The replication from terrain changes (or other plugin-instances) would get out of hand.


An alternative for my use-case would be to introduce axis-aligned water parts, or grass/shader decoration surfaces.

10 Likes

If it didn’t do that then it would delete your terrain when you save. There is just one monolithic set of data backing terrain. The semantics of this working are actually quite complicated:

  • What happens when you change archivable back to true, and then to false again? Should it “remember” what parts were the “true” terrain and what parts were the “extra” terrain, or should setting archivable to true irreversibly merge the two?

  • What happens in the same case when you set archivable to true, make an edit, and then set archivable back to false?

  • Can the archivable prop changes themselves be recorded by the undo history? If it has to merge the two data sets when setting archivable to true, it’s kind of surprising that setting that property would be a non-trivial operation.

I feel like what you’re asking for here is a hack. Would I be correct in saying that what you really want is the ability to have terrain layers, right? Where you have a “main” layer and some “generated” layers?

The idea is that I don’t need it to save. Smooth terrain was unusable for my project for various reasons. I instead use a hybrid approach where terrain is graphics-only and is generated client-side to achieve glowing lava, animated grass, and flowing water effects. The rest of my game is created 100% locally so it made sense to do it with terrain too.

1 Like