Product Support

Get help with EmergentFire and other Emergent Physics Lab products for Unity and Unreal Engine

Our Products

NEW RELEASE

EmergentFire

Real-time physics-based fire simulation with heat diffusion, fuel consumption, and wind effects

Unity 2021.3+Windows 64-bit

More products coming soon

Stay tuned for announcements

EmergentFire Documentation

v1.0.0

Installation

  1. 1Download the .unitypackage file
  2. 2In Unity: Assets → Import Package → Custom Package
  3. 3Select the downloaded file and click Import All

Verify Installation: After import, you should see Assets/EmergentFire/ folder and GameObject → EmergentFire menu options.

Quick Start

Option 1: Demo Scene

  1. 1. Go to GameObject → EmergentFire → Complete Demo Scene
  2. 2. Press Play
  3. 3. Click START FIRE in the UI

Option 2: Add to Scene

  1. 1. Create an empty GameObject
  2. 2. Add EmergentFireSurface component
  3. 3. Add FireParticleController (optional)

Option 3: Pre-built Controllers

  • CandleController - Small, steady flame
  • TorchAutoIgnite - Medium flame
  • CampfireController - Wide campfire
  • StructureFireController - Large fire

Basic code to start a fire:

var fire = GetComponent<EmergentFireSurface>();
fire.FillWithFuel(1.0f);
fire.Ignite(new Vector2Int(16, 16), 0.9f);

Components Reference

EmergentFireSurface

The main fire simulation component. Attach to any GameObject.

PropertyDescription
Grid WidthSimulation grid width (8, 16, or 32 in Free)
Grid HeightSimulation grid height (8, 16, or 32 in Free)
Color ModeVisual style of flames
Auto InitializeStart simulation on Awake
Methods
MethodDescription
FillWithFuel(float amount)Fill entire grid with fuel (0-1)
Ignite(Vector2Int pos, float temp)Ignite at grid position
IgniteRadius(Vector2Int center, int radius, float temp)Ignite circular area
IgniteAtWorldPosition(Vector3 worldPos, float temp)Ignite at world position
ResetSimulation()Extinguish all fire and reset
AddFirebreak(RectInt rect)Add stone barrier
AddWater(RectInt rect)Extinguish area with water

FireParticleController

Renders 3D flame particles based on the fire simulation.

Flame Height

Maximum height of flames

Particle Size

Size of individual particles

Particle Lifetime

How long particles live

Rise Speed

How fast flames rise

Noise Strength

Flickering intensity

Spread

Horizontal spread of flames

Color Modes

Blackbody

Realistic physics-based colors

Artistic

Enhanced saturation for stylized games

Magic

Blue/purple magical effects

Heatmap

Debug visualization

fire.ColorMode = FireColorMode.Magic;

Fuel Types

TypeIgnitionBurn RateHeatNotes
WoodMediumSlowMediumDefault, balanced
PaperFastFastLowQuick to ignite and burn out
GasVery FastVery FastHighExplosive, dangerous
CoalSlowVery SlowHighLong-lasting heat
GrassFastMediumLowSpreads quickly
OilMediumMediumHighSustained heat
StoneFirebreak, blocks fire
WaterExtinguishes fire
fire.FillWithFuelType(1.0f, FuelType.Gas);
fire.AddFirebreak(new RectInt(10, 10, 5, 20)); // Stone wall
fire.AddWater(new RectInt(0, 0, 32, 5));       // Water at bottom

API Reference

Physics Parameters

var fire = GetComponent<EmergentFireSurface>();
var instance = fire.Instance;

// Heat behavior
instance.DiffusionRate = 0.0f;      // 0 = stationary, higher = spreads
instance.ConvectionRate = 0.0f;     // Upward heat bias
instance.CombustionHeat = 1.5f;     // Heat generated when burning
instance.CoolingRate = 0.05f;       // How fast fire cools
instance.TemperatureDecay = 0.97f;  // Heat damping per frame

// Fuel
instance.FuelConsumptionRate = 0.0f; // 0 = infinite fuel
instance.InfiniteFuel = true;        // Shortcut for above

// Wind
instance.WindDirX = 1.0f;           // -1 to 1
instance.WindDirY = 0.0f;           // -1 to 1
instance.WindStrength = 2.0f;       // 0 to 5

// Effects
instance.TurbulenceEnabled = true;
instance.EmbersEnabled = true;

Reading Fire Data

// Get fire intensity at a point (0-1)
float intensity = instance.GetFireIntensityAt(x, y);

// Get total fire intensity
float total = instance.TotalFireIntensity;

// Get center of fire (for audio positioning)
Vector2 center = instance.FireCenter;

// Get number of burning cells
int burning = instance.ActiveCellCount;

// Get raw temperature field (for custom rendering)
float[] temps = new float[instance.CellCount];
instance.GetTemperatureField(temps);

Free vs Pro Version

FeatureFreePro
Maximum Grid Size32×321024×1024
GPU Acceleration
All Color Modes
Particle Effects
Wind & Turbulence
Fuel Types
API Access
Commercial Use
Priority Support

Troubleshooting & FAQ

What are the system requirements?
  • Unity 2021.3 or higher
  • Windows 64-bit
  • Built-in or Universal Render Pipeline (URP)

Free version is limited to 32×32 grid resolution and CPU simulation only.

Fire doesn't appear
  1. Check that Auto Initialize is enabled or call Initialize() manually
  2. Ensure you called FillWithFuel() before Ignite()
  3. Verify the FireParticleController is attached for 3D flames
Fire goes out immediately
  • Set InfiniteFuel = true or increase fuel amount
  • Reduce CoolingRate
  • Increase CombustionHeat
Fire spreads when I want it stationary

Set both diffusion and convection to zero:

instance.DiffusionRate = 0.0f;
instance.ConvectionRate = 0.0f;
Performance is slow
  • Reduce grid size (16×16 or smaller)
  • Disable embers: instance.EmbersEnabled = false
  • Upgrade to Pro for GPU acceleration
DLL not found error
  • Ensure Plugins/x86_64/EmergentFire.dll exists
  • Windows 64-bit is required
  • Mac/Linux are not supported in Free version
Fire looks pixelated

This is expected at 32×32 resolution. Upgrade to Pro for higher resolutions (up to 1024×1024).

Can I use EmergentFire in commercial projects?
Yes! Both Free and Pro versions permit commercial use. The Free version is MIT licensed.

Looking for our physics research?

Visit Emergent Physics Lab