ALIEN - โปรแกรมจำลองสิ่งมีชีวิตเทียมบนพื้นฐาน CUDA
(github.com/chrxh)- ALIEN คือสภาพแวดล้อมสิ่งมีชีวิตเทียมที่ใช้เอนจินอนุภาค 2D บนพื้นฐาน CUDA เพื่อจำลองซอฟต์บอดี ของไหล และสิ่งมีชีวิตดิจิทัลแบบเครือข่ายเซลล์ได้แบบเรียลไทม์
- ร่างกายที่ใช้ในการจำลองประกอบด้วยเครือข่ายอนุภาค และสามารถเพิ่มฟังก์ชันระดับสูงอย่างเซนเซอร์ กล้ามเนื้อ อาวุธ และตัวสร้างได้ โดยมีโครงข่ายประสาทคอยประสานการทำงาน และบันทึกแบบแปลนไว้ในจีโนมเพื่อส่งต่อให้ลูกหลานได้
- โค้ดจำลองทั้งหมดเขียนด้วย CUDA และปรับแต่งมาสำหรับการจำลองขนาดใหญ่แบบเรียลไทม์ที่จัดการอนุภาคได้หลายล้านตัว โดยการเรนเดอร์ใช้การทำงานร่วมกันระหว่าง CUDA-OpenGL
- ผู้ใช้สามารถโต้ตอบกับการจำลองที่กำลังรันอยู่ และแก้ไขสิ่งมีชีวิตกับสภาพแวดล้อมได้ด้วยตัวแก้ไขกราฟ เครื่องมือวาดแบบอิสระ/เรขาคณิต ตัวแก้ไขจีโนม และงานแบบกลุ่ม
- การรันต้องใช้ NVIDIA GPU ที่มี compute capability 6.0 ขึ้นไป และยังมี CLI สำหรับรันและประเมินผลการจำลองโดยไม่ใช้ GUI รวมอยู่ด้วย
สิ่งที่ ALIEN จำลอง
- ALIEN ย่อมาจาก Artificial LIfe ENvironment และเป็นเครื่องมือสำหรับการจำลองสิ่งมีชีวิตเทียม
- พื้นฐานคือเอนจินอนุภาค 2D แบบเฉพาะทางที่เขียนด้วย CUDA และออกแบบมาเพื่อจัดการซอฟต์บอดีกับของไหล
- ร่างกายในการจำลองแต่ละตัวประกอบด้วยเครือข่ายอนุภาค
- สามารถเพิ่มฟังก์ชันระดับสูงได้ตั้งแต่การประมวลผลข้อมูลล้วน ไปจนถึงอุปกรณ์ทางกายภาพอย่างเซนเซอร์ กล้ามเนื้อ อาวุธ และตัวสร้าง
- การทำงานของฟังก์ชันเหล่านี้ถูกประสานโดยโครงข่ายประสาท
- ร่างกายเหล่านี้มองได้ว่าเป็นเอเจนต์หรือสิ่งมีชีวิตดิจิทัลที่ทำงานอยู่ในสภาพแวดล้อมร่วมกัน
- แบบแปลนจะถูกเก็บไว้ในจีโนมและสามารถส่งต่อไปยังลูกหลานได้
- เป้าหมายการพัฒนาคือเพื่อทำความเข้าใจให้ดียิ่งขึ้นเกี่ยวกับวิวัฒนาการก่อนชีวภาพและเงื่อนไขที่ทำให้ความซับซ้อนของระบบชีวภาพเพิ่มขึ้น
- อีกเป้าหมายสำคัญคือการสร้างซิมูเลเตอร์ที่ใช้งานง่าย ด้วย UI ทันสมัย การเรนเดอร์ที่ดูสวยงาม และแนวทางที่ให้ความรู้สึกเหมือนการเล่นมากกว่าเครื่องมือวิชาการล้วน
เอนจินฟิสิกส์และกราฟิก
- อนุภาคถูกใช้เพื่อจำลองซอฟต์บอดี พลวัตวัตถุแข็ง ของไหล การปล่อยความร้อน ความเสียหาย และการยึดเกาะ เป็นต้น
- รองรับการโต้ตอบของผู้ใช้แบบเรียลไทม์กับการจำลองที่กำลังทำงานอยู่
- การจำลองทำงานทั้งหมดบน GPU ผ่าน CUDA
- การเรนเดอร์และโพสต์โปรเซสใช้ OpenGL บนพื้นฐานการทำงานร่วมกันของ CUDA-OpenGL
ความสามารถด้านสิ่งมีชีวิตเทียม
- สิ่งมีชีวิตหลายเซลล์ถูกจำลองเป็นเครือข่ายอนุภาค
- รองรับระบบพันธุกรรมและการสร้างลูกหลานในระดับเซลล์
- ฟังก์ชันระดับสูงอย่างเซนเซอร์และกล้ามเนื้อถูกควบคุมด้วยโครงข่ายประสาท
- ผู้ใช้สามารถปรับแต่งประเภทของเซลล์ตามสเปกที่กำหนดเองได้ด้วยการใช้สีที่หลากหลาย
- รองรับพารามิเตอร์การจำลองที่เปลี่ยนไปตามพื้นที่
เครื่องมือแก้ไขและการแชร์
- เครื่องมือแก้ไขมุ่งเน้นไปที่การจัดการองค์ประกอบของการจำลองโดยตรง
- สามารถจัดการอนุภาคและการเชื่อมต่อทั้งหมดได้ด้วยตัวแก้ไขกราฟ
- มีเครื่องมือวาดแบบอิสระและแบบเรขาคณิต
- สามารถออกแบบสิ่งมีชีวิตแบบกำหนดเองได้ด้วยตัวแก้ไขจีโนม
- รองรับงานแบบกลุ่มและการซูม
- ยังมีความสามารถด้านเครือข่ายรวมอยู่ด้วย
- มีเบราว์เซอร์การจำลองในตัว
- รองรับการดาวน์โหลดและอัปโหลดไฟล์การจำลอง
- สามารถแนะนำการจำลองด้วยการให้ดาว
วัตถุประสงค์การใช้งาน
- เมื่อเปิดใช้เครื่องจักรจำลองตัวเองและการกลายพันธุ์ การจำลองจะดำเนินไปได้ด้วยตัวเอง และผู้ใช้สามารถสังเกตการทำงานของวิวัฒนาการได้
- สามารถใช้ได้เหมือนเกมที่มีเอนจินฟิสิกส์รวดเร็วและสมจริง
- สามารถเร่งหรือทำลายเครื่องจักรนับแสนด้วยเคอร์เซอร์เมาส์
- สไตล์การเรนเดอร์และตัวแก้ไขภาพที่หลากหลายช่วยให้สังเกตเหตุการณ์ต่าง ๆ ได้
- ดูตัวอย่างได้ที่ YouTube channel
- ในเชิงวิชาการ มันเป็นเครื่องมือสำหรับสำรวจว่าความซับซ้อนหรือโครงสร้างคล้ายสิ่งมีชีวิตสามารถเกิดขึ้นจากองค์ประกอบเรียบง่ายได้อย่างไร
- วิธีที่ระบบนิเวศปรับตัวต่อการเปลี่ยนแปลงของสภาพแวดล้อมและหาสมดุลใหม่
- ปัญหาเรื่องการค้นหาเงื่อนไขที่ทำให้วิวัฒนาการแบบปลายเปิดเป็นไปได้
- ยังสามารถใช้เป็นเครื่องมือศิลปะเชิงกำเนิดได้ โดยวิวัฒนาการทำหน้าที่เป็นพลังสร้างสรรค์ที่สร้างรูปแบบและพฤติกรรมใหม่ ๆ
เอกสารและเงื่อนไขการรัน
- เอกสารสำหรับเวอร์ชันหลักก่อนหน้านี้อยู่ที่ alien-project.gitbook.io/docs และแนะนำซิมูเลเตอร์ในรูปแบบบทความสอนใช้งาน
- ข้อมูลจำนวนมากในเอกสารดังกล่าวไม่อัปเดตแล้ว
- เวอร์ชันล่าสุดมีเอกสารย่อและคำแนะนำผู้ใช้ผ่านหน้าต่างช่วยเหลือและ tooltip ภายในโปรแกรม
- แหล่งข้อมูลเพิ่มเติมมีที่ Website, YouTube, Twitter, Reddit, Discord
- ข้อกำหนดขั้นต่ำของระบบคือการ์ดจอ NVIDIA ที่มี compute capability 6.0 ขึ้นไป
- ตัวติดตั้งสำหรับ Windows คือ alien-installer.msi และตาม README วันที่อัปเดตคือ 2025-09-06
การบิลด์และ CLI
- การบิลด์ซอร์สถูกทำให้เป็นอัตโนมัติเป็นส่วนใหญ่ด้วย CMake แบบข้ามแพลตฟอร์มและตัวจัดการแพ็กเกจ vcpkg ที่รวมมาเป็น Git submodule
- เมื่อต้องการดึงซอร์ส จะต้องใช้
--recursiveเพื่อเช็กเอาต์ submodule ของ vcpkg ด้วยgit pullแบบปกติมักจะไม่อัปเดต submodule ดังนั้นจึงควรใช้git pull --recurse-submodules
- ทั้ง Windows และ Linux ใช้ Ninja และคอมไพเลอร์ CUDA
nvcc- ข้อกำหนดคือ CUDA Toolkit 11.2+
- Windows ต้องมีคอมโพเนนต์ “Desktop development with C++” และ “C++ CMake tools for Windows” ของ Visual Studio
- Linux ต้องมี GCC,
ninja-buildและไลบรารีพัฒนา X11/OpenGL
- คำสั่งบิลด์คือ
cmake --preset ninjaและcmake --build --preset ninja-release - ไฟล์ executable จะถูกสร้างใต้
build-ninja/Release/และต้องรันจากโฟลเดอร์บิลด์โดยตรงเพื่อให้หาโฟลเดอร์ resource เจอ - ในรีโพซิทอรียังมี CLI สำหรับรันการจำลองโดยไม่มี GUI รวมอยู่ด้วย
- ใช้สำหรับวัดประสิทธิภาพและรัน/ประเมินผลอัตโนมัติสำหรับพารามิเตอร์หลายแบบได้
- อินพุตคือไฟล์การจำลอง พารามิเตอร์ และจำนวน time step
- เอาต์พุตคือไฟล์การจำลองผลลัพธ์และไฟล์สถิติ CSV
- ตัวอย่างคำสั่ง
.\\cli.exe -i example.sim -o output.sim -t 1000จะรันexample.simเป็นเวลา 1000 time step
การแก้ปัญหาและไลเซนส์
- หากเกิดการแครชโดยไม่ทราบสาเหตุ ควรตรวจสอบข้อกำหนดก่อน
- ต้องมี NVIDIA GPU ที่มี compute capability 6.0 ขึ้นไป
- ต้องติดตั้งไดรเวอร์กราฟิก NVIDIA เวอร์ชันล่าสุด
- ชื่อไดเรกทอรีติดตั้งและชื่อไดเรกทอรีแม่ต้องไม่มีอักขระที่ไม่ใช่ภาษาอังกฤษ
- บน Windows ชื่อผู้ใช้ Windows ที่ติดตั้ง ALIEN ก็ต้องไม่มีอักขระที่ไม่ใช่ภาษาอังกฤษเช่นกัน
- ALIEN ต้องมีสิทธิ์เขียนในไดเรกทอรีของตัวเอง
- หากมี GPU หลายตัว จอมอนิเตอร์หลักต้องเชื่อมต่อกับการ์ดที่รองรับ CUDA
- หากใช้กราฟิกออนบอร์ดและการ์ดจอแยกร่วมกัน ต้องตั้งค่าให้
alien.exeใช้การ์ดจอประสิทธิภาพสูง
- หากตรงตามเงื่อนไขแล้วยังมีข้อผิดพลาดอยู่ ให้เริ่ม ALIEN ด้วยพารามิเตอร์บรรทัดคำสั่ง
-dแล้วทำให้เกิดปัญหาซ้ำ จากนั้นแนบlog.txtเพื่อสร้าง GitHub issue - สามารถส่ง contribution ได้ผ่าน GitHub Issues, Pull requests, Discussion forum
- ALIEN เผยแพร่ภายใต้ไลเซนส์ BSD 3-Clause
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ข้อมูลที่อยากหาในตอนแรกกลับหาได้ยากกว่าที่คิด และวิดีโอบน GitHub ก็โหลดไม่ได้จากฝั่งผม เลยรวบรวมลิงก์ไว้:
https://www.youtube.com/@alien-project/videos
https://www.youtube.com/watch?v=qwbMGPkoJmg
https://www.youtube.com/watch?v=w9R6zrdl6jM
อีกอย่าง ยังไม่ชัดเจนทั้งหมดว่ามันจะทำงานบน Linux อย่างไร และมองเผิน ๆ ดูเหมือนจะจำกัดอยู่ที่การตั้งค่าแบบ Windows + NVidia หวังว่าจะมีใครยืนยันได้ว่าผมเข้าใจผิด
ถ้าอยากลองสร้างอะไรแบบนี้แต่ไม่รู้จะเริ่มตรงไหน ขอแนะนำ https://natureofcode.com/
หนังสือนี้มุ่งเป้าไปที่ผู้เริ่มต้นและใช้ไลบรารี JS แต่ แนวคิดหลัก ที่พูดถึงนั้นนำไปใช้ได้ทั่วไป
กลับกัน ผมคิดว่า The Code of Nature น่าจะฟังเป็นธรรมชาติกว่า
ผมปล่อยให้ซิมูเลชัน Alien รันยาว ๆ มาหลายเดือนแล้ว เปิด ๆ ปิด ๆ เครื่องตามว่าต้องใช้ PC หรือไม่
เริ่มจากพรีเซ็ตค่าเริ่มต้น RGB Triad และสิ่งที่น่าทึ่งคือสิ่งมีชีวิตทั้งสามชนิดสร้างโครงสร้างซับซ้อนคล้ายเซลล์ด้วยวิธีที่แตกต่างกัน
มีทั้งผลึกเรขาคณิต เส้นยาว ๆ ที่พยายามกินสิ่งอื่น และโครงสร้างเป็นหนามที่ก่อตัวเป็นกำแพง น่าหลงใหลมากจริง ๆ
ยังจำเกม Flash ที่อนุภาคเล็ก ๆ แต่ละตัวมีพฤติกรรมเฉพาะของตัวเองได้อย่างดี
อนุภาคแต่ละตัวสามารถชนกัน ทำปฏิกิริยา แปลงสภาพ หรือทำลายวัสดุอนุภาคอื่นได้ จำชื่อเว็บไซต์หรือชื่อเกมไม่ได้แล้ว แต่การได้ลองเล่นกับ การเล่นแบบเกิดพฤติกรรมใหม่เอง นั้นสนุกเสมอ
[1] https://dan-ball.jp/en/javagame/dust/
[2] https://powdertoy.co.uk/
เว็บไซต์: https://alien-project.org/
น่าทึ่ง ชอบ cellular automata และ Conway's Game of Life อยู่แล้ว อันนี้ดูเหมือนจะเป็นเกมที่ใช้ได้เลย
ค่อนข้างเจ๋งเลย ดูจากที่มีบางคนกำลังพยายามรันอยู่ AMD ก็น่าจะมีความเป็นไปได้: https://github.com/chrxh/alien/issues/99
เจ๋งจนแทบหยุดหายใจ ดูวิดีโอไปสองสามอันแล้วนึกถึงซิมูเลเตอร์วิวัฒนาการชีวิตต่างดาวที่กำลังทำอยู่
โปรแกรมแบบคอนโซลของผมยังอยู่ในระดับคลาน แต่โปรเจกต์นี้อยู่ในระดับ บินอยู่บนฟ้า เลย
ดูเท่ดี แต่ไม่รู้จริง ๆ ว่า การเลื่อนหน้าจอ ทำยังไงกันแน่