ИНТЕГРАЦИЯНАСТРОЙКИ ПРОЕКТА
Настройки проекта
У Crushform семь классов настроек. Каждый отображается в Project Settings › Plugins под своим отображаемым именем. Шесть сохраняются в Config/DefaultGame.ini. Zone Editor сохраняет в Config/DefaultEditor.ini. Храните эти файлы под контролем версий, чтобы вся команда использовала один набор значений.
Списки ниже перечисляют свойства, которые проект меняет в первую очередь. Каждое значение по умолчанию — это значение, которое задаёт код. Все свойства перечислены в справочнике API.
Crushform
Заголовок раздела «Crushform»Crushform (UCFSettings) хранит атлас, ассеты по умолчанию, грязь, виды материалов, навесные детали и коллизию.
UCFSettings::Atlas: Render Target, который читают все деформируемые меши. По умолчанию:/Crushform/Atlas/RT_CF_LatticeAtlas. Его размер задаёт, сколько повреждённых кузовов рисуется одновременно; см. Производительность.UCFSettings::SlotWidthиUCFSettings::SlotHeight: тексели одного слота, по умолчанию 256 в ширину и 8 в высоту. Решётка помещается, когда её ResX, умноженный на ResZ, не большеSlotWidth, а её ResY не большеSlotHeight.UCFSettings::CustomDataOffset,UCFSettings::WheelCustomDataOffset,UCFSettings::TireCustomDataOffsetиUCFSettings::GlassCustomDataOffset: с какого места начинается каждый блок Custom Primitive Data. По умолчанию 0, 34, 0 и 18. При изменении одного из них пересобираются функции материалов, которые его запекают. Сохраните эти функции или выполнитеCrushform.RebakeOffsetsи сохраните их.UCFSettings::Surfaces: одна строка на каждый физический материал. По умолчанию:/Crushform/Surfaces/DA_CF_Surfaces. Без него ни одно тело не загрязняется.UCFSettings::DefaultProfile: профиль деформации для кузова, который не указывает свой. По умолчанию:/Crushform/Presets/DA_CF_DefaultProfile.UCFSettings::DirtAtlasиUCFSettings::DirtFreshAtlas: Render Target грязи. По умолчанию:/Crushform/Atlas/RT_CF_DirtAtlasи/Crushform/Atlas/RT_CF_DirtFreshAtlas.UCFSettings::ScratchAtlas: Render Target RG8 размером с атлас решётки, где хранятся покрытие линиями царапин и их направление. По умолчанию:/Crushform/Atlas/RT_CF_ScratchAtlas. Без пригодного атласа краска не рисует линий царапин; см. Краска и царапины.UCFSettings::DirtLayerOrder: Fixed (по умолчанию) укладывает каналы грязи по их ZOrder. Most Recent on Top требует атлас свежей грязи.UCFSettings::DustChannel,UCFSettings::MudChannel,UCFSettings::SnowChannelиUCFSettings::WetChannel: имя, смешивание и скорость очистки каждого канала. По умолчанию пыль, грязь и снег смешиваются как слои, а влага смешивается как оверлей.UCFSettings::BodyDirtLook,UCFSettings::WheelDirtLookиUCFSettings::GlassCrackLook: функции материалов, которые заменяют встроенный вид грязи кузова, грязи колёс и трещин стекла. Если значение не задано, встроенный вид остаётся.UCFSettings::DefaultGlassShardSystem: Niagara-система, которая бросает осколки стеклянной панели, чьё определение не называет Shard System. По умолчанию:/Crushform/Glass/NS_CF_GlassShards. Находится в группе Glass. См. Стекло.UCFSettings::LoosePartCollisionProfile: профиль коллизии, который получает навесная деталь, когда она начинает качаться или отваливается. None использует собственный профиль плагина, которому ничего не требуется от проекта.UCFSettings::SwingSpring(0),UCFSettings::SwingDamping(1) иUCFSettings::StopBounce(0): как качающуюся деталь возвращают, гасят и останавливают.UCFSettings::DetachedLifetime(60 с) иUCFSettings::DetachedSinkTime(2 с): сколько времени лежит деталь, которая отвалилась, и сколько времени она погружается.UCFSettings::CollisionRebuildThreshold(2 см),UCFSettings::CollisionRebuildInterval(0.5 с) иUCFSettings::MaxCollisionBlocks(96): когда коллизия деформированного кузова строится заново и на сколько блоков всего разрезаются боксы и выпуклые формы одного кузова.UCFSettings::bDeformCollision(вкл.): следует ли коллизия за вмятинами в этом проекте. Выкл.: каждый автомобиль сохраняет коллизию из ассета, что бы ни говорил его профиль, а вмятины только рисуются. Читается, когда у автомобиля начинается игра. Записывается вCrushform.Collision.Deform, поэтому профиль устройства может выключить её для слабых устройств. Каждый инстанс читает своё значение, и оно не реплицируется: вмятины и оторванные детали по-прежнему доходят до всех инстансов, а инстанс с выключенной настройкой сталкивается так, будто вмятин нет. Разные значения в одном матче дают инстансам разную физику в аварии.UCFSettings::CollisionDeferFrames(1): сколько кадров тяжёлая сборка коллизии может идти вне игрового потока, прежде чем оказаться на кузове, 0 или 1. Имеются в виду вырез для оторванной детали, перестройка кузова с вмятиной и оболочка оторванной детали. 0 строит всё в кадре удара. Значение больше 1 читается как 1. Консольная переменнаяCrushform.Collision.DeferFramesхранит это значение во время работы; см. Консольные команды.UCFSettings::AutoRepairDelay: секунды после последнего повреждения, через которые кузов ремонтирует себя. По умолчанию 0, то есть кузов никогда не ремонтирует себя.
Crushform Wheels
Заголовок раздела «Crushform Wheels»Crushform Wheels (UCFWheelSettings) хранит звук качения и FX качения колёс.
UCFWheelSettings::bRollingSound(включено) иUCFWheelSettings::bRollingFX(включено): главные переключатели.UCFWheelSettings::Attenuation: attenuation каждого звука качения. По умолчанию:/Crushform/Sounds/SA_CF_TireRolling.UCFWheelSettings::SpeedParameterName: float-параметр звука, который принимает скорость в км/ч. По умолчанию Speed. None: скорость не передаётся.UCFWheelSettings::CabinVolumeScale(0.8) иUCFWheelSettings::CabinLowPassFrequency(3000 Гц): как меняется звук качения, когда слушатель сидит в салоне.UCFWheelSettings::FXIntensityParameter: Niagara float, который принимает интенсивность колеса. По умолчанию Intensity.UCFWheelSettings::FXTuning: настройка интенсивности и порога отключения FX качения.FCFRollingFXTuning::SleepSpeedKPH(1 км/ч) останавливает все FX качения, пока кузов и его самое быстрое колесо на земле движутся медленнее этого значения. 0 никогда их не останавливает.
Crushform Tire
Заголовок раздела «Crushform Tire»Crushform Tire (UCFTireSettings) хранит, какие шины деформируются, бюджет шин, поведение покоящихся колёс и то, что игнорирует трассировка шины по поверхности.
UCFTireSettings::Scope: по умолчанию Budgeted.ECFTireScope::RigOnlyдеформирует только сцепку самого зрителя.ECFTireScope::Budgetedтакже деформирует остальные колёса, которые выделяет бюджет.ECFTireScope::Unlimitedдеформирует каждое колесо каждого зарегистрированного автомобиля.UCFTireSettings::bEnabled(включено): главный выключатель. При выключении каждая шина возвращается к круглой форме. Переопределяется переменной консолиCrushform.Tire.Enable.UCFTireSettings::MaxWheels(30): сколько шин могут деформироваться одновременно. Собственный автомобиль зрителя деформируется всегда, даже сверх этого предела. Переопределяется переменной консолиCrushform.Tire.MaxWheels.UCFTireSettings::Radius(4000 см): расстояние от камеры, в пределах которого могут деформироваться шины других автомобилей. Переопределяется переменной консолиCrushform.Tire.Radius.UCFTireSettings::LodDistance1(1500 см) иUCFTireSettings::LodDistance2(3000 см): расстояния, с которых шина трассирует более редкий веер лучей, а затем самый редкий веер против простой коллизии. Переопределяются переменными консолиCrushform.Tire.LodDistance1иCrushform.Tire.LodDistance2.UCFTireSettings::Hysteresis(0.15): насколько расширяются границы выделенной шины, чтобы шина на границе не мерцала. Значения от 0 до 0.9. Переопределяется переменной консолиCrushform.Tire.Hysteresis.UCFTireSettings::UpdateInterval(0.25 с) иUCFTireSettings::OnScreenTolerance(0.5 с): время между двумя проходами бюджета и сколько времени после последней отрисовки колесо ещё считается видимым на экране. Переопределяются переменными консолиCrushform.Tire.UpdateIntervalиCrushform.Tire.OnScreenTolerance.UCFTireSettings::SleepDistance(1 см) иUCFTireSettings::SleepAngleDeg(0.5 градуса): насколько близко к положению покоя колесо должно оставаться, чтобы уснуть. ОтрицательноеSleepDistanceозначает, что колесо не засыпает никогда.UCFTireSettings::IgnoredObjectChannels(пусто): каналы объектов, которые трассировка шины по поверхности игнорирует, сверх каналов, которые игнорирует её собственная коллизия.UCFTireSettings::DefaultProfile: профиль шины для шины, которая не указывает свой. По умолчанию:/Crushform/Presets/DA_CF_DefaultTireProfile.
Crushform Engine
Заголовок раздела «Crushform Engine»Crushform Engine (UCFEngineSettings) хранит звук двигателя.
UCFEngineSettings::bEngineSound(включено): главный переключатель. Он читается, когда звук двигателя начинает воспроизводиться.UCFEngineSettings::DefaultProfile: профиль звука двигателя, который не указывает свой. По умолчанию:/Crushform/Engine/DA_CF_DefaultEngineSound.UCFEngineSettings::SoundClass: пусто использует класс по умолчанию, Master.UCFEngineSettings::Priority(0.5): приоритет воспроизведения. Он выше, чем у звука качения (0.1), поэтому тихая шина уступает двигателю.UCFEngineSettings::CabinVolumeScale(0.8) иUCFEngineSettings::CabinLowPassFrequency(3000 Гц): двигатель, слышимый из салона.
Crushform Impact Feedback
Заголовок раздела «Crushform Impact Feedback»Crushform Impact Feedback (UCFImpactFeedbackSettings) хранит набор ударов, который воспроизводится, и ограничения на звук и эффекты.
UCFImpactFeedbackSettings::DefaultSet: набор ударов, который воспроизводится. По умолчанию:/Crushform/Impact/DA_CF_ImpactFeedback.UCFImpactFeedbackSettings::MaxAudibleDistanceCm(6000) иUCFImpactFeedbackSettings::MaxEffectDistanceCm(8000): удары, которые находятся дальше этих расстояний от локальной камеры, не воспроизводят звук и не создают эффект.UCFImpactFeedbackSettings::MinVoiceSeconds(0.25 с) иUCFImpactFeedbackSettings::MaxVoiceSeconds(3 с): сколько времени воспроизводимый звук занимает слот голоса.UCFImpactFeedbackSettings::MaxSoundsPerFrame(2) иUCFImpactFeedbackSettings::SoundQueueSeconds(0.15 с): наибольшее число звуков, которые стартуют в одном кадре, и сколько звук сверх этого предела может ждать, прежде чем его отбросят.0снимает предел. Консольные переменныеCrushform.Impact.MaxSoundsPerFrameиCrushform.Impact.SoundQueueSecondsхранят эти значения во время работы; см. Консольные команды.UCFImpactFeedbackSettings::IgnoredHitActorClasses(пусто): столкновение с эктором одного из этих классов или его подкласса не считается ударом.UCFImpactFeedbackSettings::bUseDefaultBreakableHost(включено): собственный host-объект разрушаемых объектов плагина. Выключите его, если ваша игра регистрирует собственный host-объект в пуле обломков.
Crushform Breakable
Заголовок раздела «Crushform Breakable»Crushform Breakable (UCFBreakableSettings) хранит ограничения и коллизию разрушенных элементов и их обломков.
- Обломки:
UCFBreakableSettings::MaxLiveDebrisPieces(96) иUCFBreakableSettings::MaxPersistentDebrisPieces(64) ограничивают количество живых фрагментов.UCFBreakableSettings::DebrisMaxSpawnDistanceCm(10000) — расстояние от локальной камеры, дальше которого разрушение не создаёт обломков.UCFBreakableSettings::DebrisCollisionProfile(None) использует профиль PhysicsActor движка. - Респаун:
UCFBreakableSettings::RespawnCheckIntervalSeconds(5 с) иUCFBreakableSettings::RespawnClearRadiusCm(4000 см). Ни один элемент не возрождается, пока в радиусе находится пешка игрока.UCFBreakableSettings::RespawnBlockingObjectTypesудерживает элемент в разрушенном состоянии, пока тело типа Vehicle, Pawn или PhysicsBody перекрывает его место. - Любое тело:
UCFBreakableSettings::AnyBodyCheckIntervalSeconds(0.1 с) иUCFBreakableSettings::MaxAnyBodySpeedCmS(3000 см/с) для элементов, которые ломаются от любого тела. - Деревья:
UCFBreakableSettings::TreeCollisionProfile(None использует Destructible) иUCFBreakableSettings::TreeWheelTraceChannel(WorldDynamic), канал земли, по которому колёса трассируют поверхность.
Crushform Zone Editor
Заголовок раздела «Crushform Zone Editor»Crushform Zone Editor (UCFEditorSettings) хранит пресеты, которые предлагает Zone Editor. Это единственный класс, который сохраняется в DefaultEditor.ini.
UCFEditorSettings::ZonePresets: пресеты в контекстном меню Zone Editor, в этом порядке. Каждый пресет — этоFCFZonePresetс Name, Stiffness, Max Depth и Edge Width (по умолчанию 20 см). Max Depth, равный 0, берёт Max Displacement профиля. По умолчанию заданы Frame (жёсткость 3, Max Depth 0), Cabin (2, 12 см), Crumple (0.5, 0) и Neutral (1, 0).
Проверка работы
Заголовок раздела «Проверка работы»Откройте Project Settings › Plugins и найдите семь записей Crushform. Это:
- Crushform
- Crushform Wheels
- Crushform Tire
- Crushform Engine
- Crushform Impact Feedback
- Crushform Breakable
- Crushform Zone Editor
Затем нажмите Play In Editor на уровне с кузовом Crushform и выполните в консоли Crushform.Stats. Первая строка, которую он выводит, — число занятых слотов атласа: Crushform atlas: <used> of <total> slots used. Процесс выделенного сервера вместо неё выводит Crushform atlas: none in this process (a dedicated server draws nothing).
| Atlas | ||
|---|---|---|
| Atlas | RT_CF_LatticeAtlas | |
| Slot Width | 256 | |
| Slot Height | 8 | |
| Custom Data Offset | ||
| Wheel Custom Data Offset | ||
| Tire Custom Data Offset | ||
| Glass Custom Data Offset | ||
| Scratch Atlas | RT_CF_ScratchAtlas | |
| Network | ||
| Contact | ||
| Repair | ||
| Surfaces | ||
| Profile | ||
| Dirt | ||
| Look | ||
| Body Dirt Look | None | |
| Wheel Dirt Look | None | |
| Glass Crack Look | None | |
| Loose Parts | ||
| Collision | ||
Plugins - Crushform Tire
| Budget | ||
|---|---|---|
| Scope | ||
| Enabled | ||
| Max Wheels | 30 | |
| Radius | 4000.0 | |
| Lod Distance 1 | 1500.0 | |
| Lod Distance 2 | 3000.0 | |
| Hysteresis | ||
| Update Interval | 0.25 | |
| On Screen Tolerance | 0.5 | |
| Sleep | ||
| Sleep Distance | 1.0 | |
| Sleep Angle Deg | 0.5 | |
Plugins - Crushform Zone Editor
The stiffness zone editor's presets: Project Settings > Plugins > Crushform Zone Editor, kept in DefaultEditor.ini for the team.
| Zones | ||
|---|---|---|
| Zone Presets | 4 Array elements | |
| Index [ 0 ] | ||
| Name | Frame | |
| Stiffness | 3.0 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
| Index [ 1 ] | ||
| Name | Cabin | |
| Stiffness | 2.0 | |
| Max Depth | 12.0 | |
| Edge Width | 20.0 | |
| Index [ 2 ] | ||
| Name | Crumple | |
| Stiffness | 0.5 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
| Index [ 3 ] | ||
| Name | Neutral | |
| Stiffness | 1.0 | |
| Max Depth | 0.0 | |
| Edge Width | 20.0 | |
Решение проблем
Заголовок раздела «Решение проблем»Ни одно тело не загрязняется.
Причина: Surfaces (UCFSettings::Surfaces) пусто либо не указывает ассет поверхностей. Без него ни одно тело не загрязняется.
Решение: задайте /Crushform/Surfaces/DA_CF_Surfaces или собственный ассет поверхностей.
Most Recent on Top переходит к ZOrder.
Причина: атлас свежей грязи отсутствует или непригоден. Output Log тогда выводит No usable Crushform dirt fresh atlas (Project Settings > Plugins > Crushform > Dirt Fresh Atlas).
Решение: задайте Dirt Fresh Atlas как /Crushform/Atlas/RT_CF_DirtFreshAtlas или как пригодный Render Target собственного проекта.
Нет линий царапин.
Причина: атлас царапин отсутствует либо это не Render Target RG8 с размером атласа решётки. Output Log тогда выводит No Crushform scratch atlas (Project Settings > Plugins > Crushform); scratch lines stay invisible или называет атлас и нужный ему размер.
Решение: задайте Scratch Atlas как /Crushform/Atlas/RT_CF_ScratchAtlas или как собственный Render Target RG8 с размером атласа решётки.
Материалы запекают неверное смещение после изменения.
Причина: редактор пересобирает функции материалов при изменении Custom Data Offset, но пересобранные функции не сохранены.
Решение: сохраните функции материалов или выполните Crushform.RebakeOffsets, а затем сохраните их.