Networked physics - object stacking

Started by
6 comments, last by John Schultz 17 years, 9 months ago
Networked physics with object stacking- has this been done before, especially with a non-lock-stepped simulation?
Advertisement
We've done it with our extended lock-step solution. In fact, someone built an object stack all the way up above the atmosphere! (Users are funny like that :-)

I believe Second Life allows will allow you to attempt to do it, although they just use Havok with non-lockstep, so I'm not sure how consistent it will be across systems. With enough bandwidth usage, I'm sure it'll be good enough :-)
enum Bool { True, False, FileNotFound };
Hey Jon,

I checked out There.com and after running around for a while, jumping in the ocean(?), jumping off stuff, I could not find any physically simulated objects to interact with. The lock step sim worked fine except when I apparently jumped through a wall at a bar, and kept getting reset into an area that did not render anything except terrain (it ultimately put me back in the bar, so I did not get stuck). After about 1/2 hour, I could not find anything to interact with, so I installed Second Life. I actually registered for Second Life first, and was forced to pick a last name from a set list. Schultz was not available, so I picked Sutherland. Since the last name was not real, I picked Evans for the first name, or Evans Sutherland [wink]. This is the same name I used for There (what's the cheat code for turbo boots? Rocket launcher?).

After Second Life finished installing, I skipped the orientation, and immediately jumped into the ocean, walking on the bottom (water this time!) but no ill effects on my dude (no sharks either). Climbed out of the water, walked around a bit and found a beach ball. Cool- a physical object to interact with. I moved near it and my guy apparently has a balljoint for a knee; he started kicking the ball while bending the knee in ways that were quite hilarious; such bending capability would come in handy for a virtual socker player! My dude did manage to get the ball rolling [wink], but the motion was jittery; not smooth. I spotted water- let's see if the ball floats. "Kicked" the ball toward the water... closer... closer... yeah! in the water. Nope. Ball exploded and disappeared (must be polluted and filled with solvent, which melted the plastic). No floaters for my dude.

While I can appreciate the work and scope of what has gone into There and Second Life, I was surprised not to find more stuff to interact with (physically, that is). No stacks, no levers, suspension bridges, not even a car (found a car in Second Life; apparently it was art, and not driveable). Just one jittery beach ball and a wacky knee. The flying in Second Life was pretty neat, though.

Is there a quick way to get somewhere in There/2ndLife to an interactive stack? That is, something where the stack can be moved/pushed, then slowly tipped over, etc. Touching a stack and having it immediately collapse would not be considered interactive (scripted).

Fill free to critique my game; it's much smaller/simpler, with its own minor issues ('interesting' things are possible), but you can interact with lots of physical objects (including stacks, pendulums, seesaws, moving platforms, etc.) with no apparent lag (I test at 300ms). Since it's not lockstep, bandwidth would be an issue for dial up (though testing on a 14.4kbps cell phone connection worked OK (1000ms ping when many objects active)).
It's been a while, but as far as I recall:

In There, you have to pay money to get stuff to interact with. There are two basic kinds:

1) "portazones" which are pieces of fenced-off land that you can drop in the world (for a rental fee). Within those zones, you can drop furniture, and re-arrange it. Furniture allows stacking, although when it settles, it sleeps and doesn't then re-simulate until you pick it up to move it.

2) "vehicles" and other "toys" are actual physical objects. You can try these for a little while for free through the catalog, I think. There are various toys, such as paint guns, balls, dune buggies, hoverboards, dogs, etc. Shooting a ball with a paintgun makes the ball move; running into the ball makes it move too; etc. Shooting a dune buggy will cause the chassis to move a bit (actually a physical effect, not faked), but the impact from the paint isn't enough to make it move.

I don't know how exactly it works in Second Life -- I believe that you pay some money, and then get to develop objects through their "creator" interface. I'm pretty sure that you can develop three "cube" objects pretty easily, and then try to stack them somehow.
enum Bool { True, False, FileNotFound };
Hi John,

Great game you've got there! Actually I already played the first beta (a friend recommended it to me)... it has improved quite a bit since then.

I really like the objects you can bump into and the shooting feature in this version ;)

Quote:
Networked physics with object stacking- has this been done before, especially with a non-lock-stepped simulation?


Never seen it before (without running it lockstep that is)... Im not sure how you can achieve such a thing realtime (while maintaining consistency) on pings as high as 300 up to 1000(!?) ms??
Jon- thanks for the info. I was hoping to be able to check out in real-time what others have done regarding networking object stacking physics simulation. Is there a video somewhere showing networked object stacking and real-time manipulation for There? Since I cannot try out networked object stacking in There, I'd be curious to hear your feedback on how my game's network object stacking compares to yours (bias is OK [wink]).

bs- thanks for trying out the beta/demo. I test at 300ms, and it works very well. 1000ms works, but changes in direction when moving are interesting (ultimately everything matches up reasonably well; when objects go to sleep they should be in the correct location. This can cause interesting effects with stacks/walls and high pings. If people don't like such issues (reasonably rare), I can use the auto-reset system to put the stacks exactly in the correct configuration. Did you try connecting to the Brightland server in CA? What was your ping? Did it appear networked, or 'local'?
But as it's a racing game, how would you prevent a situation (with a lag >300ms) such that player1 would finish first on his screen, but in reality player2 would finish first (but was second on player2's screen). Both players would think they've won, but at some point player1 needs to be notified player2 has won...
Quote:Original post by bitshit
But as it's a racing game, how would you prevent a situation (with a lag >300ms) such that player1 would finish first on his screen, but in reality player2 would finish first (but was second on player2's screen). Both players would think they've won, but at some point player1 needs to be notified player2 has won...


From my experience with playing other online driving games, really close positions at the end of the race are somewhat rare (300ms separation). In cases where lag is high enough to affect the outcome of the race, the results will have to be taken with the awareness that a little bit of luck is involve (just like real racing; the fastest cars, best drivers don't always win the race. Racing Championships are set up so that the best driver/car wins the most over time: point system based in finishing position).

If the start/finish is on the straightaway, even with higher pings, the prediction system should put the clients fairly close to where they should be on the server, making the race results reasonably accurate and fair. I do need to add an end of game 'final stats' display, showing all the clients the final race positions (official/server determined).

This topic is closed to new replies.

Advertisement