The Arrows Know What a Kill Pays
Written later and filed to this date, as part of filling in every day of the year.
The arrows at the edge of the screen in my survivor shooter point at enemies that are off it, and there are never more than twelve. That cap is the first thing the file declares, right after the size of the triangle: a pool of twelve graphics objects allocated once, hidden, and handed out each frame to the twelve threats that matter most. The interesting part is how the file decides what matters, because the game has a perfectly good answer to that question and the arrows do not use it.
Every enemy type carries a category. Regular, elite, miniboss, boss, spawned-only: it is an enum, it is on every definition, and at the time nothing outside the roster file read it. The indicator manager imports none of that. It queries the world for anything with an enemy tag, a position and a type, skips whatever is inside the camera’s view, and for the rest reads one number: the experience the enemy is worth when it dies.
Thirty or more, and it always gets an arrow. A thousand or more, and the arrow is drawn in the boss colour and sorted to the front. Below thirty, a regular enemy gets an arrow only if it is within two hundred pixels of the edge, close enough to be about to matter, and those are sorted by distance after the expensive ones. The thresholds line up with the roster, bosses pay a thousand and minibosses three hundred, but the alignment is a fact about the current numbers, not a rule the code enforces.
So the arrows measure danger in reward. I think that is the right proxy and not an accident. Experience value is the one number the game already tunes to mean “how much is this thing worth your attention,” and it is tuned on every enemy, continuously, by whoever balances the roster; the category is a label assigned once. A new elite that hits hard and pays well gets an arrow the day it is added, without anyone remembering the indicator exists. The category would have required a decision in a file nobody opens for that reason.
The cost is the seam you can see. The manager has a constant called the miniboss threshold, set to thirty, and the actual minibosses pay ten times that; the name describes the intent, the number describes the roster at the time, and they will drift apart the first time someone retunes an elite. There is a sort comparator that re-derives “is a boss” from the same threshold, twice, for both sides of the comparison.
What the player gets is twelve arrows, bosses first, in the colour of the thing they point at, and the reduced-motion setting is honoured for the pulse. What the code knows is that something out there is worth a thousand.