FIrst, game modes only run on the server.
Second, game modes only run if you actually make them the mode for your level
Third, actors only tick if they are marked as ticking. Which maybe game mode base isn’t by default?
The documentation says:
you will need to check PrimaryActorTick.bCanEverTick is set to true to enable it
If your game is single-player, then there’s a GameMode right there (because “single player” is actually a server, of a sort. Without the networking.)
If you have a networked game, then rules should be enforced on the server. If you need to speculate about the rules, predict outcomes, and give user feedback, then that’s more about the UI/gameplay implementation of the prediction, rather than the rules themselves.