불·번개·물결은 미분방정식을 풀어서 만들었습니다. 이번엔 방정식이 하나도 없습니다. 알갱이 하나가 아는 것은 "아래가 비면 떨어진다" 수준의 규칙 서너 줄이 전부입니다. 그런데 산이 쌓이고, 물이 수평을 찾고, 기름이 물 위에 뜨고, 불이 구조물을 타고 번집니다. 단순한 규칙 × 135,000칸 = 물리처럼 보이는 것. 이게 창발입니다.
모래와 물의 차이는 가로 화살표 두 개뿐입니다. 그 두 개가 ‘쌓이는 것’과 ‘퍼지는 것’을 가릅니다 — 경사각도, 수평면도 코드에 없고 여기서 따라 나옵니다.
모래 산의 경사는 코드 어디에도 없습니다. "막히면 대각선"이라는 규칙이 수만 번 반복되면 산비탈이 일정한 각도로 수렴합니다. 실제 모래더미의 안식각이 생기는 이유와 같은 구조입니다.
if (아래 비었나) 떨어진다 else if (아래대각 비었나) 미끄러진다 // 각도는 어디에? 코드엔 없다.
물 규칙은 모래 규칙에 "옆으로도 간다" 한 줄을 더한 것뿐입니다. 그 한 줄이 고체와 액체를 가릅니다. 밀도 교환 한 줄을 더 얹으면 기름이 물 위로 떠올라 층이 생깁니다.
모래 = ↓ ↙ ↘
액체 = ↓ ↙ ↘ ← →
물 아래 기름 → 교환 // 층 분리
불은 이웃 연료에 확률적으로 옮겨붙고 수명이 다하면 꺼집니다. 이 두 규칙에서 "불길이 구조물을 타고 번지다 연료가 끊기면 사그라드는" 산불의 동역학이 나옵니다. 전염병 모형(SIR)과 수학적으로 형제입니다.
life-- if (이웃이 연료 && rndif (이웃이 물) 꺼짐 + 증기
콘웨이의 생명 게임과 같은 과의 계산입니다. 미분방정식 없이 지역 규칙만으로 전체 질서가 생깁니다. 새 떼, 교통 정체, 시장 패닉이 모두 이 구조로 모형화됩니다. 복잡한 결과에 복잡한 원인이 필요한 게 아닙니다.
// 전역 계획 없음
// 지역 규칙 × 135,000셀 × 60fps
// = 물리처럼 보이는 것
모래는 방정식을 모릅니다. 알갱이마다 아는 것은 “아래가 비면 내려가고, 막히면 옆으로” 하나뿐입니다. 그런데 그것만으로 일정한 경사가 생깁니다 — 아래에서 그 더미가 쌓입니다.
더미가 높아지면 스스로 무너져 다시 그 경사로 돌아갑니다. 위 판이 다루는 것이 그 자기조직 임계입니다 — 한 알을 더 얹었을 때 무너질지 아닐지는 미리 못 정합니다.
격자 크기는 눈으로 보기 위해 성기게 잡았습니다. 규칙은 위 판과 같습니다.
위 화면은 격자 한 칸을 알갱이 하나로 놓고 규칙 몇 줄만 돌린 것입니다. 진짜 모래알은 이렇게 생겼습니다.
모래알을 하나씩 떼어 확대해 늘어놓은 것입니다. 투명한 유리 같은 알, 쇳물이 든 것처럼 누렇게 물든 알, 새카만 알이 섞여 있고 모난 것과 둥근 것이 함께 있습니다. 둥글수록 오래 굴러다닌 알입니다.
위 화면은 이걸 전부 같은 네모 한 칸으로 놓습니다. 모양도 무게도 없고, ‘아래가 비면 내려가고, 막히면 옆으로 흘러라’ 정도의 규칙만 있습니다. 방정식은 하나도 안 풉니다.
그런데도 쌓이는 각도와 무너지는 모양이 그럴듯하게 나옵니다 — 알갱이 하나하나를 정확히 흉내 내지 않아도 무리의 행동은 재현된다는 게 이 판이 보여 주는 것입니다. 반대로 말하면, 이 화면으로 진짜 모래의 성질을 논하면 안 됩니다. 사진 쪽이 진짜입니다.
기준일을 100으로 놓고 그린 선입니다. 통화가 서로 달라 지수로 겹쳤습니다.