Dwarf Fortress bukanlah open source, dan walaupun ada banyak dugaan dan rekayasa balik yang dapat menjelaskan bagaimana semua itu bekerja, saya akan lebih fokus pada beberapa teknik dasar untuk mengoptimalkan roguelike 3D (bukan grafik 3D, dunia 3D). Tipe yang sama.
Seperti halnya dengan semua video game ada banyak asap dan cermin yang menciptakan ilusi kompleksitas dari aturan dan sistem sederhana. Ini berkisar dari menggunakan angka acak sederhana untuk gerakan tanpa tujuan sepanjang jalan untuk memanggang mesh tingkat tinggi node untuk merintis jalan.
Gerakan
Berbicara tentang merintis jalan, ini seringkali bisa menjadi masalah yang sangat sulit untuk dipecahkan untuk ruang besar seperti peta DF dapat (sebanyak 768x768x64 IIRC) namun masalahnya dapat disederhanakan dan dipercepat dengan cara-cara ini:
- Jaringan simpul pra-panggang: Ketika peta dibuat, dunia dapat dipecah menjadi potongan-potongan, dan setiap potongan dapat memiliki pintu keluar dan pintu masuk yang dipetakan. Ketika chunk diperbarui, seperti ketika dinding dibangun, hanya jaringan chunk yang perlu diperbarui.
- Penjelajahan Bertahap: Menjalankan lintasan di seluruh peta, sel untuk sel, akan membutuhkan banyak waktu, alih-alih Anda akan menemukan lintasan di jaringan chunk yang lebih besar, yang memetakan semua koneksi antar chunk, dan kemudian hanya menjalankan lintasan intra-chunk ketika bergerak dari chunk ke chunk. Ini melakukan 2 hal untuk Anda. Ini mempercepat pathfinding dengan memecahnya menjadi banyak potongan-potongan kecil, dan juga memungkinkan unit untuk mengubah arah bagian jalan di sepanjang jalan ketika sepotong pembaruan. Akan kembali jalur di jaringan besar jika ada node yang perlu lintas pembaruan.
- Kemudi acak: Saat tidak bergerak ke tujuan, unit hanya perlu berjalan tanpa tujuan. Banyak roguelikes hanya memindahkan unit dalam arah acak, yang terasa tidak wajar. Berbagai teknik kemudi dapat digunakan, yang sederhana lebih disukai untuk bergerak dalam garis lurus dan memiliki lebih sedikit kesempatan untuk bergerak ke arah yang memancar ke belakang, yang hanya memiliki peluang sekitar 1%. Jadi unit kadang-kadang akan berbalik arah sepenuhnya, tetapi jarang.
Saya tidak akan membahas dasar-dasar pencarian jalan. Kebanyakan roguelikes menggunakan A *, tetapi ada metode lain untuk menguliti kucing. Mmmm Kulit kucing ..
Tugas Pribadi
Salah satu hal utama yang membuat unit DF muncul dan terasa hidup adalah daftar sasaran pribadi mereka. Sebenarnya banyak game roguelike memiliki ini pada tingkat dasar. Pada dasarnya setiap unit memiliki daftar keinginan (dan untuk dorf Anda, tugas yang mungkin mereka ambil yang Anda minta untuk diselesaikan) dan mereka akan memilih dari mereka berdasarkan kepribadian mereka (statistik).
Beberapa tugas memiliki persyaratan. Membuat rok kulit mengharuskan dorf berada di toko ini yang memiliki barang-barang X. Jadi semuanya diperiksa dan ditambahkan sebagai tugas dalam daftar mereka. Sederhana seperti itu.
Karena sebagian besar waktu unit akan dalam perjalanan, pemeriksaan untuk apa unit lakukan bisa sangat cepat, hanya beberapa unit akan membuat pilihan pada saat tertentu, dan secara keseluruhan tidak ada perlambatan bahkan untuk ratusan atau ribuan unit. Dan ingat, di DF segala sesuatu dari lebah ke troglodytes ke pohon adalah satuan.
Dalam melakukan beberapa penelitian tambahan, jelas bahwa, meriah, DF melakukan pekerjaan buruk pathfinding secara umum. Itu tidak memecah peta menjadi potongan-potongan, itu memecah peta menjadi segmen atau area yang terhubung, (yang lebih baik daripada tidak ada yang pasti) sehingga penilaian saya di atas bahkan lebih sedikit contoh tentang cara kerja DF daripada yang saya pikirkan. :) Yang tidak mengatakan bahwa DF adalah sesuatu yang kurang dari luar biasa untuk sejuta alasan lainnya.
Ini menunjukkan bahwa yang penting dalam permainan adalah permainan. Bukan grafis, pemrograman tidak bagus, penulisan tidak hebat, musik tidak hebat, bahkan antarmuka; tidak ada yang bahkan 1% sama pentingnya dengan gim itu sendiri.