ฉันกำลังพัฒนาระบบเสบียงที่คล้ายคลึงกันในเกมของฉันเองดังนั้นฉันจึงคิดเกี่ยวกับวิธีการแก้ไขปัญหาล็อกซัพพลายและการเล่นพรรคเล่นพวก เพื่ออธิบายปัญหาฉันจะสร้างตัวอย่างง่ายๆ:
หากคุณมีรายการ: [ผู้ผลิต 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...
consumer1 สนุกไปกับมันในขณะที่ผู้บริโภค 2 และ 3 หิวจนผู้บริโภค 1 ได้รับความพึงพอใจ สิ่งนี้อาจไม่เป็นที่ต้องการทั้งนี้ขึ้นอยู่กับเกมของคุณ ฉันรู้ว่าในเกมของฉันมันไม่ใช่ เมื่อฉันไปถึงที่นั่นฉันจะสร้างคิวที่ผู้บริโภคที่ได้รับอาหารในหนึ่งเห็บจะย้ายไปด้านหลังของคิวสำหรับเห็บถัดไปซึ่งฉันเชื่อว่าเป็นสิ่งที่ Roy T. ได้รับ ตัวอย่างข้างต้นจะมีลักษณะเช่นนี้:
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...
ด้วยวิธีนี้ทุกคนจะได้รับการแบ่งปันทรัพยากรอย่างยุติธรรม
ฉันยังวางแผนที่จะใช้คิวเพิ่มเติมเพื่อใช้เป็นคิวลำดับความสำคัญเพื่อให้ผู้ใช้สามารถเลือกโครงสร้างบางอย่างเพื่อให้มีลำดับความสำคัญของทรัพยากร คิวลำดับความสำคัญจะแสดงก่อนคิวมาตรฐานเสมอ ตรวจสอบให้แน่ใจว่าผู้ผลิตทั้งหมดได้รับการปรับปรุงก่อนจากนั้นจึงใช้ทรัพยากรทั้งหมดเป็นลำดับที่สองมิฉะนั้นคิวจะพังเมื่อคุณสร้างทรัพยากรส่วนหนึ่งผ่านเห็บและผู้บริโภคบางส่วนได้รับการอดอาหารแล้ว
ดังนั้นในการสรุป: อัพเดตผู้ผลิตจากนั้นจัดลำดับความสำคัญย้ายผู้บริโภคที่เลี้ยงไปยังจุดสิ้นสุดของลำดับความสำคัญจากนั้นอัปเดตมาตรฐานมาตรฐานการย้ายผู้บริโภคที่เลี้ยงไปยังจุดสิ้นสุดของมาตรฐานมาตรฐาน