Introduction
I hope that this question isn't too broad, my apologies if it is. Anyway, getting to the point, our video game is set in ancient Egypt and, to nobody's surprise I'm sure, Egypt has a lot of sand in it. Sand is one of those substances that is notoriously difficult to simulate, however, in order to create a realistic desert I do have to deal with that aspect. Additionally, it also allows for the landscape to gradually change, which isn't just what real deserts do all the time, but it will also aid with making large stretches of desert seem a bit more interesting.
My primary concern is managing it in real time. On small scales, andsand flows almost like a fluid, which needs to be done as characters interact with it, but even as a whole, a desert changes rapidly (compared to most other landscapes) as a result of environmental effects; sand moves, entire dunes displace themselves in a matter of days, and tracks created by humans and animals can quickly dissipate.
Current Approach
Hence I am requesting methods that are good at achieving all these effects in an efficient manner. Personally, I was thinking about using the incompressible Euler equations utilising Lagrangian mechanics, thus working with particles, and then using something like Marching Cubes to render. However, it sounds like that'd be extremely time–consuming, so I wonder if there's a different, better approach.
Technology
Currently we're working on our own game engine that is written in C and uses Vulkan as the primary, and probably only, graphics API. Hence, plenty is possible, although we'd prefer to keep the number of dependencies down to a minimum.
Thanks a lot in advance.