파우더 게임 : 어떻게 작동합니까?


13

최근에이 두 보석을 찾았습니다.

http://powdertoy.co.uk/

http://dan-ball.jp/en/javagame/dust/

내 질문은 : 많은 요소를 가진 물리학은 어떻게 효율적으로 처리됩니까? 나는 현대 컴퓨팅 능력을 심각하게 과소 평가하거나 2 차원 배열을 가질 수 있습니까? 각 셀은 해당 위치에 배치되는 것을 설명하고 모든 단계에서 각 셀을 시뮬레이션합니다. 아니면 같은 종류의 넓은 영역을 단일 데이터 세트로 요약하고 필요에 따라 해당 세트를 분리하는 것과 같이 더 복잡한 일이 있습니까?

내가 볼 수있는 이와 같은 오픈 소스 게임이 있습니까?


원래 Stackowerflow 의 모래 시뮬레이션에 대해 비슷한 질문 을했습니다. 답변이 도움이 될 수 있습니다.
Evgeny Vinnik 2016 년

답변:


5

확실히 꽤 있습니다; 나는 그들을 개조하는 데 사용했다. 링크는 포럼 스레드 및 소스 다운로드 용입니다. 내가 가장 기억하는 두 가지는 다음과 같습니다.

xavierenigma의 EngimaSand ( C ++ | Java ) Java는 최신 버전입니다.

BurningSand by sieben ( C ++ ) 이것은 물리학 적으로 매우 빠릅니다.

이 사이트는 불행히도 죽음에 가깝지만 물리학 에는 몇 가지 스레드가 있습니다 .

편집 : 사람이 관심이 들어, 나는 EnigmaSand의 자바 소스를 mediafire'd 있습니다 여기에 .


매우 감사. 그러나 현재 링크가 다운되었습니다. 몇 시간 후에 다시 시도하겠습니다.
Marc Müller

그들은? 그들은 모두 나를 위해 잘 작동합니다.
공산주의 오리

1
Mediafire가 업로드되어 답변에 편집되었습니다.
공산주의 오리

5

이 게임의 물리학은 복잡한 셀룰러 오토 마톤을 기반으로 한 시스템을 사용하여 시뮬레이션됩니다 . Life of Life와 같이 사용하는 것보다 훨씬 더 복잡하고 적절한 CA가 아니라는 것을 의미하는 기능이 통합되어 있지만 계산이 비교적 간단하고 수년이 지났습니다. 너무 자세하게 설명하지는 않지만 알고리즘의 복잡성은 아마도 O (area)로 매우 작을 것입니다.

거기에 약간의 무리 지능이있는 것처럼 보이며, 이는 또한 그것이 생성 할 수있는 흥미로운 효과에 놀랍도록 효율적입니다.


"적절한 CA가 아니라는 의미의 기능을 포함하고 있습니다."... 무엇을 의미합니까? 이 CA는 더 많은 규칙이나 다른 것을 갖는 것만 다른가?
Gastón

2
표준 CA는 N 세대에서 셀의 가까운 이웃의 상태에 의존하는 함수에 의해 정의 된 N + 1 세대의 각 셀 상태를 가지며, 함수는 일반적으로 각 셀마다 동일합니다. 많은 "파우더"게임에는 보이드 또는 구속 조건 기반 물리 객체와 같은 것들이 포함되어 있으며,이 정의에는 해당되지 않습니다. 나는 그것들이 전적으로 CA로 코딩되어 있는지 의심합니다. 어느 시점에 있더라도 이웃은 충분히 커지고 전환 기능은 복잡하여 CA를 다루지 않을 정도로 복잡해집니다.
Gregory Avery-Weir

좋은 답변과 의견 Gregory, 귀하의 통찰에 감사드립니다.
엔지니어

1
셀룰러 오토 마톤이 그것의 일부 일지 모르지만, 반드시 완전한 답은 아닙니다. 거기에 유체 솔버도 있는데, 이것이 '현실적인'것처럼 보이게하는 것입니다
bobobobo

@bobobobo : 네, 확실히 적절한 세포 오토마타의 범위를 넘어선 것입니다.
Gregory Avery-Weir

3

몇 년 전 Jos Stam 은 유체 솔버에 대한 소스 코드를 제공하기 시작했습니다. 그리드를 설정하고 Navier-Stokes 방정식을 매우 빠르게 해결하는 코드가 매우 짧습니다. 전체 소스는 그의 페이지에서도 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.