Berikut adalah contoh penyebaran lendir. Substansi tersebar di sekitar sumber (dalam contoh ini, sumber akan menjadi bangunan alien utama).
Game ini adalah starcraft, zat ungu disebut creep.
Bagaimana penyebaran zat semacam ini akan dicapai dalam lingkungan 2D top-down? Menghitung ulang perkembangan zat dan meregenerasi efek pada terbang setiap frame atau lebih tepatnya menggunakan koleksi besar ubin atau sesuatu yang lain?
2d
algorithm
graphic-effects
nathan
sumber
sumber
Jawaban:
Menurut komentar Anda di jawaban lain, masalah Anda bukan algoritma creep tumbuh, melainkan algoritma yang memilih ubin creep untuk digunakan.
Ubin mana yang digunakan tergantung pada apakah:
Itu berarti Anda akan membutuhkan total 16 ubin. Anda dapat dengan mudah mengatasinya dengan bitfield. Berikut adalah beberapa pseudocode yang akan memilih ubin berbeda untuk setiap konstelasi creep yang mungkin:
Perhatikan bahwa setiap kali Anda mengubah status infeksi ubin, semua ubin berdekatan yang terinfeksi perlu dievaluasi ulang, karena lingkungan mereka sekarang telah berubah.
Cara mendesain 16 ubin grafik sehingga mereka cocok bersama dengan baik adalah pertanyaan (baru) untuk seorang desainer grafis.
sumber
Beberapa waktu yang lalu saya membaca artikel strategi yang menjelaskan secara rinci bagaimana creep menyebar di Starcraft 2, saya berjuang untuk menemukannya sekarang tetapi saya ingat itu cukup sederhana dan bekerja sedikit seperti ini
Cara termudah untuk melacak ubin yang merambat telah menyebar mungkin hanya sebuah bendera untuk setiap ubin - jangan coba menghitung ulang setiap belokan.
Waktu antara "ticks" dapat digunakan untuk mengontrol laju penyebaran creep, atau Anda bisa membiarkan creep menyebar ke beberapa ubin setiap "tick", atau bahkan secara acak waktu antara tick.
Algoritme di atas memiliki efek creep yang menyebar lebih cepat jika diblokir oleh tebing di kedua sisi, namun Anda bisa memilih ubin acak dalam jangkauan sumber creep dan kemudian hanya menyebar creep ke ubin itu jika bukan tebing. .
sumber