The player that goes first in the turn when a NAP ends often has an advantage over the player(s) that come(s) later in the turn, i.e. the first player can push into the other one's territory and sit at his door(s) until the truce is over and will then have the opportunity to crush the opponent even before he can defend himself. The only solution now is trying to block his road or other access in order to prevent him to come close enough and patiently wait until the truce is over.
I have experienced this on both sides and regardless of my position, I didn't and don't like it, it's a weak spot in the game.
Thinking of possible solutions I have come to one that thematically and game-wise seems fair and easy to implement: a unit or stack that is close (*) to a "friendly" city can get in touch with the people of this friendly city and might abandon the army and choose (**) to migrate (***) to the "friendly" city. End of door-knocking and crushing the opponent on the very first turn after the truce.
How to read (*) close and (**) migrate? Several options for the developers:
(*) close: to be defined as
1. within a predefined distance around a city (which can even be non-fixed but depending on the city level, e.g. the view distance of a city) or
2. closer to the other player's city than to the own city
(**) choose: to be defined as a percentage of chance/risk that a unit/stack/part of a stack "leaves" the player
(***) migrate: to be defined as
1. choose to join the other player (= changes color) at the end of the truce or
2. choose not to fight anymore and becomes a (in the game non-existing, hence disappearing) normal citizen of the other player
If 1. then it's probably easier to do this on a stack level, not partial stack, if 2. then it's possible to do this on stack level or even on unit level, i.e. each unit of a stack risks to "leave" resulting in a reduced stack.
Bottom-line: either fight your co-players or stay out of their backyard if you have a truce with (one of) them.
___
Alternatives:
- stacks that are too close (same definition as above) to a "friendly" player when a truce ends are moved or teleported (duration = same as between cities) to your own closest city.
- combination of "risking" to lose the units and, if not, having them moved/teleported to your own closest city.