2 điểm bởi GN⁺ 2024-08-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • ALIEN là một môi trường sự sống nhân tạo với engine hạt 2D dựa trên CUDA, mô phỏng theo thời gian thực các vật thể mềm, chất lưu và sinh thể số dạng mạng tế bào
  • Cơ thể trong mô phỏng được cấu thành từ mạng hạt; các chức năng cấp cao như cảm biến, cơ bắp, vũ khí và bộ sinh tạo được điều phối bởi mạng nơ-ron, còn bản thiết kế được lưu dưới dạng genome và có thể truyền cho thế hệ con
  • Toàn bộ mã mô phỏng được viết bằng CUDA, tối ưu cho các mô phỏng thời gian thực quy mô lớn xử lý hàng triệu hạt, còn phần rendering dùng liên kết CUDA-OpenGL
  • Người dùng có thể tương tác với mô phỏng đang chạy, cũng như chỉnh sửa sinh thể và môi trường bằng trình chỉnh sửa đồ thị, công cụ vẽ tự do/hình học, trình chỉnh sửa genome và thao tác hàng loạt
  • Để chạy cần GPU NVIDIA có compute capability từ 6.0 trở lên; dự án cũng bao gồm CLI để chạy và đánh giá mô phỏng không cần GUI

ALIEN mô phỏng những gì

  • ALIEN là viết tắt của Artificial LIfe ENvironment, một công cụ mô phỏng sự sống nhân tạo
  • Nền tảng của nó là một engine hạt 2D chuyên dụng viết bằng CUDA, được thiết kế để xử lý vật thể mềm và chất lưu
  • Mỗi cơ thể trong mô phỏng được cấu thành từ mạng hạt
    • Có thể gắn các chức năng cấp cao, từ xử lý thông tin thuần túy cho đến thiết bị vật lý như cảm biến, cơ bắp, vũ khí và bộ sinh tạo
    • Việc thực thi các chức năng này được điều phối bởi mạng nơ-ron
    • Cơ thể có thể được xem như tác tử hoặc sinh vật số hoạt động trong một môi trường chung
    • Bản thiết kế được lưu trong genome và có thể truyền cho thế hệ con
  • Mục tiêu phát triển là hiểu rõ hơn về tiến hóa tiền sinh học và các điều kiện làm gia tăng độ phức tạp của hệ thống sinh học
  • Một mục tiêu quan trọng khác là tạo ra một trình mô phỏng dễ dùng, với UI hiện đại, rendering bắt mắt và cách tiếp cận gần với trò chơi

Engine vật lý và đồ họa

  • Hạt được dùng để mô phỏng vật thể mềm, động lực học vật rắn, chất lưu, tỏa nhiệt, hư hại và bám dính
  • Hỗ trợ tương tác người dùng theo thời gian thực với mô phỏng đang chạy
  • Mô phỏng được chạy hoàn toàn trên GPU thông qua CUDA
  • Rendering và hậu xử lý dựa trên OpenGL, sử dụng khả năng tương tác CUDA-OpenGL

Chức năng sự sống nhân tạo

  • Sinh vật đa bào được mô phỏng dưới dạng mạng hạt
  • Hỗ trợ hệ thống di truyền và sinh sản ở cấp độ tế bào
  • Các chức năng cấp cao như cảm biến và cơ bắp được điều khiển bằng mạng nơ-ron
  • Có thể dùng nhiều màu sắc khác nhau để tùy chỉnh loại tế bào theo quy cách do người dùng định nghĩa
  • Hỗ trợ các tham số mô phỏng thay đổi theo không gian

Công cụ chỉnh sửa và chia sẻ

  • Công cụ chỉnh sửa tập trung vào thao tác trực tiếp với các thành phần mô phỏng
    • Có thể thao tác mọi hạt và liên kết bằng trình chỉnh sửa đồ thị
    • Cung cấp công cụ vẽ tự do và vẽ hình học
    • Có thể thiết kế sinh vật tùy chỉnh bằng trình chỉnh sửa genome
    • Hỗ trợ thao tác hàng loạt và phóng to/thu nhỏ
  • Cũng bao gồm tính năng mạng
    • Cung cấp trình duyệt mô phỏng tích hợp
    • Hỗ trợ tải xuống và tải lên tệp mô phỏng
    • Có thể đề xuất mô phỏng bằng cách gắn sao

