Skip to main content

giving something back, physics for games

  • And now to loose some time on what it the easiest way to move this forward and on what path.

    Have been setting the ui architecture up so that certain effects would be easy to add into it, but also aware that may not be the current priority…

  • Of course, the sensible thing would be to use an existing game engine, but after a certain point, there is some curiosity if learning and fighting yet another game engine is really quicker that just writing something from scratch.

    And then…

  • Was looking for a reason to learn sql, and was feeling the urge to play an oldschool pen and paper rpg.

    didn't like gurps licence, nor dnd's 'open' source licence, then while looking around, found legendary quest, which is kind of neat.…

  • somewhat random, got up to speed with SDL (simple media layer) to see what it could do for me to make my life easier, also rewrote my game engine to be a lot more generic and support unittest.

    grey image is having fun bluring the depth…

  • Have never done that much database/php stuff, but was currious if you could make a game using javascript/canvas rather than flash.
    this seemed fine till trying to get Internet Explorer to work, in which case i would like to think flash works…

  • a week of prototyping (6 prototypes), 1 of which failed and not included, another of which i am still working on and not online yet (procrastinating by blogging rather than finishing it)

    Seems prototyping is the popular thing to do at the…

  • capture of iPhone gameplay of my lattest game, Bikini Beach Volleybal

  • Bit of a slow week, finished 'chico of the dead' (once it is available in the app store i get to start promoting it, fun) and during the recovery time after a big project, tidied up some randoms bits of tech, simplified renderer, and added…

  • Still a bit to go but finishing up the chico of the dead game, about a week left? event spent some time improving the quality of the first part of the game experence (added help)

  • well, took 5 hours to write my own morph plugin for max, but then took 2 days to change the pipeline, engine and animation for stream based morphing.
    and so the first thing to make was a shalug, half shark, half slug. what else is morphing…

Submitted by davidcoen on
Forum

harro, thanks to the people who have helped/ commented on my post, though i might try to give something back. (ie, finished another step of my physics engine)

setup. have object in game world, and want it to move/ collided/ have forces act on it/ momentum

a potential solution. reduce each object to a 'force diagram' at the begining of each frame (quantify all the forces on the object) and resolve this in the world. (so, i have this force from gravity, this from velocity, now subtract the static coeeficent of resting on an object, if force still left then kinect coefficent and or whatever...)

the math.
SumForce = (velocity(old) * mass ) / time
SumForce += (acceleration forces in world(gravity & whatever)) * mass
SumForce -= restitance force if im resting on another object

Displacement = ((SumForce * time * time) + ( velocity(old) * time )) * 0.5
Velocity = (SumForce * time) / mass

_note. displacement is the average of old and new sumforce * t^2, I just think of it in terms of velocity, as i use it in collision....

perhaps this could be of sue to someone, derived from
F = ma and
x - x0 = vt + 0.5at^2

Submitted by CombatWombat on Wed, 10/12/03 - 8:58 PM Permalink

Hi David, yeah I've been playing around with similar stuff, and I'm doing something similar - although I'm breaking it into two parts - statics and dynamics. Statics being momentum transfer/conservation of momentum, and Dynamics being this force resolution you're talking about. You'd probably also extend this to building up a graph of objects that are touching, and chain the momentum transfer/conservation of energy calculations.

For example, if A is pushing on B and B is resting up against C, you need to resolve the momentum transfer as a chain to get everything moving with the appropriate velocities.

It looks like you're attempting to handle both the Statics and Dynamics in one, which is probably going to be really tricky. The momentum (ie velocity(old)*mass bit above) isn't a force, and including it will essentially mean that the faster an object is travelling the faster it will accelerate.

You probably want to divide SumForce through by the mass (a = F/m) - unless you're assuming everything is the same mass anyway. And think the last line for Velocity = should be Velocity +=.

I've yet to finish the conservation of momentum/energy part of my system, I may yet collapse the Statics and Dynamics back into one lot of code, but want to get it working separately first (much easier to debug :)

Cheers,

Mark

Submitted by MITA Studios on Thu, 11/12/03 - 7:53 PM Permalink

Hey,

I wrote a simple physics engine about a year ago which handled particles, spring-damper systems, and environments (friction, air resistance etc). One word of warning, at present, you're using Euler integration to calculate your values of Displacement and velocity:

s = u*t + 1/2*a*(t^2)

u = initial velocity, s = distance, a = acceleration, t = time change

