Snarkpit Articles



Physics Props

What is A Prop_Physics?

For multiplayer levels in the Source Engine, one expects a lesser degree of physics interaction than with the single-player counterpart. For the most part you'd be right, but Valve and the team behind Half-Life 2 Death Match put a bit of extra effort into the network code enabling proper physics models to perform adequately in an online environment (contrary to popular beliefs about Valve making HL2DM as an afterthought project). So with that, you may be already familiar with the entity: prop_physics. This is the primary entity used to render single physics-based models in-game. That is, any model needing to be kicked or picked up or interacted with the environment of the game should be placed into the level via this entity.

Now, this entity is great for single-player games, and I wouldn't use any other, but for multiplayer games, this entity may not always be the right choice, but we shouldn't eliminate it from our dictionary of multiplayer entities just yet!

Benefits of Prop_Physics_Multiplayer

prop_physics_multiplayer is pretty much identical to prop_physics in just about every way except for the most important way in the eyes of a server. Models existing as prop_physics_multiplayer have a much more 'bouncy' and less accurate method of collision detection (taken from article at EditLife). This is so the server takes less stress when attempting to calculate EVERY player's collision interaction with a physics prop on the fly and can focus its saved processing power for other things. The 'bounciness' is due in part to the automatic collision detection applying a generic 'bounce' force against the player and other possible collision surfaces instead of calculating the rigid collision mesh that would otherwise be used to calculate how a model sits on a surface. It's because of this type of automated collision detection that you would not want to use this entity on objects intended to be picked up by the player and used to slam another player in the face with, because it may not detect their face at all! -It's too cheap.



Now, when attempting to place down some eye-candy models in your mutiplayer level, you'll want to consider their size and purpose. If their size is really big, then it should be an automatic inclination of you as a mapper to make these a prop_physics because they are more likely than not to be encountered by and perhaps even used by players as part of the game environment (especially in HL2DM). Now, if their size is small and most likely won't have the intended use of being thrown at a player or stepped on, then it might be in the best interest of the mapper to go ahead and turn these kind of entities into a prop_physics_multiplayer. Now of course purpose is not always correlated to size, so understanding what the prop_physics_multiplayer entity does, it is up to you, the mapper, to decide whether an entity deserves to be rigidly calculated or just simulated.

It ought to be noted about making a few other checks before keeping this entity in your multiplayer maps. be sure to check under the 'Flags' tab of this entity: "Debris - Don't collide with the player or other debris." This is important for entities you do not want to collide with the player. Simply placing them as prop_physics_multiplayer will not keep them from getting in the way of a player. Similarly, you may check "Prevent pickup" to prevent further player interaction, but usually the 'debris' flag will cover this. Also of note is the "Force server-side (Multiplayer only)" flag; only check this if it is important that this prop_physics OR prop_physics_multiplayer entity is needed to be synced at the same time for all players. (like a large boulder barreling down a mountain to kill several players at once). Anything made 'server-side only' will only cause more lag across all players connected to that server. Generally it's a good idea to avoid this flag. It's also important to note that you should use either 'physics' entity sparingly; they are both resource hogs somewhat compared to other entities.


Possible Suggestions:

Set to prop_physics_multiplayer if:
  • garbage debris only meant to collide with other debris
  • environmental effects to be 'pushed' (physical leaves, dead fish, small bricks)
  • tied physical entities (bag on a punching bag stand, dangling ornaments, swinging lights)
  • distant unreachable objects meant to move physically
  • falling models that are numerous (concrete chunks from a ceiling, apples from a tree, books off the shelf)
Set to prop_physics if:
  • large objects expected to come in contact with the player
  • deadly objects by mass (falling boulder, guillotine)
  • need accurate collision detection (round ball in a square hole)


Prop_Physics_Respawnable

