I have been experimenting with the highest level of fortresses. In the second Punic War, like in many other premodern wars, sieges could last for a long time, so I tried to see if with the maximum level of fortress a large garrison could make assault such a costly proposition as to force players to besiege large cities for a long time. I tried that with Massalia, it was very large city with powerful defenses (in the war against pompeius, Caesar left a blocking army to besiege the city, as he was unable to take it by assault). Now in the game it has a large garrison (30.000 strong) with no command penalty, Hannibal assault the city with his army, a bit over 40.000, he takes the city everytime, with casualties not larger than 6.000 (less costly than crossing the Alps).
To sum up, fortresses don´t give enough protection, something I have already experienced in NCP, but even the maximum level of fortress is not enough, any possible solution? I guess the numbers could be modified, another idea I have, is it possible to forbid assault unless the walls are breached? that would prevent inmediate assaults and force the player to take long sieges.