This is just one of the equations of motion, but your equation:
x - x0 = vt + 1/2*a*t^2 is an Euler integration, which may cause stability issues later down the line.

When I first wrote my physics engine, I though, yeah yeah, stability crap, it'll be fine, but then when my particles somehow started gaining energy in their spring-damper systems and oscillated to a massive speed, I realised that maybe Euler integration wasn't going to work.

You have a number of options:

Mid-point integration
4th order Runge-Kutta integration
Taylor Series expansion

none of them are particularly exciting, but I'm sure if you search for them, they'll pop up all over the place, and won't be too hard to implement!

cheers

Matt

Submitted by shiva on Thu, 11/12/03 - 9:22 PM Permalink

add verlet integration to that list

Submitted by davidcoen on Fri, 12/12/03 - 10:41 AM Permalink

cool, thanks for the comments, yes, have been needing some massive dampening values on the springs..

Posted by davidcoen on
Forum

harro, thanks to the people who have helped/ commented on my post, though i might try to give something back. (ie, finished another step of my physics engine)

setup. have object in game world, and want it to move/ collided/ have forces act on it/ momentum

a potential solution. reduce each object to a 'force diagram' at the begining of each frame (quantify all the forces on the object) and resolve this in the world. (so, i have this force from gravity, this from velocity, now subtract the static coeeficent of resting on an object, if force still left then kinect coefficent and or whatever...)

the math.
SumForce = (velocity(old) * mass ) / time
SumForce += (acceleration forces in world(gravity & whatever)) * mass
SumForce -= restitance force if im resting on another object

Displacement = ((SumForce * time * time) + ( velocity(old) * time )) * 0.5
Velocity = (SumForce * time) / mass

_note. displacement is the average of old and new sumforce * t^2, I just think of it in terms of velocity, as i use it in collision....

perhaps this could be of sue to someone, derived from
F = ma and
x - x0 = vt + 0.5at^2


Submitted by CombatWombat on Wed, 10/12/03 - 8:58 PM Permalink

Hi David, yeah I've been playing around with similar stuff, and I'm doing something similar - although I'm breaking it into two parts - statics and dynamics. Statics being momentum transfer/conservation of momentum, and Dynamics being this force resolution you're talking about. You'd probably also extend this to building up a graph of objects that are touching, and chain the momentum transfer/conservation of energy calculations.

For example, if A is pushing on B and B is resting up against C, you need to resolve the momentum transfer as a chain to get everything moving with the appropriate velocities.

It looks like you're attempting to handle both the Statics and Dynamics in one, which is probably going to be really tricky. The momentum (ie velocity(old)*mass bit above) isn't a force, and including it will essentially mean that the faster an object is travelling the faster it will accelerate.

You probably want to divide SumForce through by the mass (a = F/m) - unless you're assuming everything is the same mass anyway. And think the last line for Velocity = should be Velocity +=.

I've yet to finish the conservation of momentum/energy part of my system, I may yet collapse the Statics and Dynamics back into one lot of code, but want to get it working separately first (much easier to debug :)

Cheers,

Mark

Submitted by MITA Studios on Thu, 11/12/03 - 7:53 PM Permalink

Hey,

I wrote a simple physics engine about a year ago which handled particles, spring-damper systems, and environments (friction, air resistance etc). One word of warning, at present, you're using Euler integration to calculate your values of Displacement and velocity:

s = u*t + 1/2*a*(t^2)

u = initial velocity, s = distance, a = acceleration, t = time change

This is just one of the equations of motion, but your equation:
x - x0 = vt + 1/2*a*t^2 is an Euler integration, which may cause stability issues later down the line.

When I first wrote my physics engine, I though, yeah yeah, stability crap, it'll be fine, but then when my particles somehow started gaining energy in their spring-damper systems and oscillated to a massive speed, I realised that maybe Euler integration wasn't going to work.

You have a number of options:

Mid-point integration
4th order Runge-Kutta integration
Taylor Series expansion

none of them are particularly exciting, but I'm sure if you search for them, they'll pop up all over the place, and won't be too hard to implement!

cheers

Matt

Submitted by shiva on Thu, 11/12/03 - 9:22 PM Permalink

add verlet integration to that list

Submitted by davidcoen on Fri, 12/12/03 - 10:41 AM Permalink

cool, thanks for the comments, yes, have been needing some massive dampening values on the springs..