I am planning a game, a sort of city building, where the terrain can change around the map, let's say from grass to mud or swamp.
I'm trying to figure out how to better project and develop this feature. At the moment I am thinking about to create the terrain using a gridmap and squared tiles, then remove a tile and replace it with another one. This could be acceptable, but I'm not sure that the consequent blocky visual is really what I want.
Is there a way to have the ground built with a plane and have its appearence to change along with physical charateristics? In example characters will have to move at different speed on grass or mud, it should be forbidden to enter swamp and so on. If so, how should I do? Do you have any hints about what should I learn to do so?

If I would make such a project:
First I would generate a terrain with perlin noise.
I would divide the terrain into parts (chunks), for better performance and easier saving.

I determine where certain materials are located relative to the world or terrain.
Like having grass never appear below water level.
For biomes I would use a couple more noise maps that would check stuff like humidity and temperature.

For terrain modification I would allow the player to edit the noise map directly with some sort of brush, and regenerate the terrain.
With a 2d noise map, you could make complete black set to a height of 0 and complete white to a height of 100, any greys in between will get a height equal to it's grey value. So if you allow the player to draw black or white lines on the map, it would essentially be a terrain modifier.

Also don't use gridmap for terrain. It's fine, but not great when you have to constantly generate terrain.
I would suggest to generate terrain in code instead.

    SuperDoomKing
    Thanks for your reply.
    The change of the ground type will not be directly up to the player, it will have to change "on its own" depending on changed conditions in its surroundings. In example, I am planning to have a building that placed next to a swamp, over time, will drain the water drying the near terrain and making it available to other buildings or where grass will grow and people could walk, if that building is removed, the water could come back.
    Are your suggestions yet appliable to this scenario?

      Alhazred
      For that you would need to write some functions that will change the terrain over time.
      Define certain conditions for how the terrain needs to look after a certain amount of time.
      You need to boil these simulations down to the simplest set of instruction, before you can add more complexity.

      An example of instructions:
      Lake exist.
      Humans live next to lake.
      Lake dries up.
      Lake does not exist.
      Humans leave.
      Lake fills up with water.
      Lake exist.

      Do some research on how terrain generation works.
      And instead of allowing the player to modify, make the code do the modifications, based on the instruction you give it.

      The main thing to know, as SuperDoomKing alluded to, is that you’ll want to first create a function for generating (not editing) terrain. Afterwards you can slowly start feeding that function relevant information to make the changes you require. Once that done, instead of “editing” the terrain, instead when something happens delete and regenerate the terrain according to new parameters..

      Thank you, I will look into terrain generation by code.