One last note: prop_physics_respawnable are another entity used commonly in multiplayer maps. Their physics calculation is exactly the same as the expensive prop_physics entity (because it is assumed this entity will be used to smash other players in the face). The only difference is their "respawn time" keyvalue. It only applies if the entity can 'break,' otherwise it is useless for those entities that can't explode or break apart. The default time is usually 60 seconds. Make it longer if it is a 'game-changer' or really popular throwable prop; this would make it more rare and special. Okay, I think that's enough about physics entities smiley


>Next up, the ultimate tool, Player Clips!


Post ReplyView Topic
Discussion
4 starsPosted by Le Chief on Tue Jan 19th 2010 at 11:59am

I get what you're saying for the z-axis section. You're talking about height variation in terms of gameplay not aesthetics.
[author]
Posted by Riven on Mon Jan 18th 2010 at 9:44am

----Article Has Been Updated----


I finally took the opportunity now that the new article system is up and running to make edits to the article.
I added a whole new paragraph to the 'prop_physics' section, and I completely re-did the 'open Z-axis' part under the 'layouts techniques' page so that it should make more sense and have much more meaning.

I took into account you guys' suggestions so be sure to look for the updated info!
[author]
Posted by Riven on Sun Jan 3rd 2010 at 7:59am

Quoting aaron_da_killa
Also I couldn't understand what you were trying to say in the open z-axis section. smiley


Heh, re-reading it with an outsider's perspective now, I can see the confusion. I seem to start off strong and then quickly disintegrate without even properly wrapping-up that particular section. I'll edit it to be sure and make it a bit more clear and perhaps add some more info. -Thanks for pointing that out!

Quoting haymaker
Sure, it is possible to build a kitchen with throwable pots and cans etc, but that is terrible gameplay. If an author really feels he must illustrate such a place, I would urge that anything under 32units be prop_static and non-solid. There's plenty of instances where players just get stuck on stupid junk, and it's an avoidable frustration. I frakkin HATE those keyboards and buckets and stuff in the Valve maps. By converting to _static you can place proper clips to allow smooth movement and also fade these things out quickly ( if they are placed in cubbies etc ) to allow the server to attempt better hit registration, which is widely known to suck in Source.


Duly noted haymaker. I feel there should be some clarification also on some of the spawn flags that are common for both phys_ entities. Just because it's phys_mp doesn't mean the player can't pick it up; there are other settings to be checked for THAT to happen. However, what you stated about turning them into static props in fact can't be done for most of those keyboard, bucket, etc... models unless you could recompile them with their QC files. So, if say you turned off their collision with the player, and turned off their ability to be picked up, the only calculation the server would be performing on them would be anytime they hit another prop_phys(_mp). Otherwise, the server turns off their collision hull until they actually do come in contact with something that is allowed to hit them (via the flags). You can see this very clearly if "mat_fullbright 1" is turned on in a map. But yes, you are right for pointing that out, and I'll be sure to edit that info into the article. Thanks for pointing that out!

The fade property may be out of the scope for this article, but I could mention it nonetheless.

About the respawnable props: I honestly don't have much knowledge on the effects of _respawnable props, but it is probably worth mentioning; I'll do some more homework smiley

Thanks again for the feedback guys.
0 starsPosted by haymaker on Sun Jan 3rd 2010 at 4:12am

Nice piece of homework here, very well done. A lot better than I could pull off so quickly smiley

The main niggles I have with it is your approach to prop_phys and prop_mp, section 2, in saying large props should be _phys and small should be _multi... Technically this system will work as you have stated, but I would like to point out further refinement.

I have found in my many hours with hl2dm, at least, that props must serve a definite purpose or they are just wasting resources.

Sure, it is possible to build a kitchen with throwable pots and cans etc, but that is terrible gameplay. If an author really feels he must illustrate such a place, I would urge that anything under 32units be prop_static and non-solid. There's plenty of instances where players just get stuck on stupid junk, and it's an avoidable frustration. I frakkin HATE those keyboards and buckets and stuff in the Valve maps. By converting to _static you can place proper clips to allow smooth movement and also fade these things out quickly ( if they are placed in cubbies etc ) to allow the server to attempt better hit registration, which is widely known to suck in Source.

