Gyro was a .qc physics plugin that I released around the time of QExpo 2005. It was really all about blowing stuff around the room with rockets, but it also did lots of other fancy physics-related things, and could be implemented into almost any Quake mod with just two or three lines of code.
As QExpo 2006 approaches, I need to start making Gyro II! This time, it'll actually work properly (most of the time) on all engines and at all framerates! Oh, and grenades will still float. I like floating grenades.
For those that didn't get to try Gyro before it was 'discontinued', it was split into two main components - the object and the force side. Object parameters were stuff like weight, bouyancy, air resistance, aerodynamics and so on, which constantly effected the object. The forces were things like explosions, dampening fields, magnets and air currents, which were localised (and more interesting!).
Anyway, here's my current list of proposed object-controllers:
Weight - used as a base for all other controllers
Resistance - slows the object while in air/water (used to be derived purely from the weight)
Aerodynamics - attempts to point object into it's flight path (keeps rockets facing forward)
Bouyancy - makes objects float in air/water
Thruster - object emits a constant thrust in it's facing direction (makes fancy rocket effects)
Hover - object emits a constant downwards force based on it's height from the ground (bit useless perhaps? I did make a cool blimp-grenade out of it and a bit of thrust, though...)
Turbulence* - object is subjected to constant turbulent forces (ideally used in water, so objects floating on surface don't remain motionless)
Elasticity* - controls strength of object's bounce upon impact (probably needs to override the object's touch function - not a good idea?)
Spring* - attach the object to another entity with a spring constraint (useful? could probably be extended to incorporate non-bouncy string as well)
* = new for Gyro II.
Right, that's my list so far. How useful would these be to all the modders out there? Is there anything else you think could be useful, or something that your mod already does that would fit nicely into Gyro? Once one (or all!) of these controllers is applied to your object, you can forget about it - Gyro handles the hard work!
Forces are being revamped completely. The first Gyro had predefined forces (force-sphere, dampening field, whirlwind, etc), but I plan to make an almost completely customisable force tool this time round. Of course I'll package a few commonly used forces into the system, but I want to offer the freedom to create what you like.
I'm going to do this by having forces built as several separate components - a combination of falloffs and pushers, for want of a better word! To create, say, a force in the shape of a vertical cylinder (a ceiling-mounted fan, for example), you would first define a linear falloff along the vector '128 0 128'. This would create a cylindrical falloff with radius 128 and no height falloff. Applying a second '0 256 0' falloff would combine the two into a cylinder with 512 height (256 is each direction from the centre). Simply doing a falloff of '128 256 128' would produce a squashed sphere. See how it all fits together?
So now you've got your shape, you need to decide what pushers to apply. For our fan to suck things upwards, we would provide only one pusher - an absolute force with a vector like '0 512 0'. This would always push an object up, with just enough strength to lift something 512 units in weight, providing it was right at the centre of the force. Other pushers would push/pull objects to/from the centre of the force, dampen an object's motion or make objects orbit the centre. It all depends on what I can come up with!
I'm deliberately vague about the forces, because I'm still trying to figure out exactly how far I should go with them. With what I've got so far, it'd be easy enough to create anything from big explosions to spiralling whirlpools that slowly suck objects to the seabed, but I really need to find out what else we need before I even touch the code!
Any ideas? I thought the idea of a reflector shield was quite cool, so I'll probably try to make a special bounce-force.
Sorry for the long post!