A Locoroco-like - Rigid-body Physics

BlitzMax Forums/BlitzMax Programming/A Locoroco-like - Rigid-body Physics

Armitage 1982(Posted 2006) [#1]
Hello all,

I really whant since a long time now realize a kind of LocoRoco~Gish gameplay.
My question is simple, what solution BlitzMax provide me for this task and what kind of modules do i need ?

I'm quite impress by 3impact for is physics behaviour (most of all, the engine is quite stable and done) but is this really a suit solution for a 2D polygonal game with BlitzMax ?

I've bought a licence of TorqueGameBuilder but the rigid-body engine is really buggy at this stage and you can't draw polygon without issues. There even no pixel buffer drawing commands at all !

Is there any modules or Library that could handle 2D rigid-body physics (like more or less tokamak for example when apply restrictions) ?

I already know most of them (ODE, NOVODEX, physical,...) so if you have any good infos about this ;)

thank you !


Haramanai(Posted 2006) [#2]
There is no module.
There is a lib ( not for Max but for C++ ) for 2d rigid bodies www.flatland.sourceforge.net
Download it. It also have some pre-build demos check it out. I hope that someone will create a wraper for Max.
About Locoroco... I played a litle bit the flash version that is on the net( just the first stage ). The only thing that you really need it's a curve ( spline ) collistion detection with a moving circle. I have no idea how you can do that.
About other Libs. There is a wrapper of Ode by Chris C. a Newton wrapper By Thiery-Mike ( this one must be in the Modules are of the forum). But as I said you need curve and moving circle collision detection and non of them have this.


Gabriel(Posted 2006) [#3]
Surely LocoRoco and Gish are using Soft-body Physics, not rigid-body? I don't think any of the popular free engines support soft body dynamics yet. Perhaps Ageia PhysX does?


grable(Posted 2006) [#4]
You could probably create some LocoRoco like using verlets, although a collision library is still needed.


Dreamora(Posted 2006) [#5]
One idea perhaps would be atom physics basing on what you want to do.

http://www.aidspan.org/alec/physical/overview.htm


Armitage 1982(Posted 2006) [#6]
Thanks for all

@Dreamora
i've already try Physical, it's more a framework than a library. Impossible to use with BlitzMax.

@grable
I don't know Verlets, if i'm using something like BlitzMax it's probably because i'm waiting for an overall solution.

@Gabriel
I think you right, it's more Soft-body, this therm is quite new i must say. Though rigid body would be enough for me.

@Haramanai
Oh yeah Good one, i forgot it : Flatland (http://flatland.sourceforge.net/) The demo look awesome !
C++ is killing me :( I don't whant and don't have time to do C++ snif.


AlexO(Posted 2006) [#7]
@Gabriel
I believe Gish is still rigid body. Just simulated 'soft-body' with something like springs and linked joints around the blob (its probably an over-simplification but hopefully you get the idea). Seems soft-body would be way too complex for such a seemingly simple (and good performing) game like gish.


grable(Posted 2006) [#8]
Verlets are pretty use to make ;)

heres a simple example (read up on "Verlet Integration" for more info):

EDIT: btw, this example is not a complete verlet, for simplicity.

EDIT #2: now in code archives, http://www.blitzbasic.com/codearcs/codearcs.php?code=1769


Punksmurf(Posted 2006) [#9]
You can try to decompile the flash-version, although that wouldn't spoil you with very readable code...


Rck(Posted 2006) [#10]
nice code example, grable


grable(Posted 2006) [#11]
Rck: thanks =)

heres an updated version, with rotation and simple editing for those who want to play with it some more ;)

EDIT: now in code archives http://www.blitzbasic.com/codearcs/codearcs.php?code=1769


Diablo(Posted 2006) [#12]
That code is awsome grable.

You should pop it into the code archives.


grable(Posted 2006) [#13]
Dialob: its in there now ;)


Diablo(Posted 2006) [#14]
YEA - and its cool.

im trying to get two objects to react with each other just cause i'm bord :)


Byteemoz(Posted 2006) [#15]
Who's bored...?



grable(Posted 2006) [#16]
Cool Byteemoz =)

add this to the main loop for turning the selected point on/off, saves you from building support structures ;)

' turn point on/off
	If KeyHit( KEY_A) Then
		If mpoint <> Null Then
			mpoint.active = Not mpoint.active
		EndIf
	EndIf