Saya sedang mengembangkan sistem pasokan yang serupa dalam permainan saya sendiri, jadi saya juga telah memikirkan bagaimana menyelesaikan masalah kunci-pasokan, dan favoritisme. Untuk menggambarkan masalah, saya akan membuat contoh sederhana:
Jika Anda memiliki daftar: [producer1, consumer1, consumer2, consumer3] dan Anda memperbarui secara berurutan, mulai dari persediaan = 0, Anda akan mendapatkan ini:
producer1 produces 5 mass. You now have 5 mass
consumer1 wants 3 mass. Success, you now have 2 mass
consumer2 wants 3 mass. Fail
consumer3 wants 3 mass. Fail
[next tick]
producer1 produces 5 mass. You now have 7 mass
consumer1 wants 3 mass. Success, you now have 4 mass
consumer2 wants 3 mass. Success, you now have 1 mass
consumer3 wants 3 mass. Fail
etc...
konsumen1 mendapatkan semua kesenangan, sementara konsumen 2 dan 3 kelaparan sampai konsumen 1 telah puas. Bergantung pada gim Anda, ini mungkin tidak diinginkan. Saya tahu dalam permainan saya, bukan. Ketika saya menyiasatinya, saya akan membuat antrian di mana konsumen yang telah diberi makan dalam satu centang akan pindah ke belakang antrian untuk centang berikutnya, yang saya percaya adalah apa yang didapat Roy T. Contoh di atas akan terlihat seperti ini:
producer1 produces 5 mass. You now have 5 mass
consumer1 wants 3 mass. Success, you now have 2 mass. <-- Move to end of queue
consumer2 wants 3 mass. Fail
consumer3 wants 3 mass. Fail
[next tick]
producer1 produces 5 mass. You now have 7 mass
consumer2 wants 3 mass. Success, you now have 4 mass <-- Note the order change
consumer3 wants 3 mass. Success, you now have 1 mass
consumer1 wants 3 mass. Fail
etc...
Dengan cara ini, semua orang akan mendapatkan bagian yang adil dari sumber daya.
Saya juga berencana untuk mengimplementasikan antrian tambahan untuk digunakan sebagai antrian prioritas sehingga pengguna dapat memilih struktur tertentu untuk mendapat prioritas sumber daya. Antrian prioritas akan selalu dilayani sebelum antrian standar. Pastikan semua produsen diperbarui terlebih dahulu, lalu konsumsi semua sumber daya kedua, jika tidak antrian akan mogok ketika Anda menghasilkan sumber daya sebagian melalui tanda centang dan beberapa konsumen sudah kelaparan.
Jadi, rekaplah: Perbarui produsen, kemudian antrian prioritas, pindahkan konsumen ke akhir antrian prioritas, kemudian perbarui antrian standar, pindahkan konsumen ke akhir antrian standar.