My latest exercise is to take take a modern FPS and remove the entire HUD from the UI layer without losing any information. The first element to tackle is the ammo counter.
So what information does the ammo counter need to relay to the player? If I have an energy weapon or a minigun with a massive clip, do I need to know exactly how many bullets I have left? Probably not, I’d prefer a progress bar. However, if I had a bolt-action sniper rifle then I would want to know exactly how many bullets I have left. We don’t want to solve this with 2 different solutions and we don’t want to display information we don’t for one or the other. The solution is the best of both worlds, a dynamic segmented progress bar:
Assuming the top bar is our minigun example, I can’t quickly decipher exactly how many bullets I have left but I know it’s roughly 25% and that’s all I need know. The bottom bar is our sniper rifle and even with the bar in my peripheral vision, I can quickly tell I have 2 shots left.
Now, things get tricky when you factor in your extra magazines. I like the idea of keeping it all in one bar to keep simplicity by nesting the segments like so:
Although I like this solution, it doesn’t scale well if you have 3+ mags. It’s at this point I start to question how useful that information is, why do I need to know that I have 17 mags in my bag? The truth is that I probably don’t, at most I need to know if I have another mag after my current one in empty. That’s a binary value, do I have another clip or not. A binary value is a lot easier to display, but I digress, let’s move past that issue for now and move onto actual implementation…