2024-04-19, 23:43 *
Welcome, Guest. Please login or register.

Login with username, password and session length
 
Pages: [1]
  Print  
Author Topic: Dead Bodies Stay  (Read 10241 times)
0 Members and 1 Guest are viewing this topic.
bengreenwood
 

Ogre
**
Posts: 53

« on: 2008-03-23, 21:50 »

Something I mentioned to Phoenix during a game once is the idea of having the dead bodies stay in Generations. Basically his response was that it couldn't be done in the original engine, but on the other hand, it probably could be done with IO Quake 3, it's just that using IO Quake 3 could make problems regarding compatibilty with vanilla Quake 3.

So anyway, I just thought I'd mention it here to see what other people think, because I think it would be an awesome feature for a later version of Generations- though obviously I'm not suggesting it be a priority or anything.

So what do other people think? Do you think it'd be cool to end up having players' corpses all over the map? I think it'd suit Generations well, because it'd be kind of reminiscent of Doom 2 maps like Suburbs or the Courtyard, that ended up as these awesome bloodbaths..
Logged
Thomas Mink
 

Beta Tester
Icon of Sin
***********
Posts: 920

HeLLSpAwN

« Reply #1 on: 2008-03-23, 22:43 »

Q1 was always littered with corpses (this was interesting in the original TF.. where if you killed a spy, you could watch his corpse to find out what he's disguising as since the corpse changed skins along with the player). If not corpses tho, it was heads.

But personally, doesn't matter to me either way. If it is implemented, it should be an option (if possible).. because you never know if someone is going to playing on dated hardware that can't handle so many corpses on the screen.. or if they just prefer they go away instead of adding clutter.
Logged

"Everybody's got a price" - 'The Million Dollar Man' Ted DiBiase
ReBoOt
Mean ol Swede
 
Team Member
Elite
****
Posts: 1294

WWW
« Reply #2 on: 2008-03-24, 00:32 »

i whouldnt mind the corpses to stay abit longer however having multiple bodies laying around everywhere will affect preformance in someway.
Logged
bengreenwood
 

Ogre
**
Posts: 53

« Reply #3 on: 2008-03-24, 16:34 »

I agree that it should be optional. Also about it affecting performance- well when I bought Quake 3, I had it running on a Pentium 2 300 with a voodoo 2, and it ran ok. Think about how many times more powerful than that people's computers are today! Maybe if you had like 50 dead bodies on the screen at once it might slow down a bit on some people's computers but I bet an up to date PC could handle that easily.

Also I think it would look awesome anyway, especially if you had the blood splats stay as well, that'd look spectacular. It would really give Generations a unique feel among today's games as being really hardcore, like Doom and Quake were.
Logged
ReBoOt
Mean ol Swede
 
Team Member
Elite
****
Posts: 1294

WWW
« Reply #4 on: 2008-03-24, 21:13 »

Well you also forget that many of the new maps/models has improved visual than the original quake 3 ones thus there will be even more pollies to render...

Logged
Thomas Mink
 

Beta Tester
Icon of Sin
***********
Posts: 920

HeLLSpAwN

« Reply #5 on: 2008-03-24, 23:54 »

Perhaps a limit to the number of corpses, instead of unlimited. Again, speaking from a Q1 perspective.. while there was a lot of corpses laying around the maps, they did go away after a certain number was reached. I dunno what it was tho. So maybe 25 or 30 max, then they start disappearing and replacing each other when that limit is exceeded.
Logged

"Everybody's got a price" - 'The Million Dollar Man' Ted DiBiase
Phoenix
Bird of Fire
 

Team Member
Elite (7.5k+)
*********
Posts: 8805

WWW
« Reply #6 on: 2008-03-25, 08:12 »

My response was that there is a hard limit to the number of entities available to Quake 3, of which corpses left behind after a player respawns are entities.  I will explain this again for the benefit of everyone participating in this thread since you neglected to include what I actually told you.

As long as a player has not respawned, their player entity is the corpse on the ground, but once they respawn a substitute entity called a bodyque is used.  There is a set number of bodyques, in Quake 3 this is limited to 8.  Most entities like projectiles are freed after use, so you fire a rocket, it explodes, it's done, and that entitynumber is free for the next entity that the server needs to spawn.  Some entities are never freed.  Client slots and bodyques are permanent, even if they are not in use at the time.  This is why Quake 3 sinks corpses into the floor.  It cycles the index of the bodyque each time a player respawns, so eventually that slot is going to get reused.  You cannot just leave corpses laying around because sooner or later the slot will get taken up again and the corpse is going to have to disappear anyway.  Having the corpse sink is a little more elegant than to just have it pop off the screen.

There's three things to consider about corpses.  First is the entity limit.  Bodyque is set to 8 right now.  Every entity used above that takes an entity away from the number available for the server to use.  The server has 512 server entities available for use.  Subtract out the following:

MAX_CLIENTS: - 64.
Bodyque: - 8
ENTITYNUM_NONE:  -1
ENTITYNUM_WORLD:  -1

That leaves 428 available to do the rest of the work, including items, powerups, etc.  Say a map has 8 health packs, 8 ammo packs, 5 weapons, and 3 armor.  That's down to 404, and that's on a small map.  This may not seem like a big deal, but have you thought about large terrain maps like mpterra2 and mpterra3?  Firing a high fire rate, slow velocity weapon like the Doom plasma rifle using the time accelerator across one of these maps is going to start using a lot of entities very quickly.  That's one consideration.  The second is that running out of entities is going to affect gameplay.  You're firing a weapon, but someone else is firing a weapon, and someone's shots are going to get removed or else not spawn because of the server needing to free entities to spawn new ones.  The third consideration is that leaving corpses laying around is going to affect gameplay.  In Doom and Quake, corpses were transparent.  Weapons did not explode on them.  In Quake 3, they are not.  Corpses trigger grenade and rocket explosions if they touch.  Say a player enters a room with 5 corpses in it, and he's down to 40 health.  I have a grenade launcher.  Hitting the moving player is tricky.  Hitting a corpse is not.  I can shoot a corpse with a grenade and the splash damage will hurt the player.  If the corpses had sank as in normal Q3, they might not be there for me to hit, forcing me to employ a more skilled attack against the player, which might give that player enough of an edge to take me out instead.

MAX_GENTITIES cannot be increased without rewriting the network code in Quake3.exe, which will break mod compatibility.  Increasing bodyque will take away from the remaining entities available to the server.  Increasing the time corpses remain on the level will result in instantly vanishing corpses once the bodyque cycles.  Now that the facts are on the table, feel free to continue discussion of this, but understand that I am probably not going to change my position on the matter.
Logged


I fly into the night, on wings of fire burning bright...
bengreenwood
 

Ogre
**
Posts: 53

« Reply #7 on: 2008-03-25, 13:29 »

Actually, Phoenix, that's why I mentioned doing it through IOQuake3. I understand, as you've explained here (and as you explained to me earlier), that you couldn't do it in normal Quake 3, because you need the entities for other stuff (especially if there were going to be enough corpses for Doom 2 style bloodbaths). That's also why I said it could be a low-priority thing for the future- because it'd probably be a bitch to put it in via IOQuake 3.

Just one thing though. You mentioned that you would need to re-write the netcode to have more dead bodies. Well, you also mentioned that the bodies in Quake 3 are not transparent. What if you made it so that they are transparent? Wouldn't that make the netcode much easier? Because if the bodies don't affect the gameplay, then it wouldn't matter if they disappear at different times on different players' machines, for example. And by easier I mean, easier to prevent breaking compatibility with other mods...
Logged
Phoenix
Bird of Fire
 

Team Member
Elite (7.5k+)
*********
Posts: 8805

WWW
« Reply #8 on: 2008-03-25, 15:02 »

I have the ioquake3 source, and the bodyque size is the same as in normal q3 - 8.  MAX_GENTITIES is the same as in normal Q3.  They did not change anything there, so the same problem exists with entity limits and network code.

As for making corpses transparent to projectiles... what you're talking about is making a corpse a localent on the client so that it does not use a server entity.  There's several problems with that as well, the first being that, again, there's a hard limit to the number of localentities available - again 512.  Localentities are used for local effects not explicitly linked to a server entity.  That would be things like smokepuffs from gunshots, ejected shell casings, non-particle rocket smoke, railgun trails, etc.  While I might be able to sacrifice a few localents, I would again run into the problem of gameplay consistency.  I would have to make all corpses unshootable, or else I'd be getting bug reports, as follows:

Bugreport1:  "Hey, sometimes I shoot a corpse and it gibs, and sometimes it don't.  What gives?"
Bugreport2:  "Hey, the [insert name of weapon here] isn't gibbing corpses"
Bugreport3:  "Something's broken/suchnsuch is cheating.  He shot a grenade and it hit a corpse and blew me up, but when I tried it my grenades wouldn't blow up a corpse.

You can see the problem there.  There's also extra code overhead as I'd somehow have to transmit corpse information to the client so the client could generate a corpse entity with all the proper data from the original client.  That means what player model and skin they're using, origin point, angle, animation frames, etc - all for a non-shootable dead body?  That's a lot of coding for something that's pretty trivial and would be better done another way if done at all.

Look, I'd like to be able to leave a gazillion corpses laying around like in Doom, but you have to understand that coding new things in is not an easy task, and it's not as simple as just wanting something and then making it happen, or we'd have been done with this a long time ago.  I already have enough work to do with what's on my to-do list without adding to it.  The most I might - and I emphasize, might - be willing to do is increase the bodyque size to 16 and double the corpse remain time, but that's after I'm done with everything else that might generate server entities and testing on some pretty huge, item-heavy maps.  I make no promises and that's my final word on this subject.
Logged


I fly into the night, on wings of fire burning bright...
bengreenwood
 

Ogre
**
Posts: 53

« Reply #9 on: 2008-03-27, 16:51 »

Just thought I'd say thanks for considering my idea, Phoenix. I appreciate you've probably already got a ton of work to do on Generations already.
Logged
Phoenix
Bird of Fire
 

Team Member
Elite (7.5k+)
*********
Posts: 8805

WWW
« Reply #10 on: 2008-03-27, 17:16 »

Aye, I'll consider any idea thrown at me, I just have the unfortunate task of triage when it comes to implementation.  Implementation - that's always the hard part.  Entity limits are a bitch.  Banging Head against Wall
Logged


I fly into the night, on wings of fire burning bright...
Pages: [1]
  Print  
 
Jump to: