Let me start off by saying how embarrassed I am that I accidentally screencapped someone’s comment and put it in another article. I was quite tired when I finished that article, and mistakenly screencapped the comment as it’s shown in the backend of the site, and to be clear, you don’t have to put in a valid email when you comment. Nevertheless, there is no excuse for that, and I apologize to the user.
With that out of the way, I am once again asking for your emotional support as I rant about Halo 2’s jackal snipers.
I am far from the first person to rag against hitscan enemies in shooter games. Many have argued that they exist as an unfortunate byproduct of an early 2000’s push for “realism.” After all, the original DOOM had you fighting an assortment of demons on Mars. Duke Nukem 3D was a parody of 80s action movies. Blood saw you fighting as a resurrected devil worshipper and even had a voodoo doll as a power weapon. Heretic, Hexen, System Shock, Marathon, Quake, Unreal, Descent, and just about every other mid 90s FPS game was sci-fi, fantasy, or just plain cartoonish enough to be entirely unconcerned with realism over gameplay. Even Half Life, the progenitor of walking sections and psuedo-interactive non-skippable cutscenes still had a mostly alien collection of enemies, and finished with a boss fight against a weird alien fetus thing.
I guess it was natural that, as our ability to render realistic 3D graphics improved, there’d be a desire to start fighting contemporary, realistic soldiers. Unfortunately, real soldiers carry real guns, which fire projectiles which only Neo could dodge. This tends to result in gameplay that is both boring and feels cheap, even when hacks are added, such as Half Life 2’s enemies always intentionally missing their first few shots. At least Valve gave some concession towards the player.
That’s more than can be said for Halo 2’s Sniper jackals, which are the ultimate form of lazy, uninspired hitscan enemies. Their range is infinite. They kill in one shot. They do not telegraph their attacks or position in any way, shape, or form. They shoot at you 0.5 seconds after they themselves spawn. There are no actual tactics or strategies that you can employ against them. No higher level thinking. Either you have memorized their spawns, or you die.
This is in stark contrast to even vanilla, basic, projectile based enemies, provided that their projectiles aren’t so fast that they effectively become hitscan weapons themselves. With any reasonable tuning, there will be a certain no escape zone close to the enemy where, should they target directly at the player, no amount of strafing will dodge their incoming projectiles, and the player will be hit. Immediately outside of this zone if the player moves perfectly orthogonal relative to the direction of the incoming projectile, they will just barely miss.

PC well outside of the NEZ zone, so the projectiles miss by quite some distance. Exaggerated.
The player still has an incentive to move further away, since this eases the strafing requirements, making it so that they don’t have to move perfectly perpendicular to the enemy, and have more effective freedom of movement. The player must weigh that additional distancing with other positional concerns.
While this may make one individual enemy trivial, that’s not a problem. Even the addition of just one more enemy massively complicates the situation, as the strafing/dodging done relative to one enemy may be worthless relative to another. In the below image, the PC strafing left does nothing to avoid the incoming damage from the enemy to his left. As a result, there is an implicit demand for the player to be manipulating the positions of the enemies before they put themselves in bad situations, such as below.
The real zone where the player can avoid both enemies is something like what we see below. Cover is still important with projectile enemies, because putting some cover in between some of the enemies, such as the one in the bottom left, allows the player to more efficiently dodge the incoming fire from other enemies. With projectile enemies, the player weaves their way through cover. They do not need to simply hide behind cover until their health regenerates and pop out for a few shots. Also, the player can be given some small amount of shields, or regular health, and can make real choices in terms of how to spend these limited resources tanking damage.

Imagine some cover between the player and bot-left enemy. Now perfectly safe again.
Also, projectile weapons need not make one individual enemy trivial, provided that enemy aggressively closes distance, or has other options such as throwing grenades, to provide a challenge. Besides that, incoming projectiles give away the position of the enemy, and look interesting.
Hitscan weapons don’t have any of these properties, at least not naturally. No matter how far away from the enemy the player puts themselves, or how hard they strafe, they’ll still be hit. As a result, all the player can do is tank the damage, or hide behind cover that protects them from all enemies simultaneously. Designs that combine this with a long range weapon in the hands of the player and automatically recharging health tend to degenerate into a boring, static, and repetitive game of peakaboo. Pop out of cover for half a second, take a few potshots, wait for your health to regen. Do this over and over.
It is true that we can program hitscan enemies in such a way that they regain the properties of projectile based enemies. Get them to fire at the player with some latency in their targeting, such as half a second. This lets the player strafe around the incoming fire as if it were projectiles. We can even program this delay to decrease to nothing as the player gets close to the enemy. Combine these two techniques together, and the behaviour of our hitscan enemies is the same as our projectile enemies. Nevertheless, if the best that we can say for a hitscan enemy is that, with some careful programming, they behave just like a projectile enemy, it begs the question of why bother?
Additionally, while I think this is a minor concern, almost all design attempts to mitigate the issues with hitscan enemies end up making them feel even gamey-er than projectile enemies. Players will quickly figure out that the enemies are deliberately targeting behind the player. Or that they’re programmed to miss their first shots. Or to occasionally miss randomly, or whatever else the devs come up with.
Of course, EEI does have one hitscan enemy, in the form of the sniper, but great pains were taken to make sure that he telegraphs his attack. A very obvious line is drawn from the sniper to the player. Over the next three seconds it progressively turns more and more red. Finally, if the player is still visible, the sniper fires. At any moment, if the player breaks line of sight, the charge stops.
Additionally, the sniper has a very low turn rate when aiming. This can be exploited, as the apparent lateral motion of the player is higher when they are closer. Think of it similar to the optical illusion of the mountains in the background appearing to move slower than the pavement right beside your car.
As a result of this, there’s a sort of reverse no escape zone, where if you strafe within a certain distance, the sniper can’t rotate fast enough to attack you, provided that you’re moving directly orthogonal to them. And within the over rotation zone, the closer we get to the sniper, the less we need to focus on moving directly perpendicular to them.

Sniper can’t keep up with lateral motion when the player is close.
All of this is very different from some Jackal Leet no scoping you from halfway across the planet.
While I’m on the topic, let me rant about Halo 2 a little more.
Jamie Griesemer was the lead sandbox designer for Halo:CE, and Halo 2. He’s most famous for uttering the “thirty seconds of fun,” soundbite that people have long inverted the meaning of.
“In Halo 1, there was maybe 30 seconds of fun that happened over and over and over again, so if you can get 30 seconds of fun, you can pretty much stretch that out to be an entire game. Encountering a bunch of guys, melee attacking one of them before they were aware, throwing a grenade into a group of other guys, and then cleaning up the stragglers before they could surround you. And so you can have all the great graphics, and all the different characters, and lots of different weapons with amazing effects, but if you don’t nail that 30 seconds, you’re not gonna have a great game.”
Griesemer did not mean that a game can mindlessly regurgitate the exact same thirty seconds, only that the second to second gameplay fundamentals should be sound enough that minor variances keep the player interested. The quote would be less misunderstood if he’d said that Halo:CE’s combat was so sound that it could sustain the game without random gimmicks, but then it probably wouldn’t be so infamous.
Griesemer gave numerous talks explaining the design process of the Halo series. They’re detailed to the point of autism.

Yeah, it’s real.
Not particularly relevant to the hitscan discussion, but his “The Illusion of Intelligence,” talk, which you can watch on YouTube here, contains a few gems. For example, they gave playtesters two different versions of the enemies. The behaviour was the same with both groups, but one set of enemies did much more damage and had more health. Playtesters gave those enemies much higher scores for intelligence than the group of equally intelligent but weaker enemies.
He also does a great job visually showing the necessary integration between level design and AI, something that I’ve tried to explain before on this site.
There is a programmer fantasy, wherein one can write some genius algorithm where the AI dynamically looks at the scene and figures out the most fun/intelligent behaviour. In reality, you have to manually place lots of hints throughout the level, and handcraft the behaviour for each scenario/arena, at least to some extent. I do this most undeniably with the sniper enemy, which cycles through a variety of pre-determined sniper locations.
He also reminds us that giving the enemies personality, possibly in the form of interesting combat dialogue, is more important than actually making them intelligent.
Griesemer also touches on the constraints of the original Xbox. A 733 MHz single core Pentium 3 was fast for the time, but these were still the days of CPU performance drastically limiting design.
This became critical for Halo 2, as their original plan called for many more enemies than they ended up being able to put on screen at one time. Their plan also called for more cover, which they couldn’t put in the game because of pathfinding constraints. As a result, they needed to crank up the difficulty of each individual enemy.
Which brings us to this talk by Griesemer: “Design in Detail: Tuning the Muzzle Velocity of the Plasma Rifle Bolt on Legendary Difficulty Across the HALO Franchise”.
As a child I had beaten Halo:CE on legendary so often that I decided to start Halo 2 on legendary. I might have died twenty times in the very first fight in Cairo Station, in no great part due to not recognizing that Halo 2 had secretly decided to be a cover shooter. On the highest difficulty, the projectiles move 2.5x as fast as on normal. As a result, when combined with the cramped arenas, you simply cannot dodge incoming fire, as the elites, brutes, jackals, and even grunts are, for all intents and purposes, firing hitscan weapons.
In the below slide, Griesemer makes a good distinction between difficulty and challenge. For example, climbing without a rope is just as easy as climbing with a rope, only the consequences are raised. Similarly, if a good player can trivially circle strafe around the enemies without taking damage, then it doesn’t matter if we crank the damage of any individual projectile bolt up to insta-kill, it’s still just as easy.

