폴링 샌드베타

모래·물·불·용암을 뿌려 서로 반응하는 모습을 구경하는 샌드박스

이 도구는 아직 안정화 중인 베타 버전입니다. 결과가 예상과 다르면 알려주세요.

시뮬레이션 엔진(WebAssembly)을 불러오는 중…

재료를 고르고 캔버스를 끌어 뿌려 보세요 (오른쪽 버튼 = 지우개). 모래는 쌓이고, 물과 기름은 흘러 퍼지며 기름은 물 위에 뜹니다. 불은 나무·기름·식물을 태우고 물에 닿으면 수증기가 됩니다. 용암이 물을 만나면 돌로 굳고, 식물은 물을 먹고 자랍니다. 수증기는 식으면 다시 비가 되어 떨어집니다. 얼음은 불에 녹고 닿은 물을 천천히 얼리며, 눈은 살랑살랑 쌓입니다. 산은 벽 말고는 무엇이든 녹이고, 화약은 불이 닿으면 폭발합니다. 복제기는 처음 닿은 재료를 끝없이 만들어 냅니다. 씨앗은 땅에 떨어지면 나무로 자라고, 폭죽은 솟아올라 터지며, 가스는 불이 닿는 순간 번쩍 타오르고, 블랙홀은 닿는 것을 모두 삼킵니다. 도구: 직선·사각형으로 벽을 쌓고, 폭탄으로 날려 버리고, 번개를 내리쳐 보세요. 해상도를 "극한"으로 올리면 입자를 수백만 개까지 쓸 수 있습니다.

폴링 샌드 소개

폴링 샌드는 격자 칸마다 원소 하나가 들어 있는 셀 오토마타다. 한 단계에서 도구는 맨 아래 줄부터 위로 올라가며 칸을 하나씩 갱신하고, 줄마다 왼쪽부터 갈지 오른쪽부터 갈지를 무작위로 정한다. 이번 단계에 이미 움직인 입자는 다시 건드리지 않는다. 입자의 움직임은 「이웃 칸과 자리를 바꾼다」는 한 가지 동작으로 표현되고, 자리를 바꿀 수 있는지는 밀도로 판단한다.

그래서 이 도구의 물리는 뉴턴 역학이 아니라 규칙이다. 모래가 쌓이는 각도, 물이 퍼지는 속도, 기름이 뜨는 이유가 모두 몇 줄짜리 규칙과 숫자에서 나온다. 아래에서 그 규칙이 무엇이고, 실제 물리와 어디서 갈라지는지를 짚는다.

모래 한 알의 규칙과 45도 더미

모래·자갈·화약은 매 단계 바로 아래 칸으로 가려 하고, 막혀 있으면 왼쪽 아래나 오른쪽 아래 중 무작위로 한쪽을 먼저 시도한다. 둘 다 막히면 멈춘다. 옆으로만 미끄러지는 동작은 없다.

이 규칙만으로 더미의 경사가 정해진다. 알 하나가 멈추려면 아래와 양쪽 대각선 아래가 모두 차 있어야 하므로, 한 점에 부은 모래는 한 줄 내려갈 때마다 양옆으로 한 칸씩 넓어지는 삼각형, 즉 45도 더미가 된다. 높이 h줄인 삼각형은 1 + 3 + 5 + … + (2h − 1) = h²칸이므로, 모래 400칸 분량을 한곳에 부으면 약 20줄 높이가 된다. 실제 마른 모래는 알갱이 사이 마찰과 모양에 따라 이보다 완만한 경사에서 무너진다. 이 도구에서 경사가 늘 45도인 것은 이웃이 대각선까지만 있다는 격자의 한계다.

떨어지는 속도도 규칙에서 나온다. 입자는 한 단계에 한 칸씩만 내려가므로 높은 곳에서 떨어뜨려도 가속하지 않는다. 실제 자유낙하에서는 속도가 시간에 비례해 커진다.

밀도 순서가 만드는 층

움직이는 입자는 자기보다 밀도가 낮은 칸으로만 들어갈 수 있다. 도구 안의 순서는 자갈 10 > 모래 9 > 화약·씨앗 8 > 용암 7 > 눈 6 > 물·산 5 > 기름 4 > 연기·수증기·불·가스 1 > 빈 칸 0이다. 모래를 물에 부으면 모래가 물과 자리를 바꾸며 가라앉고, 기름을 물 아래에 넣어도 한 칸씩 위로 올라와 물 위에 뜬다.

이 규칙은 액체 층에는 잘 맞지만 가루끼리는 실제와 다르다. 이 도구에서 자갈과 모래를 섞으면 자갈이 모래를 뚫고 바닥으로 가라앉는다. 실제 알갱이 혼합물은 흔들릴 때 큰 알갱이가 오히려 위로 올라오는 경우가 많다. 「브라질너트 효과」라고 불리며, 1987년 로사토 등이 시뮬레이션으로 원인을 분석했다. 크기와 흔들림이 만드는 분리는 밀도 비교 규칙으로는 나오지 않는다.

물에는 압력이 없다

물은 아래로 갈 수 없으면 옆으로 최대 4칸, 기름은 2칸까지 한 단계에 흘러간다. 기름이 물보다 느리게 퍼지는 것은 이 숫자 때문이고, 점성을 흉내 낸 것이다.

