This project has moved and is read-only. For the latest updates, please go here.

Blob physics issues

Topics: User Forum
Oct 29, 2009 at 1:25 PM

Hi all, first time posting here. :)

I'm working on implementing a spring blob based on Mike West's excellent article, as I've seen a few others have done or attempted.

I have the basic structure working well, and I even have texture rendering down rather nicely.  What I'm running into is that the blob will want to kink up on itself when colliding at rather moderate velocities.  Mike's article suggests some sort of constraint to help alleviate this issue, but after days of testing different solutions I haven't been able to come up with anything that's stable.  I've tried angle limit joints between each skin vertice, I've tried greater spring forces between both the skin vertices and the airgap between the inner and outer radius.  Some are more stable than others, but dropping the blob from any reasonable height still makes the 'side' edges crash through the bottom of the blob once collision happens.

Is this an issue with not using verlet integration and instead relying on Farseer to supply the needed mechanics?  Does anyone who has tackled something similiar have any wise words?

Nov 10, 2009 at 8:54 AM

Hey, that's very cool. Gish is one of my favourite games, so I hope you get something neat working. This sort of thing definitely requires a lot of tweaking to get right, and since it sounds like you've tried tweaking all the standard parameters (mass, spring constant), as well as trying different mass-spring structures, I would maybe suggest you make your own custom spring. I don't know what the springs are like in farseer, but a linear spring vs a quadratic spring will make a big difference. You could also try decreasing the timestep of the simulator to see if that makes the simulation any more reliable.

Nov 11, 2009 at 8:00 AM

Took a look at that article (Cool one BTW, thanks!), and it says to use a two layer skin to maintain a reasonable surface structure, try that and see if that helps.