Pendahuluan
Sejak saat tidak ada yang lebih baik dari ZX-Spectrum, saya ingat mainan di mana perlu untuk mengatur program untuk robot sehingga dapat mengalahkan musuh dalam berenang otonom. Dan di waktu senggang saya dari kerja dan istirahat, saya mulai mengerjakan program yang, dengan bantuan pengaturan membaca dari file teks dalam format XML, memungkinkan Anda untuk:
- menciptakan dunia yang datar, terbatas dalam ukuran oleh sumber daya komputer. Alih-alih dinding es di sepanjang tepi, itu muncul dari tepi yang berlawanan, untuk benda-benda di dalam dunia tampaknya terus menerus.
- tambahkan sumber energi panas bumi dalam jumlah tak terbatas
- mengamati pencahayaan matahari dalam bentuk tempat yang meniru gerakan termasyhur dengan perubahan hari dan tahun.
- menggambarkan mineral dengan berbagai tingkat "volatilitas", yaitu kerentanan terhadap pergerakan sewenang-wenang di permukaan karena difusi
- menggambarkan reaksi kimia antara zat yang dapat dilakukan organisme hidup di bawah pengaruh energi
- dan, tentu saja, mengamati organisme "hidup".
Perbedaan utama dari game yang ada - dalam model tidak ada akhir yang ditentukan oleh skrip.
Dunia model
Dunia ditunjukkan dalam gambar - sebuah titik besar adalah sinar matahari (bergerak seiring waktu), dua titik yang lebih kecil adalah sumber dari jenis energi lain yang disebut panas bumi. Permukaan yang diterangi sebagian besar berwarna biru karena mengandung air di setiap titik. Titik-titik dengan warna yang berbeda muncul dan hilang jika, karena difusi, konsentrasi relatif dari elemen yang sesuai telah menjadi sementara di atas rata-rata.

Untuk menghemat konsumsi memori, jumlah materi di setiap titik disimpan dalam tipe float, yang menghasilkan 7 bit signifikan. Untuk model, 100 ribu unit ditetapkan di setiap titik air, 20 ribu karbon dioksida, 10 unit hidrogen (yaitu, sepuluh ribu kali lebih sedikit dari air), dan nol oksigen dan metana. Contoh tampilan deskripsi zat yang dimasukkan ke dalam model:
<Element name="CarbonDioxide" color="yellow" volatility="0.12" visibility="true"> <rect left="0" top="0" right="max" bottom="max" amount="20000"/> </Element> <Element name="Oxygen" color="green" volatility="0.12" visibility="false"> <rect left="0" top="0" right="max" bottom="max" amount="0"/> </Element> ...
Selanjutnya, reaksi pembentukan metana dan air dari karbon dioksida dan hidrogen di hadapan energi panas bumi dijelaskan.
<Reaction name="CO2+4H2=CH4+2H2O" geothermalEnergy="0.00001" solarEnergy="0"> <LeftReagent name="CarbonDioxide" amount="1"/> <LeftReagent name="Hydrogen" amount="4"/> <RightReagent name="Methane" amount="1"/> <RightReagent name="Water" amount="2"/> </Reaction>
Protoorganisme LUCA pertama dengan reaksi ini ditanam di dalam salah satu mata air panas bumi.
<section name="Organisms"> <item name="LUCA" author="DEMI" x="300" y="30" reaction="CO2+4H2=CH4+2H2O"/> </section>
Selanjutnya, filter dimasukkan dalam program untuk menunjukkan titik-titik yang mengandung metana dan noda metana mulai menyebar ke seluruh tubuh. Sel pertama dapat menerima zat hanya dari titik di mana ia berada, dan transfer zat dilakukan karena difusi. Jika Anda mengurangi jumlah zat yang tersedia, maka laju perambatan produk reaksi melambat tajam.

Program ini mengimplementasikan mode aproksimasi, ketika titik meningkat menjadi persegi, yang menampilkan daftar zat dan organisme hidup yang terkandung di dalamnya. Jika filter untuk beberapa elemen dihidupkan, maka warna elemen dengan konsentrasi relatif tertinggi pada titik ini digunakan untuk mewarnai titik, jika tidak hanya air yang paling terlihat akan selalu terlihat.

Seleksi
Bahan awal berlimpah, tetapi cepat atau lambat semuanya akan habis. Jika sel berhasil "mencerna makanan", maka sel itu menumpuk "lemak" (energi internal) dan dapat berkembang biak dengan pembagian, dan bermutasi selama pembelahan. Atau mati karena kelelahan. Perilakunya juga diwariskan dan mengalami mutasi, di mana bagian yang tidak signifikan dari parameter otomat seluler berubah. Selanjutnya, mutasi terkontrol akan diperkenalkan ke dalam model, ketika pengguna hanya akan menunjukkan untuk jenis mutasi apa yang ingin ia terima. Mutasi yang diharapkan akan terjadi dengan beberapa probabilitas dan spesies baru harus dapat bertahan hidup untuk bermutasi lebih lanjut.
Jadi, kita memiliki semacam proto-organisme-methanogen, yang membutuhkan energi panas bumi. Itu mengendap di zona energi panas bumi, dan spesies individu yang mengeluarkan difusi darinya - musnah. Organisme mati terus mengambil tempat mereka untuk sementara waktu, dan kemudian, jika tidak ada yang memakannya, mereka menghilang. Konsumsi mineral untuk pertumbuhan organisme tidak disadari, masing-masing, ketika mereka membusuk, mereka menghilang begitu saja. Setelah memulai simulasi, organisme berlipat ganda dengan cepat, menempati seluruh area di sekitar sumber panas bumi. Setelah beberapa waktu, sel-sel mati muncul di luar aksi energi panas bumi. Sangat menarik bahwa kadang-kadang Anda dapat melihat bahwa organisme di pusatnya mati - mereka yang tidak memiliki cukup mineral memakan semuanya pada pendekatannya. Gambar tersebut menunjukkan organisme hidup berwarna coklat putih dan mati, biru menunjukkan air, lingkaran merah muda menunjukkan area di mana energi panas bumi dirasakan (intensitasnya berkurang dengan jarak dari pusat).

