So my games a third person space shooter and coming up with an intuitive targeting has constantly been a challenge. Since I use an elastic third person camera algorithm, the camera may not always be right behind the player and an ordinary crosshair does not work (shot will not go where you point).
I first experimented with a 3d crosshair, and while it looked half-decent and fulfills player expectations for some sort of targeting aid I found it did little to actually aid targeting as the target direction is actually an angle across the screen not a single point.
After I was unsatisfied with this approach and was trying to cut down on UI chrome I ripped out targeting completely for quite a while (no crosshairs or other aids, just the radar). While you eventually got used to figuring out where your shots would go, it was now virtually impossible to shoot fast enemies at a distance because of how difficult it was to lead the shots appropriately.
So I switched to another targeting cue, this time I use color-changing targeting cues on each ship that turn green when targeted, red when not (yellow is a transition color since the colors are linearly interpolated). This accounts for the amount you need to lead your shots, and seems to work well in almost all scenarios in terms of actually aiding targeting.
However, when I sat a few of my friends in front of this game, nobody intuitively knew what the targeting aids meant. Since they don't light up green when you point at the enemy because you need to lead your shot it's not exactly intuitive. Further, it seemed the yellow color may have added to the confusion (perhaps I should just do a hard transition from red to green).
Then there's the inaccurate weapons. Some weapons (e.g. missiles) are by-design somewhat inaccurate, have non-linear velocity, or carry the players velocity into the shot somewhat. While the latter two can be accounted for by messing with the predictive equations, due to inaccuracy, even if you've done everything correctly and it lights up green you may miss (you also may miss if the enemy takes evasive action).
While I could probably explain targeting in a tutorial stage, I'm wondering if I'm just better off without targeting aids at all and maybe I should just do away with the UI chrome for targeting and leaving it up to the player to figure out.
How do you feel about targeting aids? Is there another option that might work besides the ones I've already explored?
It is possible to go completely without targeting aid, but if you want to do that, it should be a clear design decision, not just because you couldn't get it to work. Since we can assume that a race which develops space-fighters could also program some basic auto-targeting systems, you're already tuning it down. It'd valid to say you want your player to go Skywalker all the way and do the entire targeting by hand, but, as I said, that should be because you want to, not because you have to.
If you don't want to do that, I'd go with the 3d crosshair since that is what was understood faster (according to your tests) and even if it's unprecise, a beam is already way more specific than the entire screen as target area.
I can think of two ways to improve it's usefulness in targeting.
A: actually draw the beam (a thin and subtle style would suffice) and have it simulate the behaviour of a light beam: generally, it goes to infinity (or the edge of your screen), but if it hits something, the beam gets interrupted, clearly showing what you're aiming at.
B: take advantage of the "3d" in 3d crosshair. Keep the two crosshair as main indicators, but add smaller crosshairs in the distance for the closest enemy to your aim-beam / all enemies closer than x to the aim-beam. The math I'm talking about would be (since I'm not sure it was clear what I meant and your post looks like you'll be able to visualize this):
1. get your aim's vector
2. calculate distance of the enemies to that vector
3. get closest enemy / all enemies closer than x to the vector
4. for each enemy, calculate the nearest point that lies on the vector
5. add a small crosshair at that point
Considering what you've written so far, this shouldn't be too hard for you to implement.
Hopefully this helps you out a little,
Edited by Tobl, 25 November 2012 - 05:31 PM.
Think my post was helpful? Want to thank me? Nothing easier than that: I sure am are a sucker for reputation, so just give it a little keycode 38 if you like. ^^
Have you looked into how other flight sims do this? From memory (I don't really play them) it's something like a circle and a small crosshair and when they crosshair is inside the circle you've got the target locked.