Is it useful to display more than 10 enemies in the field of view in a FPS?

Hi!

I assume there are some people who have written FPS in Java here. Is it useful to display more than 10 enemies in the field of view in a FPS? I think that when there are 10 enemies in front of you, the screen is full or you don’t pay attention to the 10 enemies at the same time. Therefore I wonder whether it is important to optimize an engine to be able to do this and it depends on the complexity of the models.

However, I think it might be interesting when you’re in an aircraft or an helicopter and you are shooting guys on the floor.

I havent ever done an FPS, but It hinkt hat the guys lose quality as you get farther away AKA:flying in a helicopter

I think this question originates in a performance problem.

Regardless of the origin, if there are 20 enemies in the field of view, the engine MUST render them, otherwise you’ll have new enemies popping into view when you kill a few.

If rendering 10 is a problem, reduce the detail.

I think 10 enemies is rather few anyway. You can have rats running around, birds in the sky / on the ceiling, and then the occasional monster. You’ll reach 10 very quickly.

+1

I’ve always designed levels so there’s not too many NPCs on the screen at any one time, but it’s no fun without some big battles! My problem in Bloodridge was with large numbers of bullets and explosions causing drag…
It makes sense to design your system with a facility to reduce LOD with distance even if it turns out that you don’t actually need to use it.

I can’t coin having finished a fps in java but I have played (team) fps on a pretty decent level - tracking 10 ppl who aren’t even on your screen is typical (extrapolate their possible paths ~run speed from where they where last seen). As far as enemy on the screen go one can track quite a lot more, even ppl who are not blessed with that ability can still follow clusters/‘streams’ of enemies, so even while they can’t track them individually you need to see them all. Now even if you question those abilities(I believe some studies said they proved that ppl can’t track more then 3 things at once.) There is still the inability to determine which enemy the player is interested. Or rather the other way around: which one can you safely remove?

Stuff you can’t see you don’t need to render, so if they truly fill the screen: you are not going to render them to begin with. And with that it could just as well be just one enemy right in your face. 10 is not a magic number.

Reducing detail when stuff is further away (unreal engine among others does this from early on(it uses 2 radius’s, it’s pretty easy to spot in UT99 and you can also configure it I think in later versions they made it dynamic)) has little to do with a humans ability to track stuff. has to do with resolution and angles - you can actually prove it mathematically.

btw: seeing your allies is just as important with friendly fire on :wink:

yes what you want to do is LOD, also a possible optimisation in addiction to LOD, is to use occlusion testing before performing cpu/gpu costly stuff : first you can check if the surrounding sphere of an entity is visible and then if it is : select the appropriate LOD, animate it and render it.

Hi!

I agree with what has been said but, as far as I remember, in GoldenEye 007 on N64, there were rarely more than 8 enemies in the field of view and it was fun. However, Riven spoke about small enemies like rats; as it is less complicated than a human body, it is less a problem.

I think it depends on what kind of game you’re building. For a deathmatch oriented game, there rarely are ten people on the screen at the same time. (But as others have said, IF there are, you HAVE to render them.)
In more stealthy or realistic singleplayer shooters, the problem is much smaller since you can design the levels and ai to ensure that there never are that many people on the screen at the time, and it should rarely even be noticable unless you’ve got huge open maps.

If you’re making a more arcadey shooter, 10 enemies on the screen is far too little. Just look at games like Serious Sam, Painkiller and Doom. It’s all about quantity!

Doom was great because of the sheer number of gidrahs you got to waste, something where most of the newfangled 3d stuff falls down :frowning: So yes I can’t think of a way you can get away without rendering them…

… however for performance reasons you might want to cut the numbers before they get into the FOV in the first place (especially if you’re using that 70k poly model ;)). Something I did in Treasure Tomb, may it rest in peace hahaha, is that enemies over a certain distance of the player that can’t be seen in the FOV become “dormant” and effectively vanish. Should you subsequently move back into their vicinity they are respawned. You could do something similar here, only respawning if there are enough “visible slots” left.

What’d be best though is using a LOD algorithm on that model, and having it adapted to enemies being in front, angle of incidence as well as distance from the camera. If you’ve got a model that you reckon is taking up roughly half the screen right in front of the player I think you could get away with rendering quite a few monsters behind it at much lower detail than normal. I imagine you can have quite a bit of programming fun experimenting with the algorithm to get something that looks good and runs good.

Cas :slight_smile:

Left 4 dead is a good example to look at here.

On screen at once you can have 3 team-mates but you often also have 10, 20 or 30 zombies as well all rushing towards you.

I think it is pretty rare to have more than 20 but they certainly do a good job of giving that feeling of a horde rushing towards you.

The carnival level in Hitman 4 is pretty crazy too…

I think I will insert some restrictions in the artificial intelligence to avoid crowds of more than 20 enemies in most indoor environments and 100 in outdoor environments.

Back then when I was still into Q3 modding we got about 70+ fake bots on screen and the framerate dropped to 20fps on my puny 500mhz machine (+gf2mx). Real bots used to much CPU, but using those seriously retarded thingies worked fine.

Heh. Still got a screenie of that stuff. :slight_smile:

http://kaioa.com/k/npcd.jpg

You should watch this, around 1:05. This is possible on an Xbox360 GPU, which is quite outdated compared to latest $100 GPUs.

dynasty warrior series of games are also known for having hundreds of units on screen at once, just have a look at how many units it managed to draw on the aging PS2 hardware.

if I play BF2142. There are usualy more than 10 on my screen. unless I am running somewhere :wink:

In Demon Chaos (Ikusagami) on the PS2 (two!) there up to 65,535 enemies on screen at once.

Check this video: