Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am programming a particle engine for a 3D game written in XNA. I was wondering if somebody could point me in the right direction or perhaps give me some pointers in making the particles collide with geometry in game. In essence, I want to be able to make a spark emitter that will bounce and collide down say, a cylindrical tube.

share|improve this question
Are you looking for engines that do this, how to manually implement it, or both? – The Communist Duck Oct 23 '10 at 12:03
I am making an engine to do this for me. – Dave Oct 23 '10 at 21:22

Particle mechanics isn't terribly difficult to understand in general, but there are some messy details.

The single biggest thing to remember is Truesdell's Axiom: "No two distinct masses may occupy the same point in space at the same point in time." Simulating particle dynamics is largely about creatively breaking that axiom, while still preserving physical plausibility.

There's several methods for enforcing non-penetration: measure differential inclusions, displacement based penalties, and velocity based restitution are fairly well developed computationally.

Since you're interested in gaming, I'd recommend focusing on restitution-based methods which produce diagonal systems of equations (i.e., you can solve them explicitly).

A good first reference for details is "D. Baraff, Dynamic Simulation of Non-Penetrating Rigid Bodies, (Ph. D thesis), Technical Report 92-1275, Computer Science Department, Cornell University, 1992."

I would start with Baraff's work and either Bullet or O.D.E. Work in parallel between theory and code.

Also, if you can find papers on Distinct Element Method by Peter Cundall, you might find those an easier entry point.

Particle interaction is very rich. Don't expect overnight success, and you will have a lot of fun.

share|improve this answer

For 3d physics, you can use 3D Physics Engines as Bullet, Newton or O.D.E. It is probably at first sight overhead... but you can use it for many great effects or add physic in your gameplay.

You can use PAL to abstract the Physics Engine.

share|improve this answer
O.D.E is the same link as bullet, but I understand the idea. – Dave Oct 23 '10 at 21:23

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.