
In that respect I would have the particle effects all share the same pool of memory for your vertex information. I am assuming this is using a API like DirectX or OpenGL to render. You mention this is for education purposes and in that regards these things are pretty nit picky (but important if you are to use this in a game that is particle heavy). Some examples of this is limiting the amount of particle systems or particles that can be managed for performance reasons or having a collision plane that all systems should take into account. This would also allow you a place to handle other functionality that has to do with all your systems. You may also want a manager class that handles the creation and updating of these particle systems. Once you have a tool or are done tweaking I would convert the xml to binary for quick loading. so you can tweak stuff easily while developing (and not having a tool). I would suggest an xml and binary format option for loading. You'll want to only have the bare essentials so you only have to read/write as little memory as possible when running the system.Īs far as making it data driven that should be pretty straight forward. What I hope you're thinking about is what data will make up a particle that will be in the particle class. Opinions are really welcome, and as I stated before, I really want to build this, instead of using another engine, for learning reasons. I haven't thought about some easy way to "save" FX, like for example what would be the best way to tell my engine, "draw Fire", "draw explosion", "draw fountain", etc, maybe storing FX information in xml files would be a good idea, etc. This is what I have in my mind, but I would really love to know if this design approach is good, or if you see I'm missing something or could/should do something different. Some FX may require more than one particle system, for example a Fire FX, could use one system for the fire, one system for smoke and one system for sparks. This four items, would compose the particle system Class. Particle Renderer: In charge of drawing this system, Variable Blending types, particle textures, particle types like triangles, circles, custom. ParticleController: Manages for example rotation around a point, variable particle sizes, variable particle colors, areas around the system to which the particles react in different ways, collision detection ( with other objects or within the particles if becomes necesary ). Also this class should do Emission Controlling, like emitting towards a point, away from a point, in a direction and time to emit. SystemEmitter: The system emitter for the particles, the Emitter class should be able to perform several particle emission techniques, like for example, emitting from lines, points, randomly emitting from a polygon. ParticlesList: A list of the particles that compose the system. That class would contain the following references: I have been thinking on a Class "Particle System",

Right now I generated beautiful particles, but I want to layout the engine to make it easier to work with them. I'm designing my own particle System engine, this is for learning purposes, I don't really want to use an existing engine.
