TileMax Particle System - TMParticleFX

Community Forums/Showcase/TileMax Particle System - TMParticleFX

_Skully(Posted 2009) [#1]
I think I've hammered out most of the kinks in the particle system now. I was playing with particle text and decided to post an example of that. I think I'm just goofing around with the Particle System now honestly.

Anyway, Brand New Particle System, Brand New Timing code! The timing code being the most significant improvement in the system... it appears much more smooth to me and those that have tried it so far agree. The Particle system itself is nearly 500% faster than my previous attempt so I'm extremely happy with that.

V4 has all the bells and whistles... needs some additional effects designed for the package though :(

V4 demo... showing particle text...(v4)
DirectX version and an OpenGL Version


Ver 3
DirectX version and an OpenGL Version

Here is an example showing how those sequencers I keep talking about work...




Whats so special?

- Images are controlled using a specially developed animation control system... so irregular image maps can be used (the ones not organized into discrete areas)
- X,Y, Velocity, Angle, Alpha, Blend, X&Y Scales, Force angle, Velocity, and animation can be controlled by time-based sequencers.
- Everything is pooled (Particles, Sequencers, Anims, & Launchers)


_Skully(Posted 2009) [#2]
Seriously, does anyone know what people are using to record videos of their games?


Taron(Posted 2009) [#3]
No idea, but you could use Jing for example.


TaskMaster(Posted 2009) [#4]
Fraps??


ImaginaryHuman(Posted 2009) [#5]
You could also use GrabPixmap and SavePixmapPNG to save off individual frames, then use an external utility to merge the frames into a movie.


degac(Posted 2009) [#6]
Or try http://camstudio.org/


_Skully(Posted 2009) [#7]
Thanks degac,

I'll check that out camstudio out

How is the demo looking? Is it pretty smooth etc?


degac(Posted 2009) [#8]
Well, CamStudio is an open-source project, so it's ALWAYS in a beta/wip stage.
It works, the quality depens by the hardware (CPU/RAM/HD) but this is for any programs of this kind.

http://www.youtube.com/watch?v=WJ477o0NHs4

This is a test I made based on your demo-test - recorderd with CamStudio2.5 beta and Xvid compression.
I used VirtualDub to make some cut editing in the start and in the end.

Of course - if you try CamStasia (commercial product) you get a screen-recorder AND a video-editor integrated (for annotation, zooming, text and so on...)
But for occasional work I think CamStudio+VirtualDub do the work.

Cheers


Tachyon(Posted 2009) [#9]
http://www.fraps.com/

Fraps. It is not free, it's Windows only, but it is the best.


_Skully(Posted 2009) [#10]
Its coming along nicely.. hammering out some lumps from a useability point of view and some speed enhancements.

I'm very curious how this runs on other machines???


_Skully(Posted 2009) [#11]
Is there any one that can take 5 mins to test this? I only have a laptop to test on so i have no idea if there are any other issues out there.


degac(Posted 2009) [#12]
I've tested it (the second .zip) and unfortunately after some rapid SPACE press (about 10-12) I got EXCEPTION_ACCESS_VIOLATION.
I've runned the program with TaskManager opened to check CPU & Memory usage, nothing strange 3-17% with memory from 19Mb to 36Mb.
Only when I press too much SPACE button I got CPU increase to 50% *(with fps dropping to 45-49 from 59/60) with delay in 'seconds' of screen redraw before the crash.

Tested on: Athlon64 x2 3800+ 2GB Ram, GeForce 6600, WinXP sp2

*50% on a dual core I suppose means 100% on a single core...I dont' know exactly.


_Skully(Posted 2009) [#13]
Oh! thanks... i just reproduced that... I have a sequencer pool leak! There were over 5000 sequencers in the pool which means there all being created on the fly. Thanks degac, i'll fix that!


_Skully(Posted 2009) [#14]
The problem is not necessarily in the ParticleFX system, it was in my execution LOL

The initial effect was running on average 350 particles and then the missiles were adding over a 100 each with the trail + the explosions! because each of the particles in the initial effect has 2 sequencers and the trail particles had 4 sequencers it was quickly exceeding 5000!!

I missed an important aspect to the particle system to prevent this need... parenting. So, I'm adding that! Thanks for finding that degac!


Jesse(Posted 2009) [#15]
I don't think this is what you were aiming for.


this is on my compaq nc6400 laptop and windows 7 with centrino duo 2Ghz and intel 945GM graphics.
I think this laptop has the worst graphics processor ever created by Intel. What makes it worst is the fact that the driver has been locked by HP so I can't even get an update by Intel and HP is not going to make a drivers for Windows 7. :-(


_Skully(Posted 2009) [#16]
OMG.. what the bleep is happening there! Is it just my particle system doing that? I can't even imagine why that would be happening other than my currently using the OpenGL driver.

I'll switch it to DX and post it as another version... could be your OpenGL drivers are pooched! The DX drivers run 1/2 speed on my laptop


_Skully(Posted 2009) [#17]
Here is a DX Version that shouldn't crash


plash(Posted 2009) [#18]
It's really easy to get an unhandled exception error message if you launch off enough of those projectile thingies.


Jesse(Posted 2009) [#19]
the DX Version runs fine.


_Skully(Posted 2009) [#20]
It's really easy to get an unhandled exception error message if you launch off enough of those projectile thingies.


Its the sequencer pool array exceeding 5000, unfortunately I didn't build in any expansion room for the array... D'oh!

First I'm looking at reducing the need for additional sequencers through particle parenting, and then I'll add the ability for the array to expand.

I'm also going to reconsider how the sequencers update... Hopefully I will be able to achieve the same effect with about 96 fewer particles per missile and have reduced sequencer integration costs by about 9 operations per particle.

wish me luck ;)


Chroma(Posted 2009) [#21]
I hit the space bar 3 times...everything chugged/bogged down. Right after the explosion it had a fatal exception and crashed to desktop.


MGE(Posted 2009) [#22]
Same here. Static pool size? eek!


_Skully(Posted 2009) [#23]
Ya I'm on it...

I'll remove the links above since its obviously pooched at the moment. D'oh!


_Skully(Posted 2009) [#24]
Ok... sorted most of it.. still have some optimizing to do but its working pretty good now I think :)


_Skully(Posted 2010) [#25]
New Particle System, New Timing code.. at the top of the thread Cheers.

How many particles do you get at 60fps?

Use the PageUp/PageDn to increase/decrease the mouse-star rate
spacebar to your hearts content, <- -> to change the angle of fire

P=Snapshot


Duckstab[o](Posted 2010) [#26]
Directx
11,000 30Fps
5400 60Fps

OpenGl
16,600 30Fps
8700 60Fps


degac(Posted 2010) [#27]
DX

3400/3480 59-60FPS rate: 15
5180-5190 29-30FPS rate: 30

OpenGL

4080-4100 59-60fps rate: 17
8300-8310 29-30fps rate: 50

tested on Athlon64 x2 3800+ 2GB Ram, GeForce6600, WinXP sp2 pro


_Skully(Posted 2010) [#28]
Thanks for testing it!

DX 5400 and OpenGL 8700! Wow thats huge! I can only imagine what your screen must have looked like with that many particle flying around. I wish I had a video card capable of that. Strange that your OpenGL is faster than DX as well... DX is dog slow on my machine.. of course, thats not DX9, just the default.

How was the smoothness? any choppiness or other hickups?

The timing code I'm using now is much more comprehensive than the old one... I coded it from scratch but I did review several options in the code archives first to see how others dealt with it. I took a few different ideas and merged them together and it seems to work pretty well. One was setting a Particle frequency which determines how many millisecs one game tick is, another was delta limiting (settable parameter), and the last was ensuring no ticks were lost due to float inaccuracies.

The main benefit to not using every ms as a game tick was the particle speeds... I used to deal in 0.001's - 0.04 and the like, whereas now its generally in whole numbers (of course thats for full screen effects)

I've got a 150% maximum delta per call... so if there is any kind of pause, it will catch up over a number of frames. I might have to play with that number to get it just right though


_Skully(Posted 2010) [#29]
For anyone interested dabz found a minor shimmy issue when the particles were reaching the edge of view. I found where the shimmy is coming from... I must have had INT's on the brain when I created the Anim.Draw method... its now fixed and will be updated later when I get home.

Cheers


_Skully(Posted 2010) [#30]
OK Fixed! I updated the top post links to download version 3

My anim draw routine (mod from TileMax) was using int coordinates instead of floats! So, now I think its all smoother

Also, I'm using precache for all pooled objects.. so the particle pool gets filled up on start.

Cheers


_Skully(Posted 2010) [#31]
Added a version 4 mini-demo showing particle text


MGE(Posted 2010) [#32]
Quite frankly (and with all due respect) I suggest you get about 3-5 testers and really nail down the core routines of this framework before making another public showing.

Personally I'll check on this again in another month or so and see what kind of progress you've made. Hopefully it will be a more stable state with more features, etc, etc.

I would love to use a tile/platform engine for a few short projects, this is the closest I've seen yet, so I appreciate your continued work on it.


_Skully(Posted 2010) [#33]
MGE,

Funny you mention that... I'm just getting to that point now. In fact, a private forum is being set up as we speak on BlitzMonkeys for that very purpose. I'll be requesting alpha testers soon...

this is the closest I've seen yet

Thanks :)