ParticleFXВот полный список параметров для инстанций класса C_PARTICLEFX из файла PfxInstMagic.d. Этот файл отвечает за визуальные эффекты заклинаний. Все параметры сгруппированы по их функции. Временные параметры излученияЭта группа описывает, как именно и с какой скоростью рождаются частицы. Параметр Тип Описание Пример ppsValue FLOAT Базовое количество частиц, создаваемых в секунду. ppsValue = 40; ppsScaleKeys_S STRING Список коэффициентов для ppsValue во времени. Позволяет менять количество частиц, например, делать "всплески" эффекта. ppsScaleKeys_S = "1.0 0.5 0.2"; ppsIsLooping INT Флаг BOOL. Если 1, то цикл изменения (из ppsScaleKeys_S) зацикливается. Если 0, эффект умирает после одного прохода. ppsIsLooping = 1; ppsIsSmooth INT Флаг BOOL. Если 1, то изменения между ключами в ppsScaleKeys_S будут сглажены (линейная интерполяция). Если 0 — переходы резкие. ppsIsSmooth = 1; ppsFPS FLOAT Скорость, с которой проигрывается список ppsScaleKeys_S (в кадрах в секунду). ppsFPS = 0.8; ppsCreateEm_S STRING Позволяет создать другой PFX-эффект одновременно с текущим. Редко используемая, но мощная опция. ppsCreateEm_S = "MFX_Explosion_INIT"; ppsCreateEmDelay FLOAT Задержка в миллисекундах перед созданием эффекта, указанного в ppsCreateEm_S. ppsCreateEmDelay = 500; Пространственное распределение (Эмиттер)Эти параметры определяют форму, размер и положение источника частиц. Параметр Тип Описание Пример shpType_S STRING Форма эмиттера. Варианты: "point", "line", "circle", "box", "sphere", "mesh". shpType_S = "sphere"; shpFOR_S STRING Система координат для эмиттера: "world" (мир) или "object" (объект). Влияет на то, будет ли источник двигаться с объектом. shpFOR_S = "object"; shpOffsetVec_S STRING Смещение центра эмиттера от центра объекта. Задается вектором "X Y Z" в сантиметрах. shpOffsetVec_S = "0 50 0"; shpDistribType_S STRING Тип распределения частиц на эмиттере: "RAND" (случайно), "UNIFORM" (равномерно), "WALK" (прогулка по форме). shpDistribType_S = "WALK"; shpDistribWalkSpeed FLOAT Скорость "прогулки" по форме при shpDistribType_S = "WALK". shpDistribWalkSpeed = 0.0001; shpIsVolume INT Флаг BOOL. Если 1 и форма "box" или "sphere", частицы рождаются по всему объему. Если 0 — только на поверхности. shpIsVolume = 1; shpDim_S STRING Размеры эмиттера. Для "sphere"/"circle" — один радиус "R". Для "box" — три размера "X Y Z". shpDim_S = "100 50 100"; snpMesh_S STRING Имя mesh-файла (например, .3ds), если shpType_S = "mesh". snpMesh_S = "myMesh.3ds"; shpMeshRender_B INT Флаг BOOL. Если 1, сам mesh (из snpMesh_S) будет визуализироваться. shpMeshRender_B = 1; shpScaleKeys_S STRING Коэффициенты масштабирования эмиттера во времени (аналогично ppsScaleKeys_S). shpScaleKeys_S = "1.0 0.5 1.0"; shpScaleIsLooping INT Флаг BOOL. Зацикливает изменение масштаба (из shpScaleKeys_S). shpScaleIsLooping = 1; shpScaleIsSmooth INT Флаг BOOL. Сглаживает изменения масштаба между ключами в shpScaleKeys_S. shpScaleIsSmooth = 1; shpScaleFPS FLOAT Скорость проигрывания ключей масштабирования (из shpScaleKeys_S) в FPS. shpScaleFPS = 2; Движение частицЗдесь задается, куда и с какой скоростью летят частицы после рождения. Параметр Тип Описание Пример dirMode_S STRING Режим направления: "RAND" (случайное), "DIR" (конкретное), "TARGET" (на цель). dirMode_S = "DIR"; dirFOR_S STRING Система координат для заданного направления ("world" или "object"). dirFOR_S = "world"; dirAngleHead FLOAT Угол направления по горизонтали (азимут) в градусах. dirAngleHead = 45; dirAngleHeadVar FLOAT Допустимое отклонение для dirAngleHead для создания рассеивания. dirAngleHeadVar = 15; dirAngleElev FLOAT Угол направления по вертикали (элевация) в градусах. dirAngleElev = -30; dirAngleElevVar FLOAT Допустимое отклонение для dirAngleElev. dirAngleElevVar = 10; velAvg FLOAT Средняя скорость частиц (см/мс). Именно этот параметр отвечает за горизонтальную скорость. velAvg = 200; velVar FLOAT Разброс скорости частиц. velVar = 50; flyGravity_S STRING Вектор гравитации "X Y Z", который влияет на траекторию (например, "0 -200 0" тянет вниз). flyGravity_S = "0 -100 0"; flyCollDet_B INT Включает столкновения с миром. 0 — нет; 1 — замедление и отскок; 2 — ускорение и отскок; 3 — остановка; 4 — удаление частицы. flyCollDet_B = 1; Жизненный циклЭти параметры отвечают за "время жизни" каждой частицы. Параметр Тип Описание Пример lspPartAvg FLOAT Среднее время жизни одной частицы в миллисекундах. lspPartAvg = 2000; lspPartVar FLOAT Разброс времени жизни частиц в миллисекундах. lspPartVar = 500; ВизуализацияЭти параметры управляют тем, как выглядит частица. Параметр Тип Описание Пример visName_S STRING Имя текстурного файла (.TGA) для частиц. Обычно путь относительно папки _work/Data/Textures. visName_S = "FX_SMOKE_01.TGA"; visOrientation_S STRING Ориентация спрайта к камере: "NONE" (всегда к камере), "VELO", "VELO3D". visOrientation_S = "NONE"; visTexIsQuadPoly INT Флаг BOOL. Рендерить как полноценный 2D-квадрат, а не как точку. Улучшает вид, но нагружает систему. visTexIsQuadPoly = 1; visTexAniFPS FLOAT Скорость анимации текстуры в FPS, если текстура — это последовательность кадров (например, name_A0.TGA, name_A1.TGA). visTexAniFPS = 24; visTexAniIsLooping INT Флаг BOOL. Зациклить анимацию текстуры. visTexAniIsLooping = 1; visTexColorStart_S STRING Начальный цвет частицы в формате "R G B" (0-255). Белый "255 255 255" означает "без изменений". visTexColorStart_S = "255 128 0"; visTexColorEnd_S STRING Конечный цвет частицы. Цвет будет плавно меняться от Start к End за время жизни частицы. visTexColorEnd_S = "255 0 0"; visSizeStart_S STRING Начальный размер частицы "Ширина Высота" (в см для 3D-пространства). visSizeStart_S = "50 50"; visSizeEndScale FLOAT Коэффициент масштабирования к конечному размеру (умножает visSizeStart_S). Позволяет частицам расти или сжиматься. visSizeEndScale = 0.5; visAlphaFunc_S STRING Режим смешивания цветов с фоном: "NONE", "BLEND", "ADD" (обычно для огня/магии), "MUL". visAlphaFunc_S = "ADD"; visAlphaStart FLOAT Начальная прозрачность частицы (0 — полностью прозрачна, 1 — непрозрачна). visAlphaStart = 0.8; visAlphaEnd FLOAT Конечная прозрачность частицы. Часто ставится 0, чтобы частицы плавно исчезали. visAlphaEnd = 0; Специальные эффекты (Следы, Отметки, Стаи)Сюда входят дополнительные эффекты вроде свечения, следов и отметок при столкновении. Параметр Тип Описание Пример trlFadeSpeed FLOAT Скорость затухания следа от движущейся частицы. След включается, если значение > 0. trlFadeSpeed = 0.5; trlTexture_S STRING Текстура для следа частицы. trlTexture_S = "FX_TRAIL.TGA"; trlWidth FLOAT Ширина следа в сантиметрах. trlWidth = 10; mrkFadeSpeed FLOAT Скорость затухания "отметки", которая появляется на месте столкновения частицы с поверхностью (например, дым от пули). mrkFadeSpeed = 0.3; mrkTexture_S STRING Текстура отметки. mrkTexture_S = "FX_MARK.TGA"; mrkSize FLOAT Размер отметки в сантиметрах. mrkSize = 15; flockMode STRING Включает поведение "стая" (частицы следуют за лидером). Требует дополнительных настроек. flockMode = "MODE"; flockStrength FLOAT Сила притяжения к вожаку стаи. flockStrength = 0.5; useEmittersFOR INT Флаг BOOL. Если 1, то частицы наследуют движение эмиттера (например, вылетают из движущейся руки). useEmittersFOR = 1; timeStartEnd_S STRING Интервал игрового времени в часах "Начало Конец", когда эффект виден. Например, для ночных светлячков. timeStartEnd_S = "22 3"; m_bIsAmbientPFX INT Флаг BOOL. Если 1, эффект считается атмосферным и может отключаться в настройках игры. m_bIsAmbientPFX = 1; VisualFXВот полный список параметров для VisualFXInst.d. В отличие от PfxInstMagic.d, где собраны «сырые» частицы, этот файл служит управляющей оболочкой (CFx_Base_Proto) для них: он отвечает за анимацию, прикрепление к модели персонажа и взаимодействие с миром. Траектория и наведениеЭти параметры управляют тем, как эффект перемещается в пространстве, куда направлен и как строит свой путь. Параметр Тип Описание Пример emTrjMode_S STRING Режим траектории. Определяет, как эффект летит к цели: "FIXED" (фиксированное направление), "TARGET" (на цель), "SPLINE" (по сплайну), "LINE" (по линии), "RANDOM" (случайные точки). emTrjMode_S = "TARGET"; emTrjOriginNode STRING Узел-источник. Часть модели ("BIP01" или "ZS_RIGHTHAND"), из которой начинается эффект. Обычно привязан к анимации персонажа. emTrjOriginNode = "ZS_RIGHTHAND"; emTrjTargetNode STRING Узел-цель. Часть модели цели, к которой будет лететь эффект, например, "BIP01 HEAD" для попадания в голову. emTrjTargetNode = "BIP01 HEAD"; emTrjTargetRange FLOAT Дальность полёта. Максимальная дистанция, на которую эффект может удалиться от источника, прежде чем исчезнуть (в метрах). emTrjTargetRange = 15.0; emTrjTargetAzi FLOAT Азимут цели. Горизонтальный угол поворота эффекта при наведении на цель (в градусах). emTrjTargetAzi = 45.0; emTrjTargetElev FLOAT Угол места цели. Вертикальный угол наведения эффекта (в градусах). emTrjTargetElev = 30.0; emTrjNumKeys INT Количество опорных точек. Минимальное число случайных точек для построения траектории. emTrjNumKeys = 3; emTrjNumKeysVar INT Вариация опорных точек. Дополнительное случайное количество точек (с низкой вероятностью появления). emTrjNumKeysVar = 1; emTrjAngleElevVar FLOAT Вариация угла места. Диапазон случайного отклонения по вертикали для создания "разброса" траектории. emTrjAngleElevVar = 5.0; emTrjAngleHeadVar FLOAT Вариация азимута. Диапазон случайного отклонения по горизонтали. emTrjAngleHeadVar = 5.0; emTrjKeyDistVar FLOAT Вариация дистанции ключей. Фактор случайного расстояния (от 0.0 до 1.0), на который умножается дистанция до опорной точки. emTrjKeyDistVar = 0.5; emTrjLoopMode_S STRING Режим зацикливания траектории. Что происходит, когда эффект достигает конца пути: "RESTART", "PINGPONG_ONCE", "PINGPONG", "HALT". emTrjLoopMode_S = "RESTART"; emTrjEaseFunc_S STRING Функция плавности. Определяет характер движения по траектории: "LINEAR" (линейно) или "SINE" (синусоидально). emTrjEaseFunc_S = "SINE"; emTrjEaseVel FLOAT Скорость плавности. Значение, влияющее на интенсивность работы функции плавности. emTrjEaseVel = 1.0; emTrjDynUpdateDelay FLOAT Задержка обновления динамической траектории. Время в секундах, через которое обновляется позиция движущегося эффекта. emTrjDynUpdateDelay = 0.1; emTrjDynUpdateTargetOnly BOOL Обновлять только цель. Если true, эффект не отслеживает постоянно движущуюся цель, а застывает в точке привязки. emTrjDynUpdateTargetOnly = true; emAdjustShpToOrigin INT Подстраивать форму под источник. Если 1, эмиттер (PfxInstMagic.d) поворачивается вслед за узлом-источником, откуда летит заклинание. emAdjustShpToOrigin = 1; Временные и структурные параметрыЭта группа управляет продолжительностью жизни эффекта, его каскадированием и реакцией на столкновения. Параметр Тип Описание Пример emFXLifeSpan FLOAT Время жизни эффекта. Продолжительность существования основного визуального эффекта в секундах. Значение -1 делает его бесконечным. emFXLifeSpan = 2.0; emFXTriggerDelay FLOAT Задержка перед запуском. Эффект начнёт проигрываться только через указанное количество секунд. emFXTriggerDelay = 0.5; emFXCreate_S STRING Создать дочерний эффект. Имя другой инстанции CFx_Base_Proto, которая запустится одновременно с текущей. emFXCreate_S = "SLOW_TIME_CHILD"; emFXInvestOrigin_S STRING Эффект вложения (источник). Визуальный эффект, который проигрывается у заклинателя во время "инвестиции" (произнесения заклинания). emFXInvestOrigin_S = "spellFX_Sleep_ORIGIN"; emFXInvestTarget_S STRING Эффект вложения (цель). Эффект, который проигрывается на цели после успешного применения заклинания. emFXInvestTarget_S = "spellFX_Charm_TARGET"; emFXCollStat STRING Эффект при статическом столкновении. Какой эффект (CFx_Base_Proto) создать при столкновении с неподвижным объектом (стена, земля). emFXCollStat = "FX_IMPACT_EARTH"; emFXCollDyn STRING Эффект при динамическом столкновении. Какой эффект создать при столкновении с движущимся NPC. emFXCollDyn = "FX_IMPACT_NPC"; emFXCollDynPerc STRING Эффект восприятия цели. Эффект, применяемый к цели, если функция C_CanNPCCollideWithSpell возвращает успех. emFXCollDynPerc = "FX_HIT_SPARK"; emFXCollStatAlign STRING Выравнивание статического эффекта. Должен ли эффект столкновения быть выровнен по нормали поверхности. emFXCollStatAlign = "COLLISIONNORMAL"; emFXCollDynAlign STRING Выравнивание динамического эффекта. Должен ли эффект быть выровнен по объекту, с которым столкнулся. emFXCollDynAlign = "COLLISIONNORMAL"; emActionCollStat_S STRING Тип статического столкновения. Должен содержать "CREATE", чтобы emFXCollStat был создан. Используется для настройки поведения при столкновении. emActionCollStat_S = "CREATE"; Визуальные параметрыЗдесь задаётся, как именно будет выглядеть эффект, его текстура, прозрачность, размеры и анимация. Параметр Тип Описание Пример visName_S STRING Имя визуального эффекта. Может быть: имя PFX-эффекта (из PfxInstMagic.d), текстура (.TGA), 3D-модель (.3DS), анимация (.MMS), эффекты смены ракурса/замедления времени (.FOV/.SLW). visName_S = "MFX_CHARM_INIT"; visAlpha FLOAT Общая прозрачность эффекта. Значение от 0.0 (полностью прозрачен) до 1.0 (полностью непрозрачен). visAlpha = 0.8; visAlphaBlendFunc STRING Режим смешивания. Определяет, как прозрачность эффекта смешивается с фоном. Варианты: "NONE", "BLEND", "ADD" (аддитивное смешение), "SUB", "MUL", "MUL2". visAlphaBlendFunc = "ADD"; visSize_S STRING Вектор размера. Размеры эффекта в 3D-пространстве в виде строки "X Y Z" (в сантиметрах). visSize_S = "100 100 100"; visTexAniFPS FLOAT FPS анимации текстуры. Скорость смены кадров анимированной текстуры в секунду. visTexAniFPS = 24.0; visTexAniIsLooping BOOL Зациклить анимацию текстуры. Если true, анимация текстур будет повторяться бесконечно. visTexAniIsLooping = true; lightpresetname STRING Имя пресета освещения. Позволяет привязать к эффекту определённый источник света или цветовую гамму, например, "REDAMBIENCE". lightpresetname = "REDAMBIENCE"; Пользовательские строкиЭти параметры используются для передачи кастомных данных в сложные эффекты, которые требуют дополнительных настроек. Параметр Тип Описание Пример userString[0-9] STRING Пользовательские строки. Массив из 10 строк, предназначенных для хранения произвольных данных, например, для передачи параметров в медленный эффект SLOW_TIME. userString[0] = "0.5"; Источники: World of Players (русскоязычный форум): https://worldofplayers.ru World of Gothic (немецкоязычный форум): https://forum.worldofplayers.de Gothic Wiki (на wiki.worldofplayers.de): https://wiki.worldofplayers.de Gothic Modding Community на GitHub: https://github.com (ищите репозитории по ключевым словам Gothic, Daedalus, PfxInstMagic, VisualFXInst) Я собираюсь делать новый мод, пока что не буду о нем говорить. И вот, пытаюсь освоить эту тему с частицами. Это нужно для разного рода визуальных эффектов.