Phunny Physics

The other evening I wanted to make something simple and interesting, and it occurred to me that I really don’t know much about SL physics, so I thought I’d build a simple physical experiment: a sand-pile maker:

Pile 001

(Mad Photoshop Skillz used to fade the non-essential things like me and the rest of the Hughes Rise Park in the image.)

The blue thing there sits aways off the ground and every few seconds drops a little decimeter-sized cube; over time this forms a pile. If I had done this in a parcel with lots and lots of prims available, I could have let it drop a few hundred, to see what happens. But even after only a few dozen, the pile is noteworthy:

Pile 002

Note that it’s a rather flat pile, and most especially note that some (many) of the blocks are sort of floating in midair. This isn’t an action shot of the pile collapsing, catching cubes as they bounce around or anything like that; this is the static state of the pile after I turned off the dropper. So the floating is a tad unexpected.

It turns out that the SL physics engine is quite approximate. When figuring out physical interactions, it will get things more or less accurate to the tenth of a meter, but not any finer than that. Meaning that a physical decimeter cube may act as though it’s anywhere up to twice as big as it is; in this case by hovering suspended in the air, because the physics engine thinks that it’s resting on the ones below it, or close enough anyway.

SL physics is wonky in a number of other ways, due to this and other approximations. (For instance if you slam a physical object into a wall fast enough, it will pass right through a good fraction of the time.) Why don’t we Residents notice this more? Two reasons occur to me.

First, the vast (vast) majority of things in SL (AVs not included) aren’t physical! Prims are subject to the full laws of physics (such as they are) only if a particular box in the editing control is checked. And prims with that box checked are always falling over or sliding away or generally misbehaving, so creators don’t check that box without good reason. Prims without that box checked are non-physical, and stay wherever the heck they’re put (which is why my sandpile maker can just sit there in midair, and why we think nothing of seeing an informational sign sitting placidly half a meter off the ground with no visible support, and why skyboxes don’t need expensive anti-gravity generators).

Non-physical prims do serve the useful purpose of blocking vision (unless they’re transparent) and blocking the motion of AVs and physical objects (unless they’re phantom), but mostly the laws of physics ignore them. They can interpenetrate each other, sit in midair without support, never fall over on their own, etc.

Second, the most common physical objects that we do encounter are vehicles. Boats and cars and motorcycles and balloons and so on are usually physical, but they’re a rather special kind of physical object governed by one or more scripts that use the special vehicle-related scripting verbs. These verbs are designed specifically for the special case of vehicles, and they go some ways toward hiding the wonkiness of the underlying physics by making specifically vehicle-like operations work more or less as expected (sometimes definitely less, as anyone who’s done much vehicle driving knows).

Why is the physics engine wonky in this way, so that we have to be protected by living in a largely non-physics world where most of the physical things that we use are specially scripted to be vehicles? Why not just have a consistent laws of physics that everything obeys? The answer is that simulating physics is really really hard. The RL universe cheats by using massively parallel hardware; LL can’t afford that kind of compute power. Some other virtual worlds (WoW, Lively) have no notion of physics at all as far as I can tell, except in the degenerate sense that stuff stays where it’s put.

It’ll be interesting to see how this aspect of VWs plays out in the future. Will we see VWs with more and more powerful and “realistic” (or creatively unrealistic) physics engines, and will the laws of physics come to govern more of the virtual stuff that we work with? Or will this kind of physics remain a sort of a curiosity, turnable on for special cases (like vehicles or cannonballs), but off most of the time, because the physics that we really want in our VWs is a simple physics where things stay pretty much wherever they’re put?

(If you know of any virtual worlds that have more or different physics, do post in the comments! I know Torque has some, which are also pretty wonky, and I think some of the other game engines have pretty sophisticated ones, but I don’t know the details.)

And just for completeness, here’s a picture of me swimming with some otters in Firespire (I think it is):

I'm an otter!

Wheeeee!

3 Responses

  1. I once played a billiards (well, 8-ball) game in SL, and it was awful. The game was built on roughly the same scale as a RL table, but it was almost unplayable because the balls collided as if they were twice as big as they were — making it rather difficult to judge a shot. (At least, that’s how I rationalize the fact that I lost. :-P)

    To make any physics-based game fun in SL, you almost have to scale it up to 10 or 100 times the normal size, so that the inaccuracies of the engine are less significant.

  2. There’s some feeling that the inadvertent wall penetration problem either appeared with, or at least became significantly more noticeable with, the Havok4 update of the SL physics system. See jira issue SVC-1982 : http://jira.secondlife.com/browse/SVC-1982

  3. Jacek: yah, I suspect this is why there are so few physical-type games in SL: people try to make, say, skeeball, and end up being hauled away by the men in the white coats…

    Coyote: wow, there are *lots* of JIRAs on this, it looks like. I actually had a Linden come over to watch me slam a physical prim through a wall once, and his opinion was “oh yeah it’s always been that way; not new with H4”. And I didn’t have any evidence to the contrary…

Leave a comment