대신 물이 위로 올라가는 규칙은 없다. 그래서 U자관을 만들어 한쪽에만 물을 채우면 실제와 달리 양쪽 수위가 같아지지 않는다. 실제 물에서는 아래쪽의 압력이 반대편 물을 밀어 올리지만, 이 도구의 물 입자는 바로 옆 칸만 본다. 물줄기가 벽을 타고 솟는 분수나 사이펀도 같은 이유로 재현되지 않는다. 이 한계를 넘으려고 상용 게임들은 입자 규칙 위에 별도의 압력 계산이나 강체 물리를 얹는다. 폴링 샌드 방식으로 게임 전체를 만든 「Noita」 개발자는 GDC 2019 강연에서 이런 층을 어떻게 섞었는지 설명했다.

반응 규칙 몇 가지

불은 상하좌우 네 칸을 보고 매 단계 옮겨 붙는다. 한 단계 확률은 가스 0.6, 기름 0.15, 나무·식물·씨앗 0.05다. 나무에 붙은 불은 90~150단계 동안 타기 때문에, 가스는 순식간에 번쩍하고 사라지지만 나무 더미는 오래 탄다.

불이 물에 닿으면 물은 수증기가 되고 불은 꺼진다. 용암이 물에 닿으면 용암은 돌(자갈)이 되고 물은 수증기가 된다. 수증기는 위로 떠오르다 수명이 끝나면 30% 확률로 물방울이 되어 다시 떨어진다. 비가 내리는 순환이 이 한 줄에서 나온다. 화약은 불이나 용암이 닿으면 반경 6칸을 날려 버린다.

  • 바닥 열기: 맨 아래 줄의 움직이는 입자가 빠져나간다. 물이 계속 흐르는 폭포를 만들 때 쓴다.
  • 복제기: 처음 닿은 원소를 계속 만들어 내므로, 물 복제기와 용암 복제기를 가까이 두면 돌이 끝없이 생긴다.
  • 해상도 「극한」: 칸이 작아져 입자 수가 수백만 개로 늘어난다. 규칙은 같으므로 더미 경사는 여전히 45도다.

예시

한곳에 부은 모래 더미의 높이

입력
모래 400칸을 바닥 한 점에 붓기
결과
밑변 약 39칸, 높이 약 20줄의 45도 삼각형

높이 h인 삼각형은 h²칸을 담는다(1 + 3 + … + 39 = 400). 붓 칠 밀도가 50%라서 붓 크기와 실제 칸 수는 다르지만, 쌓인 모양은 항상 이 비율을 따른다.

물과 기름을 같은 폭에 동시에 붓기

입력
폭 20칸 수조, 물과 기름을 같은 양
결과
기름이 위, 물이 아래로 나뉘며, 수면이 평평해지는 속도는 물 쪽이 빠르다

밀도 5 > 4라서 층이 나뉘고, 한 단계에 옆으로 가는 거리가 물 4칸·기름 2칸이라 퍼지는 속도가 약 두 배 차이 난다.

U자관 실험

입력
벽으로 U자관을 만들고 한쪽 기둥에만 물을 채움
결과
바닥 통로가 물로 차도 반대편 기둥의 수위는 올라오지 않는다

위로 이동하는 규칙이 없어서 압력이 전달되지 않는다. 연결된 그릇의 수위가 같아지는 현상은 이 도구의 한계로, 실제 물과 가장 크게 다른 점이다.

사용 방법

  1. 팔레트에서 원소를 고르고 캔버스를 끌어 붓는다(오른쪽 버튼은 지우개).
  2. 직선·사각형 도구로 벽이나 그릇을 먼저 만든다.
  3. 불·용암·화약을 더해 반응을 보거나 폭탄·번개로 흔든다.

자주 묻는 질문

모래 더미가 왜 항상 같은 각도로 쌓이나요?

모래 입자는 아래와 대각선 아래 세 칸만 보고 움직이므로 경사가 45도로 고정된다. 실제 모래의 안식각은 알갱이의 크기·모양·습기에 따라 달라지지만, 이 규칙에는 그런 변수가 없다.

양쪽 물높이가 왜 같아지지 않나요?

이 도구의 물은 옆과 아래로만 움직이고 압력을 계산하지 않는다. U자관이나 사이펀처럼 압력으로 물이 올라가는 현상은 재현되지 않는다.

왜 한 줄씩 아래부터 계산하나요?

위부터 계산하면 한 단계에 같은 입자가 여러 번 떨어질 수 있다. 아래부터 올라가며 이미 움직인 입자를 표시해 두면 모든 입자가 한 단계에 한 번씩만 움직인다. 줄마다 좌우 방향을 무작위로 바꾸는 것은 물과 모래가 한쪽으로만 쏠리는 것을 막기 위해서다.

해상도를 높이면 더 사실적으로 되나요?

입자가 많아져 모양은 매끄러워지지만 규칙은 같아서 45도 경사, 압력 없음 같은 성질은 그대로다. 대신 한 칸이 작아지므로 같은 단계 수에 떨어지는 화면상 거리는 짧아진다.

출처

기준일:

개인정보와 저장 방식