I once saw a children's video wherein a kindly matriarch Fay (really a dog in disguise) prepared Christmas decorations. She popped dozens of batches of popcorn to string, but would only select the very best. '7 perfect kernels per batch!' was Fay's rule. What a lunatic, amirite?
This is what's happening in this iOS game I've been working on for the last 2.5 years. It's called 100 Rogues. As principle (read "sole") software developer, I've done my very best to anticipate every possible, fever-dream induced, last minute, so awesome the game just can't live without it feature anyone on the team could dream up. Monsters that turn into other monsters, items that can, individually, be wielded as weapons, thrown as grenades, and eaten like candy. Switches that can open a door, teleport you through it, telefrag a rat when you get there, and automatically reanimate the corpse as a frankenstein's monster of the enemies you face elsewhere in the game, that fights for you. Totally possible.
One year after our anniversary, most of these capabilities have been used. Once.
Take, for example, energy potions. When time (finally) came to implement items, the requirement came down to have a few items have really weird effects, like energy potions, which should explode when thrown, or health potions, which heal whatever you throw them at, rather than deal damage. How far do you abstract something like this? More abstraction means cleaner code that allows other things explode similarly in the future, but the code has to be spread out over more files and classes and content development time grows because there's so much more to choose to do (or not).
In the end I chose to make an enumeration in the XML data format that defines items, with members Heal and Explode, with hooks to add more effects if needed later on. So far, out of well over 50 unique items and hundreds of possible variations, any of which could create an AoE explosion in response to different events, only 3 items in the game have an effect that uses those hooks, and there are only 2 unique effects between them.
But that's all the game has needed! An occasional opportunity to throw an item and deal massive damage as an area of effect, something few proper player skills allow you to do across all player classes. So, is it worth it to spend so much time on coding in a clean, abstract manner for every conceivable reuse of all combination of effects and features? Should only the perfect kernels be kept? Is it at all fair to then, after release, turn around and SELL new items that make full use of an engine's potential, but weren't deemed the most essential part of the first release? To accept money for items that might actually HURT the game's overall balance (whether or not we're aware of it), in order to keep ourselves afloat?
I, of course, say yes! I did the work, my job depends on it, me me me. So I'm going to make the flaming sword of some awe that shoots rainbows and lightning and magically teleports you when it crits if you're wearing +2 Ominous Pants of Binding. And you will LOVE paying $1 for it, even if I slapped it together in 10 minutes!
Of course, more care needs taken than that, and I have no intention of willfully taking advantage of players. I grow more and more impressed with the minecraft and dwarf fortress developers, though, for doing the continuous updates thing and NOT going crazy with these kinds of decisions, when the choice that's best for the game could mean LESS content and so much wasted potential for their carefully-designed systems.