Every grid cell (x,s) represents ideology x ∈ [-1,1] and persuadability s ∈ [0,1]; a per-cell scalar field ℓ(x,s) (media literacy, ∈[0,1]) is generated by upsampling a coarse random control grid, and a population-density field w(x) follows the same distribution the underlying agent model draws ideology from — a sum of three uniforms, which by the central limit theorem is closely approximated by a Gaussian(0, 1/3):
x = (u1+u2+u3 − 1.5)/1.5, ui ~ U(0,1) ⇒ x ≈ N(0, (1/3)²)
w(x) = exp(−x²/(2·(1/3)²))
The campaign targets a fixed centroid c = (ideology 0, persuadability 0.82, literacy 0.18) with the identical Gaussian match kernel as the 3D model, now evaluated per grid cell against the cell's own literacy-field value:
d(x,s) = ‖(x,s,ℓ(x,s)) − c‖
match = exp(−d² / (2σ²))
σ = lerp(1.8, 0.25, precision)
Effective influence and the resulting opinion write into the field exactly as in the point-agent model:
resist = clamp(0.5·ℓ(x,s) + 0.5·literacySlider, 0, 1)
transp = adTransparencyOn ? 0.5 : 1.0
influence(x,s) = budget · match(x,s) · (1 − resist) · transp
opinion(x,s) += influence(x,s) · s (clamped to [−1,1])
What's new here versus a flattened camera view: once the campaign lands, the opinion field diffuses for a few dozen animation frames via an explicit 2D heat-equation step (a discrete Laplacian with a zero-flux/no-leak boundary), modelling word-of-mouth spread across the social graph to ideologically nearby, similarly-persuadable neighbors who weren't directly targeted:
opinion[i,j] += D · (opinion[i-1,j]+opinion[i+1,j]+opinion[i,j-1]+opinion[i,j+1] − 4·opinion[i,j])
Detection risk keeps the same platform-classifier proxy as the 3D model — a narrow, high-budget blast is easy to flag, more so with mandatory disclosure:
concentration = 1 − σ/1.8
detection = clamp( budget · concentration · (adTransparencyOn ? 1.6 : 1.0), 0, 1 )