an interactive introduction to
ATTRACTOR LANDSCAPES
playing time: ~5 minutes  ·  by nicky case, may 2018

A peaceful movement fights against violence and oppression for years, and nothing much changes. Then, everything changes.

Why do many complex systems – cultures, environments, economies – seem stuck (or if good, "stable") despite lots of effort to change them? And why, when change does come, it seems to cascade (or if bad, "collapse") all at once?

There's a tool that can help us understand this: attractor landscapes. Or, in less fancy words: "a ball rolling down some hills". This tool was first created in the field of physics, but has since been used to help us understand genetics, neuroscience, political alliances, and more!

I'll explain attractors using an environmental example. Let's say you're fishing on a small, sucky pond. You can exhaust your natural resources of fish pretty easily...

INTERACTIVE! click buttons & drag sliders:

Fortunately, fish reproduce, so your population of fish grows back over time. Unfortunately, above some threshold, fish die from overpopulation. And double unfortunately, below some threshold, fish are too sparse to reproduce faster than they die.

Now, let's go fishing, with these forces of growth & death:

If you don't catch too much fish, the ecosystem stays "attracted" to Population=70. You're sustainable! However, catch too much, and the ecosystem's "attracted" to Population=0. You've killed them all!

Nothing much changes. Then, everything changes.

This is why Population=0 and Population=70 are called attractors: because they "attract" the system to it. Likewise, Population=30 is called a repeller, because if the population is slightly below or above 30, it's "repelled" away from 30. Population=30 is also called a tipping point because that's where the ecosystem "tips" from the Population=70 attractor to the Population=0 attractor.

Oof, that's a lot of words. Wouldn't it be nice to just see how the system behaves at all possible population numbers? That's where attractor landscapes help! If we convert the speed of growth/death into a series of hill slopes (faster speeds → steeper slopes) and put a ball on top, we get something like this:

(note: the ball has no inertia. imagine the hills are covered with sticky molasses or something)

Now, when drawn as a landscape, seeing what the system does is easy! Mountains are repellers; Valleys are attractors.

The depth of a valley is how much energy it takes to escape the attractor. (e.g: Population=0 is deeper than Population=70; that's why it's easier to collapse an ecosystem than to restore it.)

