Quick answer: Floating damage numbers give players clear, satisfying feedback on hits, but they need pooling for performance, good motion and fading for feel, and restraint so they inform rather than clutter. Done well, they're a cheap, powerful piece of juice.
Floating damage numbers—the figures that pop up and drift away when you hit something—are a small feature with a big effect on how combat feels and reads. They give immediate, legible feedback on every hit, which is satisfying and informative, but they need care in performance, presentation, and restraint to enhance rather than clutter.
Numbers make hits feel and read clearly
Damage numbers serve two purposes at once: they're feedback that makes hits feel impactful—the number popping out is a satisfying confirmation that you connected—and they're information, telling the player exactly how much damage they did, which matters for understanding combat. This combination makes them a high-value piece of juice: they enhance game feel while communicating useful information, all from a small element. A hit with a satisfying number popping out feels more impactful and is more legible than the same hit with the health bar silently ticking down, which is why damage numbers are so common in combat-focused games—they make the core action of dealing damage both feel better and read clearer, reinforcing the feedback that makes combat satisfying.
Performance, motion, and restraint are what make a damage number system good rather than a mess. Because many numbers can appear in quick succession, they need pooling—reusing a set of number objects rather than constantly creating and destroying them—to avoid the allocation churn that causes stutter, especially in number-heavy combat. The motion and fading are where the feel comes from: numbers that pop out with a little scale, drift upward, and fade away feel satisfying, while numbers that just appear and vanish feel flat, so applying good easing and animation to their motion is what makes them juicy. And restraint matters because too many numbers, too large, in too many colors, clutter the screen and obscure the action—so the system should present numbers clearly but not overwhelmingly, sized and styled to inform without dominating. A damage number system built with pooling for performance, satisfying motion for feel, and restraint for clarity turns a simple idea into a cheap, powerful enhancement to how combat feels and reads.
The player doesn't see what you see
You know where to click, which path works, and what every system is supposed to do, because you built it — and that knowledge makes you the worst possible judge of how your game reads to someone encountering it fresh. The confusion you can't feel is exactly the confusion that costs you players.
This is why fresh eyes are so valuable and so uncomfortable: they reveal the gap between the game in your head and the game on the screen. Put your work in front of people who've never seen it, watch where they stumble, and treat that stumble as information rather than as their mistake.
Default to the boring, robust choice
It's tempting to reach for the clever, novel, or technically impressive solution, but in production the boring choice — the well-understood approach, the proven pattern, the simple implementation — is usually the one that ships and keeps working. Cleverness has a way of becoming the bug you're debugging at 2am six months later.
Save your novelty budget for the things that actually make your game distinctive, and be conservative everywhere else. A game built on robust, unremarkable foundations is one you can keep building on, while one built on clever fragility is one that fights you the whole way.
Make the common case effortless
Most of what a player does, they do over and over, and most of what you build will be exercised in a handful of common situations far more than in the edge cases. Optimising the rare and neglecting the frequent is a reliable way to make a game that's technically complete and practically annoying.
So spend your polish where the volume is: the action repeated a thousand times, the menu opened constantly, the path every player walks. Making the common case smooth and satisfying does more for how the game feels than perfecting the corners almost nobody reaches.
Protect the thing that makes it special
Every game that connects has some core spark — a feeling, a mechanic, a tone — that's the real reason people love it, and that spark is fragile. In the rush to add content, fix problems, and respond to feedback, it's easy to sand away exactly the quality that made the game worth making in the first place.
Know what your spark is, and guard it. When a change threatens the thing that makes your game distinctive, that's the change to question hardest, because a game can survive plenty of rough edges but rarely survives losing its soul.
Why finishing beats perfecting
The hardest skill in indie development isn't any particular technique — it's finishing. Most games that never ship didn't fail on talent; they failed on scope, polished forever, or chased one more feature. The developers who build a real body of work are almost always the ones who got good at choosing something small enough to complete and then completing it.
That's worth keeping in mind here, because it's easy to let any one part of development expand to fill all your time. Decide what 'good enough to ship' looks like, protect that line, and treat the endless list of possible improvements as a backlog rather than a set of obligations.
Damage numbers make hits feel and read better. Pool them, animate them with good motion, and keep them from cluttering.