Zunächst sei gesagt...

0.) ... dass mir bekannt ist, dass durch die breite Tabelle das Seitenlayout eventuell gesprengt wird. Auch sonst gewinnt weder Aussehen noch Seitenquelltext einen Schönheitspreis.
1.) ... dass es bereits (mindestens) eine gute Einführung in Partikeleffekte, nämlich hier gibt. Diese ist leider nicht editierbar. Sie setzt einige Schwerpunkte nicht, die ich hier setzen werde, ist aber dafür vielleicht an anderen Stellen anschaulicher.
2.) ... Partikeleffekte sind nur dann schwierig, wenn man nicht weiß, was die einzelnen Eigenschaften bedeuten. Also viel Spaß und DON'T PANIC!

Was sind Partikeleffekte

Ein Partikeleffekt ist ein mathematisch präzise beschriebener, meist randomisierter Effekt, mit dem versucht wird meist chaotische (wie Feuer) oder amorphe (wie Nebel) Gebilde darzustellen. Dazu werden viele gleichartige Elemente (Partikel) nach einer bestimmten Vorschrift gezeichnet.
Einen Partikeleffekt in Gothic zeichnet aus:

0.) Der Emitter: Die Menge der Punkte an der Partikel entstehen können. Oft ein einzelner Punkt, manchmal aber auch eine Kugel, ein Quader oder ein anderes Gebilde.
1.) Die Partikel: Partikel sind Decals, das heißt flache Texturen, die im Raum herumschweben.
2.) Eine Vorschrift, die beschreibt, wann wieviele Partikel erzeugt werden, in welche Richtung sie fliegen, wie groß sie sind und wie die Farben der Textur mit dem Hintergrund verrechnet werden (und manches mehr).

Die genauen Eigenschaften und deren Bedeutung sind in folgender Tabelle gelistet.

Anmerkungen zur Tabelle

BOOL: In Gothic gibt es formal keine Boolschen-Werte. Alle Werte, die ich als "BOOL" gekennzeichnet habe sind technisch gesehen Integerwerte, die aber nur den Informationsgehalt eines Bits haben. Eine 0 entspricht FALSE, alle anderen Werte entsprechen TRUE.
cl: Mit "cl" als Einheit meine ich einen Abstand von 1 in der Farbscale von 0 und 255, wobei 0 das Minimum und 255 das Maximum darstellt. Tatsächlich muss man sich solche Zahlen aber als Werte zwischen 0.0 (0) und 1.0 (255) darstellen.
Andere Einheiten: cm (Centimeter), s (Sekunden), ms (Millisekunden)
|X|: Die Anzahl der Elemente in X. So ist (|"1 2 3 4"| == 4)
==: Bedeutet Gleichheit
!=: Bedeutet Ungleichheit
(x,y,z): Tupel stelle ich als Liste in Klammern dar. Ein Tupel wird in Daedalus als String dargestellt, wobei die Elemente durch Leerzeichen getrennt sind, zum Beispiel: "1 2 3".
Fehlende Tabellenzellen: Eine fehlende/leere Tabellenzelle in der Spalte "Relevant wenn" bedeutet, dass der Wert immer eine Relevanz hat. Eine fehlende/leere Zelle bei "Einheit" bedeutet, dass die Eigenschaft entweder dimensionslos ist (wie ein Faktor) oder die Werte einfach nur stellvertretend für Eigenschaften stehen ohne eine Dimension zu besitzen.

Tabelle mit allen Eigenschaften der C_PARTICLEFX Klasse

