Ok, so while creating my Agbar game, I wanted to play around with particles. I’m think of making the world destroyable, and this would involve individual particles.
So, I created ParticleWorld. The example is shown in the video below.
In this video, there are 7 sources of particles (in seven different colors). One source sprouts up from the bottom middle like a fountain, two come up from the corners, two flow down from the corners, one sprouts in the center (almost like a firework), and there is a constant (orange colored) “rain”.
The debug information on the screen show the Processing FPS (60), Drawing FPS (30), the number of particles in each color and total particles (~7400). The final line shows the time it takes to process all 7400 particles (3-4ms running in a single thread on my 5+ year old Athlon X2 5000+, OCed to 3.2GHz).
Each particle maintains a constant, random X velocity (no air resistance, orange pixels have no lateral movement). The Y velocity is subject to “normal” gravitational acceleration (9.81 pixels/second/second “down”). The rain is populated in a 1:50 ratio (roughly every 50th column gets a pixel each Processing cycle). Each “fountain” gets one new particle/per Processing cycle.
So anyway, I think it’s a pretty reasonable demo. 7400 independent particles updating at least 250 times per second (if the Processing cycle wasn’t locked to 60Hz) isn’t bad. I could processing roughly 8 times this number of particles without any lag (at 60Hz). So now all I need to do is figure out how to use this in my Agbar game.
Source is in my repo.