He’s talking about the slow, but very damaging projectile version.
I can understand why they made this mistake, but boy was that ever a swing and miss. Sure, with relatively slow projectiles, it’s going to be possible in some scenarios for the player to avoid all damage through strafing. Sure, technical reasons prevented them from just adding more enemies. But as I’ve already shown, even one additional enemy massively extends their effective reach. They did not need to make the projectiles so fast that even the elites are effectively hitscanning you from across the map.
I’ve referenced the below video before, because I almost completely agree. The final result of the hitscan enemies in Halo 2 is that the player lacks practical options. In Halo 2, you simply need to use “hard pings” such as sticky grenades, or headshot weapons to kill the enemies as fast as possible before hiding behind cover again. This is true whether or not jackal snipers are present. Even the needler went from totally dodgeable in Halo:CE, to a completely unavoidable murder machine in Halo 2, yet it’s difficult for the player to make use of this weapon since they die so quickly out in the open.
Halo 2 is not the worst designed game of all time, but Halo:CE was a great foundation to build upon, and they trashed it. It’s the gaming equivalent of some smoking hot girl gaining 200 lbs, shaving her head, and getting face tattoos. Sure, she might still be fuckable, but the lost potential makes me cry.
In hindsight, I understand where they were coming from. Due to performance reasons they could only have a few enemies active at any one time, and they cranked up the wrong nobs when tuning the individual enemy difficulty. They messed up, but shipping a game is tremendously difficult. Everyone gets a mulligan.
Nevertheless, that painful experience of twelve year old me getting curb stomped over and over again by those entirely unfun enemies left such a lasting impact that I rejected hitscan – or effectively hitscan – enemies out of hand. And yet, after numerous reworkings, I decided to give the cops hitscan weapons after all.

Stunning them opens them up for further attack.
They riot police carry shields which have a small amount of health, yet you can melee/grenade through them. As a result, there are always interesting choices being made in terms of offense when they are present. Do I rush and melee them? Do I use a precious grenade? Do I bite the bullet and work my way through their shields with long range fire? Do I ignore the enemy for now and circle back to them later?
That part of their design worked from the beginning, but their own attacks left me dissatisfied. I started with a standard projectile attack, and it didn’t work. The main point of the flanking behaviour I gave them was to shut down mindless circle strafing. Unfortunately, most of the time the small hitboxes on the projectiles and the relatively low speed meant that the player could still circle strafe around them, unless they were in the absolute perfect position.
I tried a bunch of different solutions. First, I made the projectile that the cops fire extremely wide. Unfortunately that is visually unclear, since the shape of the projectile helps the player quickly determine its velocity. Then I made them fire two bullets side by side, such as you see above. But that can lead to multiple bullets hitting the player if they’re too narrow, or the player squeaking through the middle if they’re too far apart. Also, the player kept being able to mindlessly strafe around the enemies in most situations.
Finally, I made the cops fires a stream of three projectiles, with the outer two streams somewhat angled out, to funnel the player. This didn’t work for a number of subtle reasons. The main problem is that dodging the outer streams felt random. The gaps were large enough that sometimes you could slip right through, and sometimes you’d be hit. This could be solved by massively increasing the fire rate, but then the damage often went through the roof as the player got hit by many projectiles in a row.
I took a step back, and reasoned that, if the point of the enemy was to get close to the player, maybe if they get within a certain range, they just do automatic damage. There are a number of ways to do that, but a hitscan taser makes more sense than a gigantic melee attack.
To make a long story short, it works, with some caveats. First, the cops stop moving when firing, preparing to fire, or preparing to move again. They take about a quarter of a second to fire the first salvo, and half a second to get up and start moving again. They return to the tracking state if line of sight is broken, or if the player moves just 10% out of the range that triggered the attacks. Should the player so desire, they can move within range, then move out of range, which locks the enemy down for almost a full second. So there’s a lot of play here just on movement alone.
They do still get stuck in seemingly random areas though.