Mục đích sử dụng

  • Khi bật máy tự sao chép và đột biến, mô phỏng sẽ tự tiến triển, cho phép người dùng quan sát tiến hóa đang diễn ra
  • Có thể sử dụng như một trò chơi với engine vật lý nhanh và chân thực
    • Có thể tăng tốc hoặc phá hủy hàng trăm nghìn cỗ máy bằng con trỏ chuột
    • Nhiều phong cách rendering và trình chỉnh sửa trực quan giúp quan sát sự kiện
    • Ví dụ có trên YouTube channel
  • Về mặt học thuật, đây là công cụ để khám phá cách độ phức tạp hoặc cấu trúc giống sự sống có thể xuất hiện từ các thành phần đơn giản
    • Cách hệ sinh thái thích nghi với thay đổi môi trường và tìm ra trạng thái cân bằng mới
    • Bài toán tìm các điều kiện cho phép tiến hóa mở
  • Cũng có thể dùng như một công cụ nghệ thuật tạo sinh, trong đó tiến hóa đóng vai trò như sức mạnh sáng tạo tạo ra hình thái và hành vi mới

Tài liệu và điều kiện chạy

  • Tài liệu cho phiên bản major trước nằm tại alien-project.gitbook.io/docs, giới thiệu trình mô phỏng dưới dạng các bài hướng dẫn
  • Nhiều thông tin trong tài liệu đó không còn cập nhật
  • Phiên bản mới nhất cung cấp tài liệu ngắn gọn và hướng dẫn người dùng thông qua cửa sổ trợ giúp và tooltip bên trong chương trình
  • Tài nguyên bổ sung có tại Website, YouTube, Twitter, Reddit, Discord
  • Yêu cầu hệ thống tối thiểu là card đồ họa NVIDIA có compute capability từ 6.0 trở lên
  • Tệp cài đặt cho Windows là alien-installer.msi, và ngày cập nhật theo README là 2025-09-06

Build và CLI

  • Việc build từ mã nguồn hầu hết được tự động hóa bằng CMake đa nền tảng và trình quản lý gói vcpkg được đưa vào dưới dạng Git submodule
  • Khi lấy mã nguồn, cần dùng --recursive để checkout cả submodule vcpkg
    • git pull tiêu chuẩn thường không cập nhật submodule, vì vậy nên dùng git pull --recurse-submodules
  • Cả Windows và Linux đều dùng Ninja và trình biên dịch CUDA nvcc
    • Điều kiện cần là CUDA Toolkit 11.2+
    • Windows cần các thành phần “Desktop development with C++” và “C++ CMake tools for Windows” của Visual Studio
    • Linux cần GCC, ninja-build và các thư viện phát triển X11/OpenGL
  • Lệnh build là cmake --preset ninjacmake --build --preset ninja-release
  • Tệp thực thi được tạo dưới build-ninja/Release/, và cần chạy trực tiếp từ thư mục build để tìm được thư mục tài nguyên
  • Kho mã cũng bao gồm CLI để chạy mô phỏng không cần GUI
    • Có thể dùng để đo hiệu năng và tự động chạy/đánh giá với nhiều tham số
    • Đầu vào là tệp mô phỏng, tham số và số bước thời gian
    • Đầu ra là tệp mô phỏng kết quả và tệp thống kê CSV
    • Lệnh ví dụ .\cli.exe -i example.sim -o output.sim -t 1000 chạy example.sim trong 1000 bước thời gian