Also looking for simpler, more rectangular models for real physics interaction will result in better server performance, which will result in better gameplay. Along these lines it's also advisable to consider placing what you think is a good amount of physics props, and then taking a few out; too many of these things and you have a boring map.

I don't think the article touched on _respawnable either, but it's worth noting that these can cause bad server performance if they are carelessly integrated, especially the explosive ones.

5 starsPosted by larchy on Sat Jan 2nd 2010 at 12:35pm

I've added a preview system to the new article page. It's a bit different to the forum system because the parsing for articles is pretty complicated... there are a few issues and I've spent about 4 hours coding something that hopefully works ok.

It won't show images (because they don't get uploaded until the form is submitted, and there's no AJAX system in place for this bit), but will show placeholders for image tags.

Pagination is also... problematic.... so everything gets shown on one page. You can still see the article index and where each page starts/ends ok though.


I could get round the problems by temporarily shunting everything into the db, but that's not really ideal and brings it's own issues.

Anyway have a look and see if what's there is ok.

If your button is green, refresh your stylesheet.
4 starsPosted by Le Chief on Sat Jan 2nd 2010 at 12:52am

Pretty good tutorial man although the title is a bit confusing for me, I'm not really sure what "gameplay optimization" entails and it seems in the tutorial you were discussing good multiplayer level design from a gameplay and performance standpoint.

Also I couldn't understand what you were trying to say in the open z-axis section. smiley
5 starsPosted by larchy on Fri Jan 1st 2010 at 6:08pm

There are some issues with the way articles work that means adding previews was quite troublesome if I did it the same way as forum posts.... however I think I've thought of quite a good way around it that I'll try and add over the weekend.
5 starsPosted by G4MER on Fri Jan 1st 2010 at 5:01pm

Then, I may have to write it up and send it to you.. because I don't have your admin abilities to make it easier and quicker. =) Thanks for the info.

Maybe we can get a preview option added later on. Would also be nice to update the old tuts on here.
[author]
Posted by Riven on Fri Jan 1st 2010 at 4:43pm

This tutorial was done completely On-Site. I've thought about re-creating other tutorials from other sites and adding them to the SnarkPit, but I would want to do it under the account The SnarkPit because it's not an original tutorial. And I don't have access to that account anyway. But before bothering with that, sometimes I think about all the clean-up that needs to be done with the articles and downloads we already have. A lot of them are missing images, the HTML for other articles clutters everything up, and the games for the maps section still need banner images and descriptions (check the L4D2 banner and look for the info button to see what they could all have). It's a great feature larchy implemented, that I'd like to get around to filling-in.

Beyond that, It was not too difficult to write the tutorial on-site; It's like any other post with BBcode enabled. Although without the admin abilities, I couldn't find a way to preview my article before submitting it, I might had just missed it. But the way it works is, when you're done typing your new article, and you click 'submit,' It gets sent to the admin approval page where an admin has the opportunity to check the article's thoroughness and content and basically preview it before it get's posted on the main site for everyone to see. If it's approved, it goes on with any changes the admin might had made; if it get's denied, a few notes could be written about it, but then it is sent back to the author for revisions and re-submittal. Now, remember, there is no way for the author to preview his work before it get's submitted to the main site, and even when it does get approved, there is no way to edit it (as the author) after it's been posted. The admin check/revision period can go on for as long as the admin deems necessary.

So, It's a nice system that works, but I'll propose a few suggestions in the feedback thread having now had first-hand experience with it.

If it weren't for my admin abilities, it would have take a bit longer to get this posted in the condition that it is.
5 starsPosted by G4MER on Fri Jan 1st 2010 at 2:40pm

Hey Gwil.. good to see you.

Hey Riven, did you do that tut on site or off and then just transfer it.. I want to do that adding player spawns without decompile tut... and want it to look as nice and professional as yours. We may also need to add the program in the tools here to be downloaded. Help.. =)

Post ReplyView Topic