আমি আমার নিজের খেলায় অনুরূপ সরবরাহ ব্যবস্থার বিকাশ করছি, তাই আমি কীভাবে সরবরাহ-লক সমস্যাটি সমাধান করতে পারি এবং পক্ষপাতিত্ব সম্পর্কেও ভাবছিলাম। সমস্যাটি বর্ণনা করার জন্য, আমি একটি সাধারণ উদাহরণ তৈরি করব:
আপনার যদি একটি তালিকা থাকে: [উত্পাদক 1, ভোক্তা 1, গ্রাহক 2, গ্রাহক 3] এবং আপনি সরবরাহ = 0 থেকে শুরু করে ক্রমানুসারে আপডেট করেন তবে আপনি এটি পাবেন:
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...
গ্রাহক 1 সমস্ত মজা পায়, যখন গ্রাহক 1 এবং 3 সন্তুষ্ট না হওয়া পর্যন্ত 2 এবং 3 অনাহারে থাকে। আপনার গেমের উপর নির্ভর করে এটি পছন্দসই হতে পারে না। আমি আমার খেলায় জানি, তা হয় না। যখন আমি এটির কাছাকাছি পৌঁছে যাব তখন আমি একটি সারি তৈরি করতে যাচ্ছি যেখানে একটি টিক খাওয়ানো গ্রাহকরা পরের টিকের জন্য কাতারের পিছনে চলে যাবে, যা আমি বিশ্বাস করি রয় টি। যা পাচ্ছে। উপরের উদাহরণটি এর মতো দেখতে পাবেন:
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...
এইভাবে, প্রত্যেকে সংস্থানগুলির ন্যায্য অংশ পাবে।
আমি অগ্রাধিকারের সারি হিসাবে ব্যবহার করার জন্য একটি অতিরিক্ত সারি প্রয়োগ করারও পরিকল্পনা করি যাতে ব্যবহারকারী সংস্থানগুলির অগ্রাধিকার পেতে নির্দিষ্ট কাঠামো নির্বাচন করতে পারেন। অগ্রাধিকার সারি সর্বদা মানক সারির আগে পরিবেশিত হবে। নিশ্চিত হয়ে নিন যে সমস্ত প্রযোজক প্রথমে আপডেট হয়েছে, তারপরে সমস্ত সংস্থান দ্বিতীয়টি গ্রাস করুন, অন্যথায় আপনি যখন টিকের মাধ্যমে আংশিক উপায়ে উত্স উত্পাদন করেন এবং কিছু ভোক্তা ইতিমধ্যে অনাহারিত হয়ে গেছে তখন সারিটি ভেঙে যাবে।
তাই পুনরুদ্ধার করার জন্য: উত্পাদকদের আপডেট করুন, তারপরে অগ্রাধিকারের সারি, খাওয়ানো গ্রাহকরা অগ্রাধিকারের সারির শেষের দিকে নিয়ে যান, তারপরে খাওয়ানো গ্রাহকদের স্ট্যান্ডার্ড সারির শেষের দিকে নিয়ে যান, মানক সারিতে আপডেট করুন।