Khắc phục sự cố và giấy phép

  • Nếu bị crash không rõ nguyên nhân, trước tiên cần kiểm tra các yêu cầu
    • Cần GPU NVIDIA có compute capability từ 6.0 trở lên
    • Cần cài đặt driver đồ họa NVIDIA mới nhất
    • Tên thư mục cài đặt và các thư mục cha không được chứa ký tự không phải tiếng Anh
    • Trên Windows, tên người dùng Windows đã cài ALIEN cũng không được chứa ký tự không phải tiếng Anh
    • ALIEN cần quyền ghi vào thư mục riêng của nó
    • Nếu có nhiều GPU, màn hình chính phải được kết nối với card hỗ trợ CUDA
    • Nếu dùng đồng thời card đồ họa tích hợp và card rời, cần cấu hình để alien.exe sử dụng card đồ họa hiệu năng cao
  • Nếu vẫn gặp lỗi dù đã đáp ứng các điều kiện, hãy khởi động ALIEN với tham số dòng lệnh -d, tái hiện lỗi, rồi tạo GitHub issue kèm theo log.txt
  • Có thể đóng góp qua GitHub Issues, Pull requests, Discussion forum
  • ALIEN được phân phối theo giấy phép BSD 3-Clause

1 bình luận

 
GN⁺ 2024-08-19
Ý kiến trên Hacker News
  • Tài liệu ban đầu tôi muốn tìm hóa ra không dễ tìm như tưởng, còn video trên GitHub thì phía tôi không tải được, nên tôi gom các liên kết lại đây:
    https://www.youtube.com/@alien-project/videos
    https://www.youtube.com/watch?v=qwbMGPkoJmg
    https://www.youtube.com/watch?v=w9R6zrdl6jM
    Ngoài ra, chưa hoàn toàn rõ nó sẽ chạy trên Linux như thế nào, và thoạt nhìn có vẻ bị giới hạn ở cấu hình Windows + NVidia. Hy vọng có thể xác nhận rằng nhận định đó là sai.

  • Nếu muốn thử làm một thứ như thế này mà không biết bắt đầu từ đâu, tôi khuyên xem https://natureofcode.com/
    Nó dành cho người mới bắt đầu và dùng thư viện JS, nhưng những ý tưởng cốt lõi được đề cập thì nhìn chung có thể áp dụng rộng rãi.

    • Tiêu đề Nature of Code nghe như một cuốn sách bàn về bản chất của chính code vậy.
      Ngược lại, The Code of Nature có lẽ sẽ nghe tự nhiên hơn.
  • Tôi đã chạy mô phỏng Alien trong thời gian dài suốt vài tháng, bật tắt máy tùy theo việc có dùng PC hay không.
    Tôi bắt đầu với preset thiết lập ban đầu RGB Triad, và điều đáng kinh ngạc là ba loại sinh vật tạo ra các cấu trúc phức tạp giống tế bào theo những cách khác nhau.
    Từ các tinh thể hình học, những sợi dài cố ăn các thứ khác, cho đến các cấu trúc gai tạo thành tường đều xuất hiện, thật sự rất cuốn hút.

    • Yếu tố hình ảnh cũng quan trọng, nhưng tôi tò mò liệu có thể chạy mô phỏng nhanh hơn nếu bỏ qua rendering hay không.
  • Tôi vẫn nhớ rất rõ một game Flash trong đó các hạt nhỏ có hành vi riêng của chúng.
    Mỗi hạt có thể va chạm, phản ứng, biến đổi hoặc phá hủy vật liệu hạt khác. Tôi không nhớ tên website hay trò chơi, nhưng việc mày mò lối chơi nổi lên từ tương tác lúc nào cũng thú vị.

  • Website: https://alien-project.org/

  • Đáng kinh ngạc. Tôi thích cellular automata và Conway's Game of Life, và cái này trông như một game ổn đấy.

  • Khá tuyệt. Nhìn một số người đang thử chạy thì có vẻ AMD cũng có khả năng: https://github.com/chrxh/alien/issues/99

  • Đẹp đến nghẹt thở. Tôi đã xem vài video và nó làm tôi nghĩ đến trình mô phỏng tiến hóa sự sống ngoài hành tinh mà tôi đang làm.
    Chương trình chạy trên console của tôi thì chỉ ở mức bò lết, còn dự án này thì ở đẳng cấp bay trên trời.

  • Trông hay đấy, nhưng rốt cuộc di chuyển màn hình kiểu gì vậy?