I'm one of those who prefers that a siege should be centered around starving the besiege city into submission, rather then outright destroying it (though that should still be possible). Here's my suggestion of how that could be handled.
- When a siege army arrives, the basic resource production should fall by 10% / hour (stops completely after 10 hours).
- When the siege encampment has been set up (after 12 hours), the troops would no longer desert the besieged city's army when the player can no longer pay their upkeep (after all, the city is isolated from the rest of the world, no one can leave). In fact, I would suggest that the player no longer has to pay troop upkeep during siege, but should the siege be lifted the player would be given 1 week to pay the missed upkeep, perhaps even with a small interest.
- Bombardment would not be the default order for the siege army. The player would have to give the order to begin bombardment.
- Defending catapults would only return fire on the siege army during bombardments. Their target would be enemy siege engines, though if they miss their target, they would still have a small chance of killing a few troops. Since siege engines are smaller targets than buildings (and can be moved), chances of hitting one should also be smaller.
- When the besieged city has been out of food for 24 hours, the defending troops would start losing 2% of their fighting strength pr. hour. After 50 hours of this (when their strength would fall to 0%), they would disappear and the city would surrender. Should a player manage to smuggle some food into the city, their strength would return by 2% / hour the food is available.
With food being an important part of siege, destroying buildings in a large city might not be the best strategy, as that would lower the total population, and therefore also food consumption. Perhaps the option to demolish buildings should also be removed during siege, and even during the 12 hours that a siege encampment is being set up, increase the time it takes to demolish a building.
Also, I think that the suggestion of building downgrading due to food shortage, which is discussed elsewhere, could work well together with this.
As to what happens once the city surrenders, the conquering player would still have the 2 options of either taking it as his own, or razing it.
These options however should not be instantaneous, but rather take an amount of time proportional to the city size.
Razing could decrease the level of all buildings by 1 every hour, while capturing the city could take 3 hours for each 1000 population. During this time the city would still belong to its original owner, and if the enemy army is driven from the city, the city would return to its owner. The damage from razing would of course remain.
I also think we should have more options to choose from when we win a siege. I have mentioned somewhere else the possibility of occupying a city and being able to harvest a portion of its production.
Another option could be to plunder it. This would be a slower version of razing, which would lower the level of all buildings by 1 once every 4 hours, but would also give the gold equivalent of the destroyed building level construction cost. The soldiers would take all the gold they can carry, but the rest would have to be gathered with caravans. (If a razed/plundered city would leave behind ruins on the world map, these could be harvested by caravans.)