Variablentyp Eigenschaftsname "Langform" des Namens Einheit Relevant wenn Bedeutung
FLOATppsValueParticles per Second (Value)1/sSo viele Partikel werden pro Sekunde erzeugt
STRINGppsScaleKeys_SParticles per Second: Scale KeyframesReihe von Faktoren, um die ppsValue im Verlauf skaliert wird
BOOLppsIsLoopingParticles per Second: Is Looping?Soll nach Durchlaufen aller Faktoren in ppsScaleKeys_S wieder von vorne begonnen werden? Andernfalls endet der PFX!
BOOLppsIsSmoothParticles per Second: Is Smooth?|ppsScaleKeys_S| > 1Sollen die Faktoren in ppsScaleKeys_S hart aufeinander folgen oder linear ineinander übergeblendet werden?
FLOATppsFPSParticles per Second: Frames per Second1/s|ppsScaleKeys_S| > 1Wie schnell soll die Liste der Faktoren in ppsScaleKeys_S durchlaufen werden?
STRINGppsCreateEm_SParticles per Second: Create EmitterEin weiterer PFX, der zusätzlich erzeugt wird. Die Eigenschaft wird selten verwendet.
FLOATppsCreateEmDelayParticles per Second: Create Emitter DelaymsppsCreateEm_S nicht leerMit dieser Verzögerung wird der in ppsCreateEm_S genannte Effekt erzeugt.
STRINGshpType_SShape: TypeAuf welchem Körper sollen die Partikel erzeugt werden. Mögliche Werte sind "POINT" für einen Punkt, "LINE" für eine senkrechte Linie, "CIRCLE" für einen flach liegenden Kreis, "BOX" für einen Quader und "SPHERE" für eine Kugel. Auch der Wert "MESH" ist möglich für ein beliebiges Mesh.
STRINGshpFOR_SShape: Frame of ReferenceSoll der Effekt am Koordinatensystem der Welt "WORLD" oder des Effekts "OBJECT" ausgerichtet werden? Ist "WORLD" gewählt hat die Drehung des Partikeleffekt-Objekts keinen Einfluss auf die Startposition der Partikel
STRINGshpOffsetVec_SShape: Offset Vector(cm,cm,cm)Um diesen Vektor ist der Emitter vom Ursprung des Objekts verschoben
STRINGshpDistribType_SShape: Distribution Type(shpType_S=="LINE") ODER (shpType_S=="CIRCLE")Bei Linien oder Kreisen kann "WALK" benutzt werden, um die Partikelquelle gleichmäßig entlang der Linie/dem Kreis "laufen" zu lassen. Ansonsten gibt es nur die zufällige Verteilung "RAND". Der Wert "UNIFORM" scheint nicht zu funktionieren und "WALKW" verhält sich gleich wie "WALK"
FLOATshpDistribWalkSpeedShape: Distribution Walk Speed~100*Umläufe/s(shpDistribType_S=="WALK")Die Geschwindigkeit, mit der Kreis bzw. Linie umlaufen werden.
BOOLshpIsVolumeShape: Is Volume?(shpType_S=="BOX") ODER (shpType_S=="SPHERE)Wenn gesetzt, werden auch innerhalb einer Kugel bzw. einem Quader Partikel erzeugt anstatt nur an den Begrenzungsflächen
STRINGshpDim_SShape: Dimension([cm,[cm,[cm]]])(shpType_S!="POINT")Die Größe des Emitters muss entsprechend dem Typ angegeben werden. Für den Kreis oder die Kugel der Durchmesser, für die Linie eine Länge und für einen Quader drei Kantenlängen
STRINGshpMesh_SShape: Mesh(shpType_S=="MESH")Wenn der Emitter ein Mesh ist, muss auch angegeben werden welches. Dies kann hier geschehen.
BOOLshpMeshRender_BShape: Render the Mesh?(shpType_S=="MESH")Wenn der Emitter ein Mesh ist (die Partikel darauf erzeugt werden) heißt das noch nicht automatisch, dass das Mesh auch mitgerendert wird. Dies wird gesondert hier festgelegt.
STRINGshpScaleKeys_SShape: Scale: Keyframes(shpType_S!="POINT")Eine Reihe von Faktoren, um die die Größe des Emitters im Verlaufe skaliert wird (so würde eine Kugel mit dem Wert "1 2" während der Laufzeit des Effekts doppelt so groß).
BOOLshpScaleIsLoopingShape: Scale: Is Looping?(|shpScaleKeys_S| > 1)Soll nach durchlaufen aller Faktoren in shpScaleKeys_S wieder von vorne in der Liste begonnen werden?
BOOLshpScaleIsSmoothShape: Scale: Is Smooth?(|shpScaleKeys_S| > 1)Sollen die Faktoren in shpScaleKeys_S hart aufeinanderfolgen oder sollen sie linear ineinander übergeblendet werden?
FLOATshpScaleFPSShape: Scale: Frames per Second1/s(|shpScaleKeys_S| > 1)Wie schnell soll die Liste der Faktoren in shpScaleKeys_S durchlaufen werden?
STRINGdirMode_SDirection: ModeWird die Richtung der Partikel explizit angegeben ("DIR"), zufällig gewählt ("RAND") oder steuern die Partikel auf ein Ziel zu ("TARGET")?
STRINGdirFOR_SDirection: Frame of Reference(dirMode_S=="DIR")Soll die Flugrichtung der Partikel am Koordinatensystem der Welt "WORLD" oder des Effekts "OBJECT" ausgerichtet werden? Ist "WORLD" gewählt hat die Drehung des Partikeleffekt-Objekts keinen Einfluss auf die Flugrichtung der Partikel
STRINGdirModeTargetFOR_SDirection: Target: Frame of Reference(dirMode_S=="TARGET")Soll die Position des Ziels mit den Koordinatenachsen der Welt "WORLD" oder des Effekts "OBJECT" bestimmt werden? Ist "WORLD" gewählt hat die Drehung des Partikeleffekt-Objekts keinen Einfluss auf das Ziel der Partikel
STRINGdirModeTargetPos_SDirection: Target: Position(cm,cm,cm)(dirMode_S=="TARGET")Koordinaten des Ziels, auf das die Partikel zusteuern sollen (hat nur bei der Erzeugung Einfluss auf die Flugrichtung! Partikel können z.B. durch Gravitation abgelenkt werden!)
FLOATdirAngleHeadDirection: Angle HeadGrad(dirMode_S=="DIR")Richtung in die die Partikel fliegen, vorstellbar als der Winkel nach "links" (+) oder "rechts" (-).
FLOATdirAngleHeadVarDirection: Angle Head VarianceGrad(dirMode_S=="DIR")Der tatsächliche Wert von dirAngleHead wird zufällig im Interval [dirAngleHead - dirAngleHeadVar, dirAngleHead + dirAngleHeadVar] gestreut.
FLOATdirAngleElevDirection: Angle ElevGrad(dirMode_S=="DIR")Richtung in die die Partikel fliegen, vorstellbar als der Winkel nach "oben" (+) oder "unten" (-).
FLOATdirAngleElevVarDirection: Angle Elev VarianceGrad(dirMode_S=="DIR")Der tatsächliche Wert von dirAngleElev wird zufällig im Interval [dirAngleElev - dirAngleElevVar, dirAngleElev + dirAngleElevVar] gestreut.
FLOATvelAvgDirection: Velocitycm/msGeschwindigkeit der Partikel
FLOATvelVarDirection: Velocity Variancecm/msDie tatsächliche Geschwindigkeit der Partikel wird zufällig im Interval [velAvg - velVar, velAvg + velVar] gestreut.
FLOATlspPartAvgLifespan of Particles: AveragemsLebenszeit der Partikel
FLOATlspPartVarLifespan of Particles: VariancemsDie tatsächliche Lebenszeit der Partikel wird zufällig im Interval [lspPartAvg - lspPartVar, lspPartAvg + lspPartVar] gestreut.
STRINGflyGravity_Sfly(???): Gravity(cm/ms²,cm/ms²,cm/ms²)Gravitation in Richtung der drei Koordinatenachsen der Welt. Einen FrameOfReference-Wert um die Gravitation im Koordinatensystem des Objekts wirken zu lassen gibt es hier nicht.
INTflyCollDet_Bfly(???): Collision DetectionDie Kollisionserkennung kennt verschiedene Modi: 0 = Keine Kollisionserkennung; 1 = Die Partikel werden abgebremst und reflektiert; 2 = die Partikel werden beschleunigt und reflektiert; 3 = die Partikel halten an; 4 = die Partikel werden entfernt
STRINGvisName_SVisual: NameName der Textur, die jeder Partikel hat
STRINGvisOrientation_SVisual: OrientationOrientierung der Partikel zur Kamera: "NONE" = Die Partikel schauen immer genau zur Kamera; "VELO" = die Partikel erscheinen kleiner, je stärker Flug- und Blickrichtung übereinstimmen. Die Partikel "zeigen" scheinbar in Flugrichtung (sind aber letztlich immernoch zur Kamera ausgerichtet); "VELO3D" = Die Partikel sind in Flugrichtung ausgerichtet, nur mit dem verbleibenden Freiheitsgrad werden sie zur Kamera ausgerichtet.
BOOLvisTexIsQuadPolyVisual: Is Texture a Quad Poly?Wenn gesetzt wird nicht bloß die obere rechte Ecke der Textur gerendert, sondern ein ganzes Rechteck. Das schlägt doppelt auf die Alpha-Poly-Begrenzung, sieht aber je nach Textur deutlich besser aus.
FLOATvisTexAniFPSVisual: Texture Animation: Frames per Second1/sTextur hat mehrere FramesWenn die Textur mehrere Frames hat ("*.A0.TGA", "*.A1.TGA", …) dann kann die Anzahl der Texturwechsel pro Sekunde gewählt werden.
BOOLvisTexAniIsLoopingVisual: Texture Animation: Is Looping?Textur hat mehrere FramesIn aller Regel sollte eine animierte Textur loopen, das heißt, wenn der letzte Frame erreicht ist, sollte wieder beim ersten begonnen werden. Dies kann hier angegeben werden.
STRINGvisTexColorStart_SVisual: Texture Color: Start(cl,cl,cl)Faktoren ("[R] [G] [B]") für die einzelnen Farbkanäle. "255 255 255" (weiß) würde die Textur nehmen, wie sie ist, wohingegen "255 128 0" (orange) den grünen Kanal auf die Hälfte und den blauen Kanal auf 0 skaliert. Mit den gegebenen Beispielfaktoren könnte ein weißer Rauch zu einem orangenen Rauch gefärbt werden.
STRINGvisTexColorEnd_SVisual: Texture Color: End(cl,cl,cl)Wie visTexColorStart_S nur der Wert für das Ende der Lebenszeit des Partikels. Zwischen Geburt und Tot wird von visTexColorStart_S linear zu visTexColorEnd_S übergeblendet.
STRINGvisSizeStart_SVisual: Size: Start(cm,cm)Größe der Partikel. Bei (visOrientation_S=="NONE") steht der erste Wert für die X-Richtung auf dem Bildschirm, der zweite für die Y-Richtung. Für andere Werte von visOrientation_S ist der zweite Wert die Größe in Flugrichtung.
FLOATvisSizeEndScaleVisual: Size: End ScaleDie Größe der Partikel verändert sich linear während der Lebenszeit, sodass sie am Ende visSizeEndScale mal so groß sind.
STRINGvisAlphaFunc_SVisual: Alpha-FunctionVerschiedene Überblendungsmodi. Bei "NONE" und "BLEND" liegt eine verdeckende Überblendung vor wie etwa, wenn mehrere bemalte Folien übereinandergelegt werden. "ADD" addiert die Farben jeder Fläche auf die des Hintergrunds auf, so gäbe rot (1, 0, 0) + grün (0, 1, 0) => gelb (1, 1, 0). Ein voll gesättigter Farbkanal bleibt allerdings voll: rot + rot => rot; es besteht also die Gefahr des Überbelichtens. "MUL" multipliziert die Farbkanäle der Fläche mit dem Hintergrund, so ergibt beispielsweise orange (1,0.5,0) mal grün (0, 1, 0) => dunkelgrün (0, 0.5, 0); sprich: wird mit grün multipliziert, wird nichts als grün durchgelassen. Üblicherweise benutzen Partikeleffekte den Modus "ADD". "MUL" wird wegen der Eigenheit, dass nur der Hintergrund bearbeitet wird, ohne dass der Effekt selbst ein Aussehen hätte, für PFX kaum benutzt.
FLOATvisAlphaStartVisual: Alpha: Startcl(visAlphaFunc_S=="ADD") ODER (visAlphaFunc_S=="BLEND")Wird als Überblendungsmodus "BLEND" oder "ADD" verwendet, wird der Alphakanal der Partikeltextur skaliert. visAlphaStart ist der Startwert für diesen Faktor und wird bis zum Tot des Partikels linear zu visAlphaEnd herabgesetzt bzw. heraufgesetzt. visAlphaEnd ist oft 0, damit die Partikel nicht abrupt verschwinden.
FLOATvisAlphaEndVisual: Alpha: Endcl(visAlphaFunc_S!="NONE") ODER (visAlphaFunc_S=="BLEND")siehe visAlphaStart
FLOATtrlFadeSpeedTrail: Fade Speedcl/msPartikeleffekte können in ihrer Flugbahn eine Spur erzeugen, die langsam verblasst. trlFadeSpeed ist die Geschwindigkeit mit der diese Spur verschwindet
STRINGtrlTexture_STrail: Texture(trlFadeSpeed > 0)Textur der Spur
FLOATtrlWidthTrail: Widthcm(trlFadeSpeed > 0)Breite der Spur
FLOATmrkFadeSpeedMark: Fade Speedcl/ms(flyCollDet_B != 0)"Marks" sind Flecken, die bei der Kollision eines Partikeleffekts mit dem Levelmesh auf dem Levelmesh erzeugt werden. mrkFadeSpeed ist die Geschwindigkeit mit diese Flecken verschwinden
STRINGmrkTexture_SMark: Texture(mrkFadeSpeed > 0)Textur der Flecken
FLOATmrkSizeMark: Sizecm(mrkFadeSpeed > 0)Größe der Flecken
STRINGflockModeFlock Mode??????
FLOATflockStrengthFlock Strength?????????
BOOLuseEmittersFORuse Emitters Frame of Reference?Effekt bewegt sichWenn gesetzt, sind die Partikel "Kinder" des Emitters. Sie bewegen sich also mit, wenn sich der Emitter bewegt (anstatt nur ihrer eigenen Bewegung nachzugehen).
STRINGtimeStartEnd_SStart- and Endtime of Rendering(Stunde,Stunde)Zeitinterval, in dem der Effekt gerendert wird. Glühwürmchen könnte man etwa das Interval "22 3" geben, sodass sie nur in der Nacht zwischen 22:00 und 3:00 Uhr zu sehen sind.
BOOLm_bIsAmbientPFXIs Ambient PFX?Spieler hat Ambiet-PFX in den Optionen deaktiviertAmbient-PFX werden nicht gerendert (wenn der Spieler das so in seinen Einstellungen gewählt hat).