My first proper game that wasn’t just me following a tutorial was Vampire Ltd. The idea of a vampire puzzle game had been knocking around my head for a while, and I’d had big plans for it - lots of locations and cool puzzle ideas. But I know myself well enough to know that if I had tried to do all this, I would have got bogged down and never finished it. Also, because I was aiming for IFComp, I wanted to be sure the game would be beatable in under 2 hours. So I scoped way down to a handful of locations and puzzles and NPCs to make the project manageable.
In doing so, I fell into an unexpected pitfall of over-scoping. What I thought was a 90-minute game turned out to be beatable in a casual 30 minutes, the puzzles were a little too easy, and in general I think a few people wanted a lot more game. But I got more positive feedback than negative, and the game placed pretty well in a crowded IFComp ballot. So I think going small was the right decision for me in the end.
I guess the problem I have with scoping is that it’s very delicate, and a little change can be way more dramatic than I think. If I add an object to my game - say, a sausage roll - I have to think of the context of the object (does the player just find it lying in the street? Do I need a sausage roll vendor NPC and a buy action? Do I need a bakery location?), the verbs the player may expect to use on it (do I let the player eat the sausage roll, meaning I need to let the player get another one if they eat that one? Throw it? Break it apart? Bribe an NPC with it?), and the potential interactions with other objects and NPCs that the player may want to explore (shouldn’t there be a special response to trying to give the sausage roll to the vegetarian NPC? Shouldn’t the sausage roll vendor notice if the player consumes 10 rolls, one at a time, right there in the bakery?). Likewise, removing an object may leave lots of ripples in a project that take forever to clean up (I want to remove the roll; now I need to clean up all the lines of code like “Instead of giving the roll to the vegetarian…” otherwise the Inform project will hang; now the bakery has no purpose so I ought to remove it too, which means removing the bakery from lists of rooms and changing the dialogue where your roommate asks you to go to the bakery…). It’s a lesson I’m relearning in my current project. Combinatorial explosion is a real killer if you’re not expecting it.