Saya membuat permainan seperti Sokoban yaitu ada kotak yang memiliki beberapa peti di atasnya Anda dapat mendorong dan Anda harus mendapatkan peti pada salib untuk memenangkan level (meskipun saya akan menambahkan beberapa elemen tambahan untuk itu). Apakah ada algoritma umum atau bahan bacaan yang bisa saya lihat untuk bagaimana saya bisa menghasilkan level yang menarik (seperti, tidak sepele untuk dipecahkan) untuk gaya permainan ini? Saya sadar bahwa ada generator level acak untuk Sokoban tapi saya kesulitan menemukan deskripsi algoritma.
Saya tertarik membuat game di mana mesin dapat menghasilkan banyak level untuk saya, disortir berdasarkan kesulitan. Saya bahkan bersedia membatasi aturan permainan untuk membuat generasi level lebih mudah (mis. Saya mungkin akan membatasi ukuran grid sekitar 7x7). Saya menduga ada beberapa cara umum untuk melakukan pembangkitan level di sini seperti yang saya lihat, misalnya, game seperti Traffic Jam (di mana Anda harus memindahkan blok di sekitar blok gratis) dengan 1000 level di mana masing-masing memiliki solusi yang unik.
Satu ide yang saya miliki adalah membuat peta acak dalam keadaan terakhirnya (yaitu di mana semua peti berada di atas salib mereka) dan kemudian komputer akan menarik (bukannya mendorong) peti ini untuk membuat level. Properti bagus di sini adalah kita tahu levelnya bisa dipecahkan. Namun, saya perlu beberapa heuristik untuk memastikan levelnya menarik.
Jawaban:
Lihat kertas: Pembuatan masalah Sokoban secara otomatis
Dari abstrak:
sumber
Untuk teka-teki yang dapat dipecahkan, seringkali mudah untuk hanya memainkan permainan secara terbalik, mulai dari keadaan terpecahkan dan gerakan yang tidak dilakukan baik yang direncanakan atau secara acak (atau dalam editor.)
Sokoban sangat cocok dengan pendekatan ini, dan akan jauh lebih mudah diimplementasikan daripada strategi mengecualikan dan menyelesaikan.
sumber