Battling the Blob: How We Ruthlessly Cut Features to Save Our Indie Game
It was a drizzly Tuesday evening in our cramped London flat, the kind where the cost of living crisis makes you hyper-aware that every kilowatt-hour of electricity is burning through a rapidly dwindling budget. We were staring at a build of our browser game prototype that took nearly four minutes to load. The UI was a labyrinth. The crafting system, which we’d publicly hyped in our indie game devlog just a fortnight prior, crashed if you combined a stick with a specific shade of blue mushroom. That was the moment the gut-punch landed. We weren’t making a game anymore; we were nursing a bloated, unshippable creature that was devouring our savings and our sanity. We had to pick up the scalpel.
The Sunk Cost Fallacy in Our Prototype Phase
The heart of our problem wasn’t a lack of skill, but a surplus of misplaced love. During the initial prototype, we became obsessed with a complex alchemical crafting system. It wasn’t just mixing potions; it involved planetary alignments, material purity percentages, and a runic language we invented from scratch. We spent six weeks perfecting the logic, telling ourselves it was the unique selling point that would get us noticed at the next London indie meetup. Deep down, we knew it was a confusing mess, but we’d poured so much sweat into the code that abandoning it felt like admitting defeat. According to a recent UKIE report, the average indie development timeline overruns by nearly 40%, and looking back, our over-engineering was a textbook case of self-sabotage.
When a Feature Becomes a Pet Project
The alchemy system had stopped being a game mechanic and had become a pet project. We were adding layers of complexity not because they made the browser game more fun, but because they were intellectually satisfying to solve. We’d stay up late, not to squash bugs in the core loop, but to debate the thermodynamic properties of fictional elements. It was the kind of niche rabbit hole that reminded us of the obscure demon door puzzles in the classic British-developed game ‘Fable’—wonderful in isolation, but only working because they sat on top of an already solid foundation. We didn’t have a solid foundation yet. We had a chemistry simulator stapled to a walking simulator.
Calculating the Real Cost of ‘Just One More Fix’
The phrase “just one more fix” was a siren song leading us onto the rocks. We calculated the real cost not just in time, but in opportunity. Every hour spent trying to make the runic interface parse player input correctly was an hour stolen from the actual gameplay. We were months away from a viable product, and the financial pressure of the UK’s economic squeeze meant we couldn’t afford a hobby project. We needed a sellable game. The prototype had to pivot from a technical showcase of what we *could* code, to a tight experience players would actually pay for.
Death by a Thousand Paper Cuts: Identifying the Bloat
Once we admitted we had a problem, we needed to find the tumours. We sat down with our entire indie game devlog history and mapped every single feature we’d ever mentioned or built against the game’s core pillar: “A fast-paced, replayable tactical brawler.” The disconnect was staggering. We had a deep fishing mini-game, a relationship tracker with non-playable characters, and a dynamic weather simulation that would have made a meteorologist weep. None of them helped you punch an enemy in the face. We had fallen into the trap of adding ‘stuff’ to mask the fact that the core fight mechanics weren’t yet sharp.
Auditing Against the Core Pillar
We printed out a list of every mechanic and stuck it on the wall. With a red marker, we brutally crossed out anything that didn’t directly support the “tactical brawler” fantasy. The fishing? Gone. The friendship bracelets? Gone. It was a bloodbath, but a necessary one. We were inspired by a recent trip to the National Videogame Museum in Sheffield, where seeing the stripped-back, pure gameplay loops of retro classics reminded us that fun doesn’t come from feature lists; it comes from a perfectly tuned core interaction. We were suffocating our game under a pile of bullet points.
The Weather System That Had to Go
The most painful cut was the dynamic weather system. It was technically brilliant. A low-pressure system would roll in, realistically affecting visibility and leaving puddles that could conduct electricity. But in a fast-paced brawler, the player was moving too quickly to notice the subtle atmospheric pressure changes. It was a beautiful piece of simulation that didn’t serve the fun. It was a feature designed for a slow-burn role-playing game, not our browser game prototype. We were forcing a Tomb Raider-esque isolation atmosphere into a game that needed to feel like a bar fight.
The Cold, Hard Feature Triage Meeting
With our red-stained list, we called a team meeting that felt more like an intervention. The atmosphere was tense. We knew we were about to kill our darlings. To stop the conversation spiralling into subjective arguments, we introduced a strict priority matrix. We plotted every remaining feature on a graph with axes labelled ‘Impact on Core Fun’ and ‘Implementation Effort’. Suddenly, the arguments stopped. The alchemy system, which required high effort but had low impact on the brawling, was mathematically doomed. It wasn’t personal anymore; it was just a dot in the wrong quadrant.
Separating Ego from Evidence
The matrix was the best tool we’ve ever used for conflict resolution. It removed the ego from the equation. One team member had spent weeks on a complex enemy armour degradation system. When plotted, it sat firmly in the ‘high effort, medium impact’ zone. The data made the argument for us. We weren’t saying the code was bad; we were saying the numbers proved our time was better spent elsewhere. This cold, hard approach is something we now preach at every London game dev gathering, especially at the Loading Bar meetups in Dalston, where post-mortems over a pint often reveal the same universal truths about scope creep.
Introducing the ‘Post-Launch’ Bargaining Bin
To soften the blow, we created a ‘Post-Launch’ bin. This wasn’t a graveyard; it was a promise to ourselves and our community. The fishing mini-game and the weather system went there. It allowed us to say “not now” instead of “no forever.” This psychological trick stopped people from clinging to their work. It gave us a clear, clean slate for the vertical slice we needed to finish. The bargaining bin saved our morale, even if we secretly knew most of those features would never see the light of day once we started reacting to real player feedback.
Surgical Removal: Cutting Without Breaking the Build
Deciding to cut is one thing; physically ripping the code out is another. Our biggest technical challenge was removing a half-finished synchronous multiplayer mode. We had promised a cooperative experience in our indie game devlog, but the netcode was a nightmare, and the UK player base for a niche browser game simply wasn’t large enough to sustain matchmaking. However, the multiplayer logic was woven into the very fabric of the player controller. Pulling one thread threatened to unravel the entire single-player experience.
Unravelling the Spaghetti Code Safely
We couldn’t just delete the files. We had to perform surgery. We spent three days tracing dependencies, isolating the network tick rate from the local game loop. It was a painstaking process of commenting out large blocks, running the game, watching it crash, and slowly stitching it back together. The goal was to leave the single-player movement feeling exactly as it did before, just without the invisible ghost of the network manager trying to sync a second player who wasn’t there. It was tedious, but the alternative was leaving dead weight in the browser game that would cause untold future bugs.
Why We Tested More After Cutting Than Before
Paradoxically, we spent more time on quality assurance after the cuts than we did during the entire bloated feature-building phase. We ran rigorous regression tests on every single level. We checked hit detection, enemy artificial intelligence pathfinding, and menu navigation. A removal isn’t free; it leaves scars. We found that removing the multiplayer had subtly broken the pause menu because the game was still trying to check for a ‘host’ privilege. It was a stark reminder that cutting scope requires just as much discipline as adding it, if not more.
The Postmortem: Did We Cut the Right Bits?
Weeks later, we released the streamlined prototype to a small group of players from our UK community. The silence before the feedback was terrifying. Had we gutted the soul of the game? The response was a wave of relief. Players praised the “snappy” combat and the lack of “faff.” They didn’t miss the alchemy because they never really understood it in the first place. The death of the weather system went completely unremarked. It turned out that nobody plays a brawler to check if it’s raining.
Community Reaction and Silent Relief
One comment on our devlog stood out: “It finally feels like a game, not a tech demo.” That was the silent relief we needed. We had been holding our breath, terrified of backlash for cutting announced features. Instead, we found that players are far more forgiving of a focused, polished experience than a messy one that tries to do everything. The cost of living crisis had forced our hand, but it forced us to respect the player’s time and money. They didn’t want a sprawling, broken epic; they wanted a tight, replayable browser game that worked.
Lessons Learned for Our Next Game Jam
We’re taking these hard-won lessons into our next game jam. We now start with the ‘cut’ list before we write a single line of code. We define the core pillar and guard it with our lives. We learned that the most creative act isn’t dreaming up a complex feature, but finding an elegant way to evoke the same feeling with a simpler system. We stopped trying to be the next ‘Fable’ with its sprawling systems and started trying to be the best version of our own small, focused idea. The scalpel is now the most important tool in our kit.
Cutting scope isn’t a failure of creativity; it is the most disciplined creative act in game development. It is the process of chipping away the stone to reveal the statue underneath. We started with a bloated blob of code and a trail of broken promises to our community. By making the hard cuts, we salvaged a shippable game from the wreckage of our ambition. We didn’t just save our browser game prototype; we saved our team. The result isn’t a compromised vision, but a refined one, finally sharp enough to cut through the noise.
FAQ
How do you know when a feature is just bloat?
We use the ‘core pillar’ test. If removing a feature doesn’t make the core gameplay loop worse, it’s probably bloat. If you can describe your game without mentioning that feature, it likely isn’t essential to the player’s fun.
Isn’t cutting features a waste of development time?
This is the sunk cost fallacy talking. The time is already spent. The real waste is throwing more good time after bad trying to fix a feature that doesn’t serve the game. Cutting it frees you up to polish the mechanics that actually matter to the player.
How do you handle community backlash from cutting announced content?
Be honest and transparent. Explain *why* you cut it, focusing on the benefit to the overall game quality. Most players will forgive a cut if the final product is polished and fun. They are far less forgiving of a broken, bloated mess that tried to keep a dead feature alive.
What is a priority matrix in game development?
It’s a visual tool we use to rank features. We plot every task on a graph based on ‘Impact on Player Experience’ versus ‘Effort to Implement’. Anything in the ‘Low Impact/High Effort’ quadrant gets cut immediately. It removes personal bias and ego from the decision-making process.