Reducing Complexity
Reducing and avoiding complexity is one of the hardest and most important parts of game design.
Your game is three times too complex.
That's been my experience, from the game prototypes I've seen.
By hewing things off at every level, you can make your game three times simpler.
The same way
Find things in your game that work in similar ways, and make them work the same way.
Where a majority of things work a certain way, make that the only way. If some of the other things don't work well that way, redesign them, remove them, tolerate them, or (in a few important cases) use text, to make them work like they used to.
Feel free to experiment with multiple different ways to do things, but as development progresses, try to merge them.
Radlands once had a "range" system. Abilities could either hit anything, something of the opponent's choice, or something that wasn't protected by a card in front of it. These first two categories were in the minority, and were abolished. Now, abilities can only hit unprotected cards. Cards like Sniper (can hit anything) and Raiders (opponent chooses) were important, so they were kept, but with text that made them work in this unusual way.
If you really do need both categories, make sure the bigger category is the default rule, and then err on the side of making new things work the default way.
In my farm game, most tokens you take will go onto your farm. Some go to the Storehouse. Those are marked as such, while the farm tokens are unmarked.
Try to get rid of categories where possible.
The simplest way
For everything, always start with the simplest solution or design. If that doesn't work, try the second simplest. Do not take the opportunity to create fancy things. Good gameplay comes from interaction, not from each thing being interesting. If you want to add to your game, add more simple things. Don't increase the complexity of what you already have.
A friend's game involves the players fighting a monster that roams the city. Each turn, the players draw a card, which causes the monster to move or attack. All kinds of cool moves and attacks are possible. The monster might move different combinations of two directions. It might change direction when it hits a wall. It might move, then also destroy stuff or attack. None of this is necessary. This is all just complication and work for the players, and it adds nothing to the gameplay.
The correct answer here is the simplest one. The cards should just say "The monster moves one space west" or "Everyone on or adjacent to the monster loses 2 health." It just needs to function. If the monster isn't doing enough damage, because too many cards need to be "move" cards, you increase its damage. If you're annoyed that it hits the edge of the map, you just add an occasional "teleport back to the middle" card, so that wall-hitting is rare.
A bad designer simply lets out their belt, and adds complexity.
Some of my favourite games have unnecessarily complex mechanisms.
In Wingspan, there are five food resource dice. Some faces have two different food types. To get resources, you remove these from the birdfeeder, and take the matching resource token. Also, if all remaining dice are the same, or all dice are taken, you can reroll all of them. This is all done in a "birdfeeder"-themed dice tower, where the dice tumble down. It's an excellent visual component, but a massively worky and convoluted way to get a few resource tokens.
In A Feast For Odin, you don't just take building resources. You must take them from the end of a strip of resources, with better resources further up the strip. Each round, you take one remaining resource off each strip, and add another strip. Each strip is different, and you place the matching resources on the strip when it's drawn.
Don't add rules
Never add a rule, in order to fix a problem.
This is a well-known piece of advice.
Instead, create components within your existing rules, that fix your problems.
Radlands had an issue that the game would snowball in the winning player's favour, with one player having a group of people in play that would wipe out the opponent's people, and leave them unable to recover. Rather than add rules to deal with this, I added the cards Radiation and Famine, which kill most of the people on the table.
In one of my prototypes, it was common for players to amass too many cards. Rather than create a rule that set a limit, I just added a little ability on a couple of cards, which forces players with very large numbers of cards to discard some of them. After that, players avoided building up too many cards.
The rulebooks for my games tend to be about one or two pages long. This is because I avoid creating rules. People are surprised by how simple the rules of my games are.
Simple rules let players start playing immediately. They can devote their intellect to formulating a strategy, rather than to wrapping their head around the rules. It's just a much nicer experience to play something simple.
Avoid creating rules for certain conditions and times. Imagine you're creating a dungeon-exploring game. What if there are no monsters left in the dungeon? You might create a rule that adds a monster. What if too many monsters end up on one space? You might create a rule that separates them, or a rule that says they can't go onto the same space. A great designer deals with these problems without rules. They construct the game in such a way that these problems don't happen.
The complexity bar
I don't worry about the complexity of individual components too much at the start of my design process. It's towards the end of the process that I apply a "bar". It's not a mathematical equation, but every rule and part of the game must add a certain amount of gameplay, per unit of complexity. This causes me to redesign and reword many things, and cut others. This bar gradually creeps up, and by the end of the design, almost everything is simple, and some things are gone.
You want to go over every single thing with a fine-tooth comb, asking "can I possibly remove this text/icon/concept/rule?" You can usually make something half as complex, but 90% as good.
Get rid of anything that creates an exception to the normal rules, unless you have lots of worthwhile things creating the same exception, in which case you should probably turn it into a rule.
Just don't create complex things in the first place. My playtesters (who aren't game designers) constantly give me solutions that ignore complexity. "What if you made a special token...", "what if when you run out of cards...", "what if there was another resource that..." 95% of the things they suggest are too complicated. To be fair, 90% of my own ideas are also too complicated.
If it's more than one sentence, it's probably too complicated.