Sometimes I like to talk about game design in terms of what people should do, or in terms of applied concepts, but this time I'm going to talk about something that annoys me in just about every game I've played (including a few of my own): Null Results.
A null result, such as I'm calling it, is when a player makes a move and the game state does not change. That isn't to say that a null result happens when a move does not execute and the rest of the game continues on, but when the game is not distinguishable from its state prior to the player making the move, such that the player could make the move again.
As an example, I would take the Warhammer roll to hit. In combat situations, shooting and close combat, players roll to hit with attacks or shots, corresponding to D6s. If the D6s match or exceed a threshold, then the shot or attack is said to hit, and the players roll again to wound or penetrate the target of the attack or shot. If the D6s do not match or exceed that theshold, they miss, and nothing happens beyond the opportunity cost of having rolled the dice at that target rather than some other target.
However, this opportunity cost, the fact that resources have been expended, does not change the null result. Indeed, that's part of the problem of a null result: the cost is nothing happening. I should note that I've played games of Warhammer where opponents have allowed me to roll for events after their window in the turn sequence, and virtually every time the null result ensures that the current game state is valid in the contingency that I had remembered to make the roll when I was supposed to make it. In those cases it's actually good that nothing happened because I get to make the roll and my opponent's planning is not retroactively upset. In other words, null results interfere with a player's ability to exert agency during a game. But then, the reason it was good was because it didn't make a difference...
Going back to Warhammer, players have the choice to shoot or not to shoot, and then if the choice is to shoot, then to shoot at one target and not another. Considering this as a game tree, the player has only one live option: To shoot the more valuable target. The other options, to not shoot, and to shoot the less valuable target, are not live. In other words, the null result compounds with a procedure to produce the equivalent to a stupid play.
Now some people might argue that, especially in war games, we must allow for stupid play in order to simulate the fog of war, and the fallibility of command in the face of contact with the enemy. I agree with this entirely, so long as the situation is symmetrical. By that I mean we should allow stupid play, not stupid play that sometimes results in a lucky null result.
The point is having less slippage between the player's choice, and the feedback from the game. Take the opportunity cost inherent in Warhammer in choosing to shoot one target rather than another. That same opportunity cost exists in Epic Armageddon. However, a detachment in Epic Armageddon will always be able to put a blast marker on something it shoots, so while rolling all those dice may produce a null result, the decision to shoot one enemy detachment over another does not.
Similar ways around null results include having weapons risk jamming in skirmish games, so that a null result becomes a "can shoot again" result, or by tracking ammunition, so that the opportunity cost is compounded by a material cost. Ideally though, if something isn't going to happen, then players shouldn't have to invest work in realizing that nothing is going to happen. Similarly work should be proportionate to reward, so that players get proportionate feedback from investing effort into the game.
To recap: Null results are when the results of player decisions do not affect the game's state. A null result is still a null result if it happens because the player decided that the opportunity cost of a null result from choice A was less than the opportunity cost of a null result from choice B, since an opportunity cost will result from choices with non-null results as potential outcomes. Null results are bad because they detach a player's investment in the game from the reward, the feedback, of playing the game. Avoid null results because good game design involves getting players invested in a game, and their returns should exceed their investment of effort. Put another way, null results aren't bad because nothing happens, but because they represent a net loss to the player.