เกมแป้ง: พวกมันทำงานอย่างไร


13

ฉันเพิ่งพบอัญมณีทั้งสองนี้:

http://powdertoy.co.uk/

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

คำถามของฉันคือฟิสิกส์มีการจัดการองค์ประกอบต่าง ๆ อย่างมีประสิทธิภาพได้อย่างไร ฉันเพิ่งประเมินพลังการคำนวณขั้นต่ำอย่างรุนแรงหรือเป็นไปได้ที่ 'เพียงแค่' มีอาร์เรย์สองมิติแต่ละเซลล์ซึ่งอธิบายสิ่งที่วางไว้ตามตำแหน่งและจำลองแต่ละเซลล์ในทุกขั้นตอน หรือมีสิ่งที่ซับซ้อนกว่านี้เช่นการสรุปพื้นที่ขนาดใหญ่ประเภทเดียวกันลงในชุดข้อมูลเดียวและแยกชุดดังกล่าวออกตามต้องการ

มีเกมโอเพนซอร์ซแบบนี้ไหมที่ฉันสามารถดูได้?


ฉันถามคำถามที่คล้ายกันเกี่ยวกับการจำลองทรายบนStackowerflow ดั้งเดิมคำตอบอาจช่วยคุณได้
Evgeny Vinnik

คำตอบ:


5

มีค่อนข้างน้อย ฉันเคยแก้ไขมัน หมายเหตุลิงค์สำหรับกระทู้ในฟอรัมและการดาวน์โหลดแหล่งข้อมูล ทั้งสองฉันมีความทรงจำที่ดีที่สุดคือ:

EngimaSandโดย xavierenigma ( C ++ | Java ) Java หนึ่งใหม่กว่า

BurningSandโดย sieben ( C ++ ) อันนี้เป็นฟิสิกส์ที่ฉลาดมาก

เว็บไซต์ที่เป็นที่น่าเสียดายที่ใกล้จะตาย แต่มีหลายหัวข้อที่นี่เกี่ยวกับฟิสิกส์

แก้ไข: สำหรับทุกคนที่สนใจผมได้ mediafire'd แหล่ง Java สำหรับ EnigmaSand ที่นี่


ชื่นชมมาก ลิงค์จะลงในขณะนี้แม้ว่า ฉันจะลองอีกครั้งในอีกไม่กี่ชั่วโมง
Marc Müller

พวกเขาเป็น? พวกเขาทำงานได้ดีสำหรับฉัน
The Duck Communist

1
Mediafire อัปโหลดและแก้ไขเป็นคำตอบ
The Duck Communist

5

ฟิสิกส์ในเกมเหล่านี้จะถูกจำลองโดยใช้ระบบที่ขึ้นอยู่กับความซับซ้อนเซลล์หุ่นยนต์ มีความซับซ้อนมากกว่าที่ใช้ในการพูด Game of Life และรวมเอาคุณสมบัติต่างๆซึ่งหมายความว่าอาจไม่ใช่ CA ที่เหมาะสม แต่ก็ยังค่อนข้างง่ายในการคำนวณและเป็นเวลาหลายปี เพื่อไม่ให้รายละเอียดมากเกินไป แต่ความซับซ้อนของอัลกอริทึมจะค่อนข้างเล็กบางที O (พื้นที่)

ดูเหมือนว่ายังมีสติปัญญาจับกลุ่มอยู่ในนั้นซึ่งมีประสิทธิภาพที่น่าประหลาดใจสำหรับเอฟเฟกต์ที่น่าสนใจที่สามารถสร้างได้


"และรวมเอาคุณสมบัติต่าง ๆ ซึ่งหมายความว่ามันอาจไม่ใช่ CA ที่เหมาะสม" ... คุณหมายถึงอะไร? CA เหล่านี้แตกต่างกันเพียงแค่มีกฎมากกว่านี้หรือมากกว่านั้น?
Gastón

2
canonical CA มีสถานะของแต่ละเซลล์ในรุ่น N + 1 ที่กำหนดโดยฟังก์ชันที่ขึ้นอยู่กับสถานะของพื้นที่ใกล้เคียงของเซลล์ในรุ่น N และฟังก์ชันโดยทั่วไปจะเหมือนกันสำหรับแต่ละเซลล์ เกม "แบบผง" หลายเกมมีสิ่งต่าง ๆ เช่น boids หรือวัตถุทางฟิสิกส์ที่มีข้อ จำกัด ซึ่งไม่ได้ตกอยู่ภายใต้คำจำกัดความนี้ ฉันสงสัยว่ารหัสเหล่านั้นเป็น CA ทั้งหมด แม้ว่าในบางครั้งเพื่อนบ้านจะมีขนาดใหญ่พอและฟังก์ชั่นการเปลี่ยนแปลงก็ซับซ้อนพอที่คุณจะไม่ติดต่อกับ CA
Gregory Avery-Weir

คำตอบที่ดีและแสดงความคิดเห็นเกรกอรี่ขอบคุณสำหรับข้อมูลเชิงลึกของคุณ
วิศวกร

1
แม้ว่าหุ่นยนต์อัตโนมัติอาจเป็นส่วนหนึ่งของมัน แต่ก็ไม่ใช่คำตอบทั้งหมด มีตัวแก้ปัญหาของเหลวในนั้นเช่นกันซึ่งเป็นสิ่งที่ทำให้ดูเป็น 'จริง'
bobobobo

@bobobobo: ใช่แน่นอนมันเกินขอบเขตของออโตมาตาเซลลูล่าร์ที่เหมาะสม
Gregory Avery-Weir

3

เมื่อหลายปีก่อนJos Stam ได้เริ่มวางซอร์สโค้ดของเขาสำหรับนักแก้ปัญหาของเหลว มีโค้ดสั้น ๆ ที่ตั้งค่ากริดและแก้สมการเนเวียร์ - สโตคอย่างรวดเร็ว แหล่งที่มาเต็มมีอยู่ในหน้าของเขาเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.