pixelsmokefx

版本 v1.1.0·更新於 2026-08-13

Real low-poly 3D smoke on every bullet hit - no particles, no assets, generated at runtime. Your shots always render; enemy shots only on-screen within 200 m. One DLL for BepInEx 5.x.

模組介紹 作者原文

Pixel Smoke Fx

Low-poly 3D smoke for bullet hits in Ravenfield (EA29+). Zero particles, zero assets, zero external files - the smoke mesh is generated at runtime inside the plugin.

Built for BepInEx 5.x on Ravenfield EA29 and newer (Unity 2020.3-era builds; verified on EA35).

What it does

Every bullet hit (non-explosive weapons) leaves a burst of three round low-poly smoke puffs that expand fast, shrink exponentially, and fade to nothing - pure code, no particle systems, no texture files. Since v1.1.0 the puffs are damage-sized (sniper hits billow big, shotgun pellets stay tiny) and styled as a black anime/soot cloud: smooth round profile (subdivision-3 icosphere, gentle displacement), per-face vertex colors baked in three discrete brightness bands (bright top / mid / dark bottom - classic cel shading), no flat black silhouette.

hit -> SpawnDecal hook -> pool slot (no Instantiate/Destroy churn)

-> icosphere mesh (generated once, shared by all slots)

-> damage -> size factor (clamped) -> expand (0.04 -> 1.0 in 0.15s)

-> exp shrink -> alpha fade -> back to pool

Key behaviors

| Behavior | Default | cfg key |

|----------|---------|---------|

| Master switch | on | [General] Enabled |

| Player shots render ALWAYS (no distance/frustum culling for your own fire) | on | [General] AlwaysRenderPlayer |

| Other shots render only when on screen | - | frustum culling |

| Other shots render only when closer than 200 m | 200 m | [Performance] HalfDist |

| Full size under 60 m, half size beyond | 60 m | [Performance] FullDist |

| Pool slots (concurrent smoke cap) | 120 | [Performance] PoolSize |

| Same-gun burst window (all shotgun pellets render) | 0.08 s | [Performance] BurstWindow |

| Min gap between bursts (global / per gun) | 0.005 / 0.02 s | [Performance] GlobalCooldown / GunCooldown |

| Blob lifetime | 1.5 s | [Performance] Lifetime |

| Expand window / shrink rate / master size | 0.15 / 2.2 / 0.7 | [Fx] ExpandTime / DecayRate / BaseScale |

| Damage that maps to size factor 1.0 | 40 | [Fx] DamageRef |

| Min / max damage size factor | 0.5 / 1.5 | [Fx] MinSizeFactor / MaxSizeFactor |

| Low-damage pellet floor (shotguns) | 0.25 | [Fx] ShotgunFactor |

Why it's fast

  • No particles: one static mesh per puff (1280 triangles, flat-shaded), shared across all slots.
  • Pooled: objects are reused, nothing is Instantiate/Destroyed per hit.
  • Culled early: off-screen non-player shots skip before any work; renderers outside the frustum skip per-frame pushes.
  • Zero garbage: cached components, cached reflection, zero allocation hot path.
  • 360 renderers absolute worst case (120 slots x 3 puffs) - trivial for this engine.

Requirements

  • Ravenfield EA29+ (any Unity 2020.3-era build; verified on EA35, Steam or standalone)
  • BepInEx 5.x (install to /BepInEx)

Installation

  • Install BepInEx 5.x into the Ravenfield folder if you have not already (run the game once so BepInEx creates its folders).
  • Copy PixelSmokeFx.dll into /BepInEx/plugins.
  • Launch the game. The plugin logs Pixel Smoke Fx: harmony hook CONFIRMED on first boot.

(Folder structure: see INSTALL.txt in the same zip.)

Configuration

All settings live in BepInEx/config/com.local.pixelsmokefx.cfg (auto-created on first boot).

| Section | Option | Meaning |

|---|---|---|

| General | Enabled | master switch |

| General | TargetWeapon | only weapons whose name contains this substring; empty = all non-explosive guns |

| General | AlwaysRenderPlayer | shots fired by YOU always render, regardless of distance inside viewport |

| Performance | PoolSize | concurrent-smoke cap (down for old PCs, up for long battles) |

| Performance | GlobalCooldown | min seconds between any two bursts (same-burst hits bypass) |

| Performance | GunCooldown | min seconds between bursts of the same weapon |

| Performance | BurstWindow | hits from one weapon within this window count as ONE shot and all render (shotgun-friendly) |

| Performance | FullDist / HalfDist | size LOD + far cutoff for non-player shots

安裝與使用 安裝:按包內說明操作

  1. 解壓本站下載的壓縮包,先讀包內的 readme / 說明檔案。
  2. 多數模組依賴遊戲的模組載入器:常見做法是用社群模組管理器(如 r2modman)選中本遊戲安裝,由管理器自動處理載入器與依賴。
  3. 手動安裝時,把模組檔案放進遊戲目錄下對應的 Mod / plugins 資料夾。
  4. 啟動遊戲確認載入成功;帶「前置依賴」的模組需要把依賴一併安裝。

不同模組的安裝位置差異較大,包內說明是最可靠的依據。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

BepInEx-BepInExPack_Ravenfield

檔案與校驗

檔案名稱
pixelsmokefx-1.1.0.zip
檔案大小
116.7 KiB