Simulasi Kehidupan Partikel
- Program sederhana untuk mensimulasikan kehidupan buatan primitif menggunakan aturan sederhana tarik-menarik dan tolak-menolak antar partikel seperti atom.
- Selain elemen GUI, kodenya kurang dari satu halaman.
- Tutorial video dan panduan dapat dilihat di bawah.
Pelajari lebih lanjut (tutorial video YouTube)
- Tautan tutorial video YouTube tersedia.
Demo online (versi JavaScript)
- Tautan demo langsung 2D dan 3D tersedia.
Antarmuka (versi C++)
Hasil contoh
Beberapa pola menarik yang dapat direproduksi
- Tidak perlu mencocokkan parameter secara persis untuk mereproduksi pola-pola ini.
- Cara terbaik untuk mendapatkan pola menarik adalah terlebih dahulu mencoba eksplorasi parameter secara acak.
- Jika menemukan pola yang menarik, cobalah menyempurnakannya secara bertahap.
- Sesekali Anda dapat melakukan lompatan parameter yang besar agar tidak terjebak pada maksimum lokal.
Cara penggunaan
- Unduh repositori ini, ekstrak, pindah ke folder /particle_life/bin/, lalu klik particle_life.exe.
Kode
- Kode sumber tersedia dalam C++, JavaScript, dan Python.
- Tautan tutorial video YouTube tersedia.
- Jika Anda ingin berkontribusi pada program C++, algoritme intinya ada di 100 baris pertama "/particle_life/src/ofApp.cpp".
- Sisanya adalah komponen GUI dan kontrol rendering yang disediakan oleh pustaka openFrameworks.
- Untuk memulai, unduh repositori ini dan pustaka openFrameworks, lalu gunakan projectGenerator milik openFrameworks untuk mengimpor folder /particle_life/ ke dalam proyek.
- Atau, buat proyek openFrameworks baru dan tambahkan ofxGui, lalu ganti file proyek yang dihasilkan dengan folder /src/ yang disediakan di sini.
- Sekarang Anda dapat mengompilasi kode C++.
Port lain
- Tersedia daftar versi yang diporting ke berbagai bahasa seperti Godot, Rust, Go-1, Go-2, Go-3, Python, Lua, QB64-PE, WebGL, Java, C# Winforms, FreeBasic, dan lainnya.
Contoh kode JavaScript
- Anda dapat melihat contoh kode JavaScript dan file particle_life.html yang merupakan versi yang dioptimalkan.
Topik terkait
- Penjelasan tentang simulasi kehidupan partikel, primordial soup - evolusi, Conway's Game of Life, cellular automata, pola swaterorganisasi, dan lainnya.
- Proyek ini terinspirasi oleh Clusters karya Jeffery Ventrella, dan karena tidak menerapkan deteksi tabrakan, proyek ini dapat mensimulasikan ribuan partikel secara real-time.
- Dengan menambahkan kontrol GUI sehingga parameter dapat dengan mudah disesuaikan dan dieksplorasi secara real-time, pola-pola yang belum pernah terlihat muncul dari model relasi yang sangat sederhana.
- Kode ini dimulai sebagai materi pendidikan, dan ditujukan untuk non-programmer serta masyarakat umum untuk menunjukkan bahwa kompleksitas dapat muncul dari kesederhanaan.
Daftar tugas
- Menambahkan kemampuan untuk menyimpan dan memuat parameter (agar orang dapat dengan mudah membagikan model yang menarik)
- Kemampuan untuk menambahkan lebih banyak jenis partikel (saat ini tetap pada empat jenis partikel)
- Bottleneck terbesar saat ini adalah nested for loop yang menghitung jarak berpasangan antara semua partikel, sehingga kompleksitas komputasinya bersifat kuadratik.
- Sebagai alternatif untuk poin 3, perhitungan jarak berpasangan cukup mudah diparalelkan sehingga dapat dihitung di GPU.
- Menambahkan kemampuan untuk mengubah ukuran layar dan memperbaiki pemeriksaan batas (partikel dengan banyak gerakan cepat dapat keluar dari batas layar).
- Menambahkan UI yang lebih intuitif yang memungkinkan kontrol parameter yang lebih rinci.
- Menambahkan tombol acak atau, yang lebih baik, memiliki meta-rule sederhana yang terus mengubah aturan awal agar pola terus berubah tanpa terjebak pada maksimum lokal.
- Metode yang lebih baik mungkin adalah menggunakan algoritme evolusi untuk memilih dan mengoptimalkan parameter, tetapi untuk itu perlu menulis fungsi fitness. Saat ini belum diketahui apa fungsi fitness yang tepat dalam ranah program ini.
Opini GN⁺
- Proyek ini sangat bernilai untuk menunjukkan secara visual bagaimana fenomena kehidupan yang kompleks dapat muncul dari aturan yang sederhana.
- Ini bisa menjadi materi pengantar yang menarik bagi software engineer pemula yang tertarik pada pemrograman dan riset kehidupan buatan.
- Karena ada versi yang diporting ke berbagai bahasa, ini juga dapat membantu memperluas pemahaman tentang berbagai bahasa pemrograman.
1 komentar
Opini Hacker News