Beberapa sumber energi panas bumi dijelaskan di dunia, protoorganisme pertama ditanam di salah satunya. Ketika simulasi berlangsung cukup lama (beberapa jam), saya terkejut menemukan bahwa sumber tetangga juga dihuni - beberapa tubuh beruntung bisa hidup hidup.
Tidak peduli seberapa besar dunia ini, jika hanya satu reaksi yang terjadi di dalamnya, semua karbon dioksida (atau hidrogen) akan dikonsumsi cepat atau lambat, setelah itu semua organisme akan mati kelaparan, meninggalkan cadangan metana yang besar.
Gambar tersebut termasuk tampilan organisme hidup dan metana (tempat ungu yang tumbuh di sekitar sumber panas bumi) dengan cahaya latar dari Matahari (sinar pertama mulai mengenai tempat metana di pagi hari, matahari di sebelah kanan, dan hitam ditampilkan karena hanya metana dan yang hidup yang ditampilkan) organisme) dan setelah menyalakan pencahayaan penuh.

Mengingat distribusi sumber daya mineral yang sangat buruk, populasi berada di ambang kelangsungan hidup - tidak lebih dari beberapa individu. Gambar tersebut menunjukkan opsi ketika awalnya hanya ada dua reaksi di setiap titik hidrogen.

File Snapshoot2017.rar berisi file yang dapat dieksekusi yang dikompilasi untuk Windows dan file pendukungnya. Tidak diperlukan instalasi, ia tidak meninggalkan jejak karyanya - untuk memulainya, cukup unzip dan kemudian hapus. Untuk mengubah pengaturan default - file ThemeAero / template.demi dapat dibuka dalam editor teks sederhana. Kontrol dijelaskan di bagian yang sesuai dari wiki proyek.
Rencana selanjutnya
Pemilihan organisme berdasarkan keberuntungan dan tindakan variabilitas mereka. Sekarang kita perlu beralih ke evolusi, sambil manual. Tambahkan mutasi ke file konfigurasi - organisme dengan reaksi balik yang tidak memerlukan energi eksternal, tetapi jauh lebih efektif. Sekarang, ketika suatu protoorganisme dibagi, suatu spesies anak-anak kadang-kadang akan muncul, yang tidak lagi terikat pada sumber energi panas bumi, tetapi yang membutuhkan produk aktivitas vital dari jenis pertama. Hasilnya harus menjadi keseimbangan antara kedua spesies.
Selanjutnya, kita memiliki energi matahari yang belum dimanfaatkan. Hanya satu organisme yang dapat ditemukan pada satu titik di ruang angkasa, yang membuat mereka bersaing tidak hanya untuk energi dan materi, tetapi juga untuk ruang.
Kesimpulan
Saat ini, kesulitan utama adalah memilih rasio dari objek model yang ada sehingga tetap stabil dan menarik. Ini adalah rasio volume zat mineral, energi, kecepatan, reaksi metabolisme, dan kemudian tugas-tugas dari bidang "alam yang hidup" - bagaimana memastikan pengkodean automata seluler. Lebih tepatnya, kita hanya perlu data tentang dunia sekitarnya dalam bentuk yang disesuaikan. "DNA" harus kompak, mampu mutasi atom non-destruktif, menggambarkan baik struktur tubuh (seperangkat sel - sistem saraf, reseptor, otot, baju besi, dll), dan algoritma aksinya.
Di masa depan yang jauh, model dapat didistribusikan - setiap pengguna memiliki kebun sendiri, di mana ia membiakkan organisme sendiri, tersebar di kabupaten, dan ke mana ternak dari tetangganya mendapat. Ketangkasan dapat diukur sebagai prevalensi suatu spesies.
Bagi saya, proyek ini adalah hiburan dan saya tidak berencana untuk mendapatkan manfaat apa pun. Dan tujuan dari artikel ini adalah untuk mencari orang-orang yang tertarik pada bidang ini, yang dapat membagikan praktik dan ide terbaik mereka.
Dalam program ini, model secara teknis dihitung dalam utas terpisah, kecepatannya dapat diperkirakan dengan seberapa cepat waktu model berjalan, dan karenanya, tidak tergantung pada skala apa dan dengan detail apa gambar diambil di layar. Ada juga aliran terpisah yang membuat gambar dari dunia model. Kecepatannya lebih tinggi, semakin sedikit titik model yang ditampilkan - misalnya, ketika sejumlah kecil titik ditempatkan pada layar dengan perbesaran tinggi, fps lebih tinggi daripada saat seluruh dunia berada di monitor lebar pada jarak maksimum di layar. Kecepatan tampilan, yang dibatasi hingga 60 fps, ditampilkan di sudut kiri atas, tidak masuk akal lebih cepat.
PS: Model ini open source di bawah GNU GPL Versi 3, 29 Juni 2007 dan tersedia untuk diunduh kepada siapa saja yang ingin bereksperimen atau membuat garpu. Dirakit dengan pustaka ClanLib lintas platform di MS VS2015. File biner untuk OS Windows ada dalam arsip - tidak diinstal sama sekali, tetapi hanya dimulai setelah membongkar. Saya berasumsi bahwa kompilasi untuk platform lain tidak akan menimbulkan masalah. Template.xml dapat diedit dalam editor teks yang sesuai, beberapa dokumentasi ada di github di bagian wiki.