We're making a game where you need to manage some dikes, if you don't do this right the dike will break and the village will flood with water.
My question is. What is a good way to slowly "flood" a village in a somewhat realistic way. We only came up with a mesh with a water texture which will slowly grow in size.
This seems fairly broad because there are a lot of ways to go about it. Also, "good" and "realistic" are very subjective. This feels like a forum post more than a question, but that may be because of the number of forum posts on similar subjects.
A simple solution as you have come up with is to scale a mesh's vertices along the volume you intend to fill. You could do this fairly simply with a shader and a map lookup for a height/displacement map or something like that. You could add particles or some such to the head of this mesh to create a more convincing water as well. If you consider the water filling the area to be like a progress bar, you could apply many of the techniques used in Puzzle Bloom as described in this Unite presentation. You could set/generate/calculate your fluid path however you like and if you want/need, even perform the appropriate changes to the map at runtime.
You could try to do the whole thing with particles, but I really don't recommend it as it likely won't look right.
If you want/need to do it the hard way, you could author your own fluid dynamics solution either as a plugin(pro-only) or as a script (which would be more limited). You could alternatively access the results generated from any external fluid solver if you had the resources + desire. This will incur a fair amount of overhead in many cases and really won't do anything too visually different from displacing the vertices of a mesh according to the lookup described above.
This is kind of like this post in the forums. Also, depending on your use case, you may find this forum topic useful. And if you consider floating in the water, you might consider this question's answers useful. You could also try faking it with cloth physics like this thread suggests.
If you're conscientious of performance, the simplest and least taxing way that I've seen this done is simply to put a water plane below the terrain, then have it raise up as the 'flooding' event takes place...You may have to modify some level design to get this to look right, though (I recommend putting your village as the lowest place on the map so that the water rises from the bottom -- a valley?) Then use particle systems and/or a UV-animated distortion shader on a mesh (see the Sewer Demo for a good example) to simulate the water flooding out of the dykes...If the camera dips below the water, use color correcting post-processing effects (PRO) and fog to simulate the underwater experience--another mesh with distortion can also add to the effect.