As a hobbyist game designer, I have the distinct advantages of making lots of mistakes. Mistakes are great, because you learn from them, but as a bonus you learn to see the mistakes you made in other people's designs.
Lately, the mistake I've been hyper-focused on is the lack of tags in games. By "tags," I mean labels or metadata. Too often, games hand you a bunch of game pieces and expect you to understand how they fit into the imaginary game world. For instance, imagine I'm introducing you to a new game, and I give a card, telling you that it's only effective against Officials. I take my turn and throw a card down on the table, and it's a powerful-looking Steward card. Can your card combat mine?
It's an imaginary scenario in a game that doesn't exist, but you can imagine the answer might be no because the label "Steward" sounds pretty official. Then again, maybe "Steward" is just the card's faction, and this particular member of the Stewards is just a foot soldier. Obviously, an official requires an official title, such as Steward Captain. Worse yet, maybe you're just supposed to look at the art on the card. Obviously, an official wears a hat and has a badge.
How could you not have known that? Well, keep playing for a few years. It eventually becomes second nature.
I made exactly this mistake while designing a new card game. I'm keeping the game simple. It only has 12 distinct cards (repeated throughout the deck), and there's really only one mechanic. It's a rapid-fire game meant to be quick to learn and quick to play.
Playtests went well, and in fact they went so well that I thought of several interesting mods. However, I don't want to complicate the game, and besides I only have the 12 art pieces. I had the idea of designing an "expansion" set that would add in 8 new card types and one or two new mechanics. Players can choose to play just the base game, or to add in the other cards.
When I started designing the expansion, though, I realised that my ideas for new mechanics were hampered by the fact that I had no way of distinguishing any of my initial 12 cards from one another. According to the cards themselves, they were essentially all the same: they were each one a card. The only way to refer to one was by describing it. There wasn't even enough consistency in the art to make the artwork a defining factor.
I had to go back and add to the initial design to add metadata to the cards.
Metadata is important in games, because game assets are meant to represent things in a game world for which the players have no context. It may seem obvious to you that the knight-shaped meeple represents a knight and that a normal-looking meeple represents a peasant, but if players just assume that, then they're risking playing the game unbalanced. They have to make a choice, and depending on their dispositions, they'll either choose something that gives them a penalty or a benefit that you didn't design into your game.
But it's not just for the benefit of the players. Metadata gives you, as the designer, a whole new vocabulary to work with. It's an added library to the source code of your game.
Here's what I mean.
Say you've written this rule: "Discard all cards, except gemstones."
Diamonds are probably gemstones. Is Onyx considered a gemstone? And what about this card with a pile of coins and goblets with gemstone inlays. What about this Queen card? She's wearing gemstones on her necklace and crown.
Solution: Tag the cards that count as gemstones with a keyword, such as Gem. Or an icon of a gem, with a coloured background as an added identifier. (For accessibility, you wouldn't only use colour, of course.)
Then you can write "Discard all non-Gem cards." And on another card, you can write "Draw a card. If it's a Gem, play it immediately."
When you use consistent and well-identified terms to classify game components, you get to just use those terms in all of your rules and explanations.
Say you've written this rule: "Give all of your weapon cards to your opponent."
It's not bad, but it's a lot of words to communicate a simple action.
Solution: Tag the cards you want to be weapons as weapons, and identify in advance . Then you can write "Pass Weapons to your right" (accounting for multiplayer) or "Pass Weapons to your opponent."
Sometimes when you're designing a game, everything looks pretty flat. A card's a card. It has some value or some effect, just like this other card has a value or effect.
Sit back for a moment and force yourself to provide metadata about the components you're using. Maybe you've got cards that harm an opponent. Some steal resources, others prevent them from gaining new resources, others deduct victory points that they've won, and so on.
You also have cards that grant extra power to the player. Some add power to an attack, others permit drawing new cards, and others restore lost victory points.
Finally, you have cards that cancel other cards.
When you refer to them in rules, maybe you say things like "cards that harm your opponent" and "cards that grant you power" and so on. I've already described how that's too verbose, but ignoring that, it does get the idea across.
Extrapolating the mechanics described, you actually have this (I'm using arbitrary tag names):
Now you have types of cards instead of just a bunch of cards that happen to have effects. Because you've got tags, you can combine card concepts, and maybe even play around with new rule ideas. For instance, what if Zap cards could be played any time, so that not only do you block incoming harm to yourself, but you could also block benefits a player is attempting to apply to their own hand? You could design Curse, Bless, and Zap cards, but also Zap Bless and Zap Curse and maybe even Bless Curse.
Come to think of, in the inevitable expansion set, you could introduce new tags. You could create a Reverse cards that transform curses into boosts and boosts into curses (and because you have tags, you can make it clear that Reverse cards have no effect on Zap cards). You could add in a Boost card that makes Curse and Bless stronger.
Or maybe you don't want to classify the cards the way I did. Maybe instead you see a card that does harm or good as a Spell, and a card that cancels out an action as a Counterspell. How does that effect your design? What kind of new abilities does it give you as the designer when referring to cards and actions?
And so on.
Suppose you have four card types in a card battle game you're designing:
It's a common setup, but try tagging them. You might come up with interesting attributes you hadn't noticed before.
For instance, I see two Weapon cards (Clubs and Swords) and two Wealth cards. Could it be that there's an alternate win condition hiding in these tags? Maybe the player who deals enough damage with Weapon cards wins, unless a player captures 20 Wealth points first.
Another way to look at it is that diamonds and clubs are both natural elements (assuming diamonds are diamonds and clubs are big sticks you hit people with.) Swords and cups are crafted, often of refined metals. Is this a game about druids fighting knights? Maybe swords are more effective against clubs than they are against diamonds, and maybe diamonds provide a magical boost to druidic spells.
Another angle: Swords and diamonds are items of refinement, while clubs and cups (assuming rough-hewn cups from wood, and crude clubs) are things of simple craftwork. Maybe there are new card types waiting to be introduced, such as cards that benefit the peasants weilding clubs, and other cards that benefit the feudal lords bearing swords.
What started out as four card types from a standard Poker deck now has classification and identifiers you can leverage in your design.
You can always remove tags as you refine your game, but if they're not there in the first place, then you might be missing important elements of the game that would require a complete overhaul when you finally pick up on them later. Tag early, and tag often.