Forum Thread
  Posts  
A question involving the DOOM 3 game code (Forums : Coding & Scripting : A question involving the DOOM 3 game code) Locked
Thread Options
May 29 2017 Anchor

So I've made changes to the game to make all monster corpses stay forever and addressed other issues that popped up in the game as a result, but one I haven't figured out is getting movers like doors and moving platforms to ignore corpses and finish rather than treating them as an occlusion and going into a loop where they can never finish.

There seems like 2 ways this can go: either movers ignore dead bodies (how does it check this though?), or bodies are set to not be solid to a mover. The latter sounds simpler to do. For the player as an example, a living enemy is solid so you can't walk through them, but a dead enemy is not solid so you walk right through the body, but it isn't non-solid for everything or things like bullets would not have an effect on the bodies. Somewhere in the D3SDK is code that determines for a mover if an obstruction is solid or not and either reverses direction if it is solid and finishes if it is not. I can't simply have movers treat everything as non-solid as then they would clip right through living enemies and the player potentially standing in a mover path. It seems like it's probably a simple change but the D3SDK is a huge amount of code.

Nightshade
Nightshade Senior Technical Artist
Jun 22 2017 Anchor

You want to look into the logic that deals with the collision meshes (collision boxes).
They probably have unique ID's or tags for categorization and then the physics engine looks them up in a hash table to check "is a allowed to collide with b?". But this is just a theory - I do not know how the Doom 3 code is structured.

Edited by: Nightshade

--

Senior Technical Artist @ Massive - a Ubisoft studio
Portfolio | LinkedIn

Reply to thread
click to sign in and post

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.