• Register
Post news RSS New Crosshair

One would be surprised how difficult it is to make a third person shooter crosshair...

Posted by on

It's much more difficult to make a proper third person crosshair than one may think.

This is all about one of my little mottos, "perception is more important than reality."

Ruining the Magic Trick

In a typical first person shooter, such as Call of Duty, you have the crosshair at the center of the screen. When you shoot, the bullet always lands where your crosshair is. If you think about that for a moment in 3D space... BEHOLD AWESOME PROGRAMMER ART!

Number one above shows the player's sight line, where the blue line is essentially their crosshair represented in 3D space. We also see that in most first person shooters, typically the gun stays parallel to where the player is facing.

In number two above, we see that the art technically would need to be adapted to make it look/function realistically. The soldier should technically aim up (or down) a tad to line up with the player's crosshair. This is especially true the closer the target is, because the angle between the blue line and red line would be far more dramatic.

This problem is minimized a lot especially now that many shooters allow the player to "aim" down the sight, which makes the art line up even closer with the player's line of sight. I don't have a fancy picture for that, but simply imagine the gun being closer to the player's eye level. The slight line and firing line would be so close, no one would ever notice.

So what do most developer's go with? "Fake it." In image three above, we see what is actually happening in most first person shooters. Your bullets are actually fired... from your eyes. However, the player will never notice this, as the animations and art make it appear that the bullets are coming out of the gun. If you look very closely, you can sometimes see that the tracer path is actually no where near parallel with the gun.

If you're not a developer, you may be thinking, "Wow, this isn't realistic at all. Come on game developers, you suck, do it better." Well... I am being the bad magician and exposing how it all really works. I just ruined the trick for you. You never would have known otherwise. The fact is, the games play great, even though they are faking it.

This reinforces my motto: "perception is more important than reality."

Oh Gawd, the Lines! Lines Everywhere!

What about Avarice though? Now we're talking about multiple guns, at radically different positions, and to top it off... it's third person! I'm also not a big fan of "faking it." Things get really scary, really fast. So scary, I didn't even want to bother with a crosshair. (I had the same problem in Coniclysm.) Avarice didn't even have a crosshair for nearly a year. The funny thing is, I had few complaints; players learned to use their projectiles as a guide. But I knew, to reach a wider audience, I'd need a crosshair one day.

How scary is it? Very:

In number four above, it shows the sight line of the player in blue. Notice that it is originating from behind and above the player ship on the left side. Notice that there are three guns on this ship, and thus, three firing lines. If I had simply put the crosshair at the center of the screen, only one of the player's guns would have lined up with the enemy's cockpit, as the crosshair would have shown. Honestly, that was pretty lucky...

Image five shows the auto-aim feature, which I called "pivot" in-game. Most weapons will auto-aim as long as the gun is facing the enemy pretty closely (and you have a target lock!). the orange line shows what the gun would do if the angle was too great... it'd just fire straight forward. This works out well if the player can somehow line up their guns with the enemy, but the crosshair, if left centered on the screen, would actually be misleading them. As the target gets closer, the player would need to instinctively aim upwards, and aim down the further the target was. This was horribly confusing. Heck, you probably are having a hard time imagining this!

I actually played around with several solutions. None of them felt right. In fact, I was missing a lot more with a crosshair than without it. Even adding a Freelancer-style "aim here" X didn't help. The player becomes so focused on the crosshair, that they ignored everything else. A simple center-screen crosshair couldn't capture the complexity of Avarice: multiple guns, varying projectile speeds, infinite number of weapon positions, etc. The crosshair had to be pin point accurate, or else it was just a distraction, misleading the players.

Image six shows my solution. I don't place the crosshair at the center of the screen, instead, it MOVES based on the situation! The crosshair will always appear somewhere on the purple forward vector. That distance is determined by the enemy's distance from the player. The closer the target, the further down on the screen it appears. The further from the target, the further up on the screen it appears.

Most players don't even notice the crosshair moving around, since it is fairly subtle. The player is so focused on getting the crosshair to line up with the enemy, they'll naturally adapt. This new crosshair lines up well enough that I can snipe again. But, there are some issues not addressed:

1. It's lining up with the center of the ship. This means if you put the guns far away from the center, you're back in the same boat, except horizontally instead of vertically. To fix this, I will probably eventually add an option for the player to turn on a crosshair for every weapon, or weapons of the player's choosing.
2. As shown in image six, if you have multiple enemies, you need multiple crosshairs! To partially solve this, I hide crosshairs from enemies you have no chance at hitting.

This all shows... crosshairs can be harder than you think! :-)

New Crosshair

Want learn more about Avarice? Check us out on other networks:

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.