This information is subject to change, have to wait for 0.4 to get better idea. Search forum “vehicle” to get more info.
Yake's present an approach to generic vehicles system based around component-oriented and Model-View-Controller architecture. In which the graphical representation and input to it, is separate from the actual physics model of a vehicle.
A vehicle can be made of different independent models/bodies like engine, wheels and in more primitive forms like physics bodies, joints. They can be attached to the controllers for input.
Either using a DotLink file or manually these can be combined to form complex vehicles like submarine, harrier jet, spaceship, buggy.
These vehicles are just different combinations of engines (car engines, thrusters etc) and wheels (if any) etc. You can quite easily model these with “vehicle primitives”. Most of them are very similar in the way they are controlled and in the way they can be simulated with yake::physics.
You want a car? Add physics bodies, the joints, the wheels, attach them to controllers. Or a harrier jet? Use a few wheels, add a thruster at a mount point, add controllers.
About the early implentaion of yapp::vehicle The original version used the abstraction of wheels, for example, to provide two different implementations ( both using yake::physics ), one which used a ray-cast/spring system, and another which used a spheres/hinge2 approach.
References
Gamasutra - Features - "The Guerrilla Guide to Game Code"
A good introduction to ModelViewController architecture.
Mount points represent a hierarchy of points where certain mountable objects can be attached (e.g. thrusters). Any number of points can be added to a point (as children) or to a vehicle.
Mountables represent objects that can be attached to mount points (You wouldn't have guessed.). Any number of mountables can be attached to a single mount point. Mountables can only be attached to one mount point. It is possible reattach mountables in order to change the parent mount point.
Thrusters, guns and other elements can be mountables if they also derive from Mountable. By default, basic classes named, for example, MountableThruster and MountableTurret, are included.
06 Oct 2005: Incomplete example! We're in the refactoring phase. This is just a preview :)
<!-- declare "Jet" template --> <vehicleTemplate name="jet"> <mountPoint id="0"> <position x="-2" y="0" z="1" /> <direction x="0" y="0" z="-1" /> </mountPoint> <engine id="0" type="MountedThruster" mountPoint="0"> <forces min="0." max="10." dieOff="4" rise="8" /> </engine> </vehicleTemplate> <!-- instantiate vehicle --> <vehicleInstance tpl="jet" />