about the "walking system" i only saw the gif and the author's explanation. But it's more impresive than difficult.
The idea is something like this:
1-the biped must have a relax pose, this is with the legs almos rect and the foots in 90 degrees. Like when you are stand up.
2-the biped must have maximun rotation angles in his legs and foots
3-the "input" of the movement is a certain force(vectorial force) applied to the gravity center or the pelvis (could change in certain models).
4-the foots define an area, we could name it as AREA. If the gravity center (its projection) "falls" over this AREA, the body is stable. If don't, the body is not stable.
5-when the biped is not stable, the leg closer to the force vector will try move to a final position that compensate the inestability.
6-each leg has a tension value. So if a leg is manteining the whole weight, the other leg has a low tension value. Of course a leg with a hight tension value can't move with easy.
7- The final point of the movement of the leg has to be pre-calculated. In this way the leg and the foot will have a correct and smooth movement. Also this method give us the possibility of include "errors" that could happend if the character is nervous (the final point of the movement could have a pseudo-random Delta pan, directly proportional to the nervousness)
8-Of course the body must have an skeleton, this method won't works on pure meshes without skeleton.
I mean the main idea is clear, isn't it? And yes, it has a lot of work to do.
About the commercial game, yes, i know the source code has to be gpl, but the arts won't be free. Saga of ryzom has been released the same way.
The latest version is that i can find in the svn, correct?
And, Who is the leader over here? How are organizated the tasks?
How can i upload files to the svn?
Btw, the source code of mania_driver that i found on the web has two typos.
(mania_drive.c, lines 792 & 795)
Code:
if( (raydium_key_last==1113 || raydium_joy_clic==6) && gear<5)
gear++;
if( (raydium_key_last==1119 || raydium_joy_clic==5) && gear>0)
should be (or at least in that way it compiles)
Code:
if( (raydium_key_last==1113 || raydium_joy_click==6) && gear<5)
gear++;
if( (raydium_key_last==1119 || raydium_joy_click==5) && gear>0)