Multiple Particle Effects
This tutorial is designed to give you some ideas on how to improve the particle system in Quake2, by defining several different types of particles, and rendering them in different ways, you can improve the look and feel of the game tremendously.

This is not a complete cut-and-paste solution. There are many aspects of appearance which should be down to you. Instead, I am hoping to give some directions to work in.

The tutorial is currently in 4 parts, and will deal with, the following topics.
  • Extending the existing particle system, to allow us to define particle types
  • Transferring this extended information from client to renderer
  • Extending the (gl) renderer to render new types in new ways
  • Using particles to handle complex effects
  • Loading different textures for the different types
  • Using new particle types to handle non-particle effects
Preparing The Ground
  • This tutorial adds two new properties to the particle system in the client, and the renderer.
  • It defines several particle types
  • All of the particles are set to the default type
  • The renderer is changed to ignore non-default particles
  • The new properties are transferred from client to renderer
Our First Effect
  • This tutorial redefines the railgun trail as a pair of particles
  • It changes the renderer to draw the new particles.
  • The particles are of complex shape
  • They are drawn with additive blending to increase brightness.
Multiple Textures
  • This tutorial allows the loading of several textures for particles
  • It handles the management of those textures
  • It uses the new textures for rendering the new particle types
Particle Based Lasers
  • This tutorial modifies the client to create 'instant particles' for laser beams
  • It modifies the renderer to disable the original laser rendering code
  • It modifies the BFG Laser temporary entity to use the new particle code
Additional Notes
This is only one way that the particle system can be changed. There are many excellent Quake2 projects out there, with very different particle systems. If you want to compare approaches, you should get the source code for other projects and study them.

I can't give you a complete list, but here are some well-advanced projects that you might consider looking at.
This tutorial is (slightly) simplified from the robust solution which I am actually building into my own engine. For example tutorial 2 refers to a twist issue with the spiral rendering code. I have made a suggestion in the tutorial as to one way that that might be addressed, but I have not pursued it in the tutorial, because I felt that the code would become much more complex than it already is.

It is designed to be a tutorial, rather than a complete recipe.
I have not included any texture files for download. When the tutorial is complete, I may make my textures available.