The width of a valley is called the basin of attraction – the range within which the attractor, well, attracts. (e.g: Population=70's basin of attraction is anything within 30<Population≤100)

(Note: our attractor landscape is 2D, because we only have one parameter: Population. If we had more parameters, we could have a 3D landscape, or even a 4D, 5D, or 100D landscape! And at higher dimensions, you can even get what are called strange attractors... but that's for another day.)

In our ball-and-hill metaphor, catching & releasing fish is you trying to move the ball. But what if you could move the hills? In this fishing example, that would mean changing the ecosystem's attractors, by re-introducing predators, increasing plant life, etc.

If you only move the ball, it might just go back to an attractor. But if you move the hills, your changes will stick! You're changing the underlying system itself.

Let's see some not-fishing examples, to show how attractor landscapes really are a powerful way to understand systems. Here's a few from actual academic papers (you can tell they're from academia, because of how Powerpoint-y they look):

Finally, let's see our fishing sim again, all together now!

So, the next time you're wondering why things are stuck a certain way, think about:

And if you ever find yourself frustrated by the world, remember: for many systems, for long periods of time, nothing much changes.

Then, everything changes.

POPULATION: – CATCH FISH! + RELEASE FISH! death by
underpopulation
death by
overpopulation
population
grows!
Created by Nicky Case
play my other games & stuff · @ncasenmare

Attractors is open source. Get the code on GitHub!

Fan-made Translations: Español, Español #2, Français

Thanks to my supporters on Patreon, who help me make free, open-source educational game-ish stuff like this! (back me on Patreon?)
3blue1brown
aaron z. lewis
Aaron
Aatish Bhatia
Abdallah AbuHashem
Abhishek Modi
Adam Keys
Adam Zeiner
Aditya Bhargava
Ahti Ahde
Aiden Clack
Aiman Josefsson
Aimee Jarboe
Albert Wang
Alejandra Canahui
Alejo Amiras
Alex Dytrych
Alex G
Alex Mesoudi
Alex Mole
Alex Sanchez
Alexander Roiatchki
Alexander Vakrilov
Alexander Zacherl
Alison Hansel
Allison Clift-Jennings
Amy Fuchs
Amy Traylor
André Cerqueira
Andrea Di Biagio
Andrew Grondin
Andrew
Andy Ellis
Andy
Anh-Tuan TRAN
Animation at Work
Anna Novak Vanclova
Annie Li
Ansh Patel
Anshul Dhawan
Anthony Chivetta
Anthony Pecorella
Aran Jäger
Aria Minaei
Artemiy Solopov
Artwalks Europe
Arvind Thyagarajan
Aschelon
Ashwin Menon
Audrey Penven
Austin Bell
Aygox
Bastien Auda
Belinda
ben fei
Ben Hughes
Ben Kraft
Ben Mathes
Ben Walker
Benjamin Lindsay
Berbank
Betsy Cannon
Bill
Billy Daly
Billy Madison
Bob Koutsky
Bob Wise
Bohdan Makohin
Boondoggle
Brandon
Brent Werness
Brian Lange
Brian Wu
Brian Zindler
Brian
Brian
Brianna Bergen
Brie Code
Bruce Steinberg
Bruno Chagas Macedo Carvalho
Bruno Guerrero
Bryan Bell
Buster Benson
C
Caelyn McAulay
Caio Vinicius do Nascimento
Can Sucullu
caretcaret
Carmen
Cary Huang
Caryn Vainio
Casey Ross
Caspar Siebel
Cathy Deng
Ceceron44
Chad Sansing
Charlie McIlwain
Charlie Stigler
charline bernt
Chris Hallacy
Chris Hull
Chris Makler
Chris Ploeg
Chris Said
Christian
Christopher Ferrie
Christopher Rodier
Christopher
Claire
Clive Freeman
Colin Anderson
Colin Liotta
Colin
Colin
Colton Neves
Cora Liang
Cort Stratton
count
Craig Protzel
Craig Steele
Cristian Consonni
Cristy Stone
Cuauhtemoc Moreno
Curtis Frye
Cyrus Levy
Da LIberman
Dag Frode Solberg
Dan Sanderson
Daniel Horowitz
Daniel Shiffman
Daniel Teitelbaum
Daniel
Danny Hansen
Dave McClure
Dave Tu
David Durant
David E Weekly
David Goehring
David Mora
David Sallmann
David Smit
Davide 'Folletto' Casali
Deea Doca
Dev Narayan
Diana Hughes
Dina Dreams
Dinos Papadopoulos
dominc
Domingo Gallardo
Dominik Schmid
Duilio Palacios
Dusk Ho
Dylan Field
Dylan Meconis
Eddie
Eli Jeschke
elmar schlueter
emily hutchison
Emma Hogeterp
Emma McMillan
Eric Chisholm
Eric Willisson
Erick Eduardo Lopez Nava
Erik Asmussen
Erik Bjäreholt
Erik Schluntz
Erin
Eugene Chan
Evan Rocha
Evan Shulman
Fabio Utzig
Fahrstuhl
Fanboat
Fergus O'Reilly
Fiona Nielsen
Flip Kromer
Florencia Herra Vega
Forrest Oliphant
Frank Leon Rose
Fred Ehrsam
Fred Tschepp
Freddie Firth
Fritz Solares
Gabriel Barbosa Nunes
Gaëtan Voyer-Perrault
Gary Cygiel
Gaurav Chande
Géraud
Gerrit Essmann
Ges Gu
Giovan
Glen E. Ivey
Grävling
Green
Greg Nelson
Grimy
Gui Ambros
GuruJ
Haider Imam
Hampus Jakobsson
Han Yu
Harry Brisson
Hed Bar-Nissan
Henry Kee Tay
Henry Reich
Hilary Fried
Holly Dowell
Iago Medeiros Cordeiro
Iain Kirkpatrick
Ian Keyworth
Idahosa Ness
Igor Krawczuk
IndustrialRobot
iphenox
István Hamar
Itay
Ivan Gromov
Ivar Troost
Ivo Murrell
J. Hu
Jaakko
Jack
Jack
Jacob Christian Munch-Andersen
Jacob Feala
Jacob James Leaney
Jacob Magnusson
Jacob Peets
Jacopo Cascioli
Jacques Frechet
Jaïn van Nigtevegt
Jake Brownson
Jake Formosa
James Drake
James Harris
James Hogan
James Law
James Zaki
Jamie Wong
Jamieson Taylor
Jan Kölling
Janusz Leidgens
Jared Cosulich
Jarom """Solar"""" Norris"""
Jasmine Ren
Jason Brennan
Jason Crawford
Jay Parchure
Jean-Eudes Denis
Jeanne Kramer-Smyth
Jeff Lindsay
Jeff Long
Jeff McLean
Jelena Sporin
Jesper the End
Jess Fang
Jessica Osio
JMyong
Joaquin Zamora
Joe Mou
Joe Sevits
Joe Shumaker
Joel
Johannes Wärn
John Colagioia
John Hergenroeder
john mabey
John Muller
John S Stout
John Skarha
John
John_Ca
Johnny Owens
Jon Gill
Jonathan Ng
Jonathan
Josef Komenda
Joseph Fridman
Josh 'Cheeseness' Bush
Josh Comeau
Josh Koenig
Josh Leong
Josh
Joshua Horowitz
Juan Ignacio Terraza
Julie Franke
Juliette Duizabo
Justin Hsia
Justin
kaigani turner
Kailys
kaitlin smith
Karen Cooper
Karen Haldrup Lund Jakobsen
Karishma Bhatia
Karlin Fox
Kat Lo
Kat Suricata
Kate Fractal
Kathryn Long
Keith Olson
Kelvin Nishikawa
Ken Schafer
Kendra Lockman
Kevin McGillivray
Kevin Richardson
Kevin Zollman
Kevin
Kim Wood
Kira Mosher Kroger
Krystal McDonald
Kumara Uttara
kyrd9
Kyros Koh
Landy Manderson
Laria
Laura Baldwin
Laura
Laurent Couvidou
Lawrence
Layla
Leopard Dan
Leslie Robinson
LexsZero
Linda Liukas
Lining Wang
ljt
Lucas Garron
Luis Hernandez
Luiza Johnstone
Lukas Wegmann
Luming Hao
Lutz F. Krebs
M
Maciej
Maic Lopez Saenz
Malcolm Ocean
Marc Marasco
Marçal Mora
Marco Leal
Marconi Pereira
Marcus Round
Margaret Monahan
Marie-Noelle Wurm
Mark Trexler
Mark Wilson
Martin Pitt
Martyna Wasiluk
Mary Bush
Matt Hughes
Matthew Campbell
Matthew McAteer
Matthew Weber
Matthew Zhang
Mauricio Arreola-Garcia
Maxim Sidorov
Maxime Madeck
May-Li Khoe
Mekki MacAulay
mga
Michael Donatz
Michael Duke`
Michael Handler
Michael Holkesvik
Michael Huff
Michael LaHood
Michael Merchant
Michael Steele
Michal Kren
Miguel Puche-Alonso
Miguel Sicart
Mikayla Hutchinson
Mike Brown
Mike Gifford
Mikey
Mikhail
Mikkel Snyder
Milan Pingel
Milica Vlajkovic
Molly Jameson
Molly McFadden
Monika Denes
Mustafa Alic
Nacho Lasheras
Naomi Alderman
Nat Alison
Natalie Rothfels
Natalie Sun
Neema a
Neil Halloran
Nelson Crespo
Nick Gallegos
Nick Ketter
Nick Schrag
Nick
Nico Orrù
Nikita
Nikki
Nimrod Kimhi
Nishanth Sudharsanam
Noah Greeno
Noah Richards
Noah Swartz
Noel
Nouscentric
null
Olha Dziuba
Olivier Grondin
Orta Therox
Pablo Molins
Pankesh Bamotra
Pat Mächler
Patrick Belanger
Patrick Bobell
Patrick Henderson
Pau Pereira Batlle
Paul d'Aoust
Paul Sztajer
Paweł Kondzior
Peter Kadlot
Peter McEvoy
Phil Dougherty
Philip White
Piotr Migdal
postmillenial
Pyves & Ran
Quartz
Rae McIntosh
Rafael F.Font
Ragethe
Rajen Savjani
Raphael D'Amico
Raphael Schweikert
raspbeguy
Raymond Keller
Rayne Catseye
Rebecca Niles
Rebecca Wigandt
Reed Copperstrand
Richard Hackathorn
Rishi
Rob McKaughan
Rob Napier
Robert Aran
Robert Duncan
Rodolfo Maximiano
Rodrigo Furtado
Rohit Bhat
Roland Tanglao
Rory Sutherland
Rupert Moore
Russell Johnson
Ryan Barker
Ryan Barnard
S Smith
SailEars
Sal Go
Sam Anderson
Sam Dorios
Sam Maynard
Sam Prinssen
Sam Remis
Samira Nedungadi
Sarah Barbour
sarah mathys
SB Sigma
Schalli
Scott Donaldson
Scott Price
Sean Riley
Seanny123
Sébastien Samson
Serena Casanova
Sergiy Protsiv
Serguei Filimonov
settworks
Seung Uk Jang
ShadowSandbag
Shai Yanovski
Shakir Alshareef
ShaoThing Teoh
Shaun Lee
Shreeya Goel
Shreyas
Sid
Sigpipe
Silviu Străliciuc
Simon the James the Edwards
Sina Khanifar
Sky Wickenden
Skylar Little
sl
Slava Romanovsky
Srini Kadamati
Stay Forever
Stefano Baccianella
Stefano Cecere
Steffen J. Roth
Steve Krouse
Steve Marinconz
Steve Ryman
Steve Waldman
Steven Lisgo
Steven S
Sylvain Francis
Syria Carys Sirlay
T
Tal Rotbart
Tamara Manik-Perlman
Tamir Bahar
Tara Zuber
Taylor Sarrafian
Teodor Zhechev
Thibaut Renaux
Thomas Ballinger
Thomas Chapeaux
Thompson Usiyan
Tim Doedtmann
toby schachman
Todd Siegel
Tom Lieber
Tom Lowenthal
Tom Striker
Tommy Maranges
Toph Tucker
Traci Lawson
Travis Ross
Trevor Haldenby
Tudor Stincescu
Tyler Singer-Clark
Upidaisy
Vamsi Sakhamuri
Vanessa
Victor Lopez
Viktor Szathmáry
Vincent Verhoeven
Vladimir Parkhomenko
Wick Perry
Will Harper
William B Everett
William O'Hanley
William Robinson
Woo-Kyeong Choi
workroomprds
Wouter Slegers
Xavier Lambein
Xinyi Jiang
Xudong Yang
Yates Buckley
Yu-Han Kuo
Yury Melnichek
Zach Smith
Zack Thornton
Zan Armstrong
Zsolt Kocsi
영석 윤

Also, special thanks to my playtesters:
Adam Pearce · Hamish Todd · Jack Schaedler · Joshua Horowitz · Max Kreminski · Toph Tucker