ขณะนี้ฉันกำลังทำงานกับเกม MMO ขนาดเล็กมากที่วางแผนไว้เพื่อรองรับผู้เล่นประมาณร้อยคนต่อเซิร์ฟเวอร์ แต่เรากำลังประสบปัญหากับโมเดลประหยัดของเรา
ด้วยเหตุผลหลายประการเราจึงตัดสินใจใช้ระบบจำนวนเงินคงที่ หมายความว่ามีเพียงจำนวนหนึ่งของ "ทองคำ" ที่สามารถที่เคยมีอยู่ในเกมในเวลาเดียวกัน ในเวอร์ชั่นทดสอบเล่นก่อนหน้านี้ (ผู้เล่น 9 คน) จำนวนนั้นคือ 9000 gold แต่เราวางแผนที่จะมีประมาณ 1 ล้าน gold ต่อเซิร์ฟเวอร์ (100 ผู้เล่น)
ตัวอย่างสั้น ๆ เกี่ยวกับการทำงานของระบบ:
ในบางช่วงเวลานี่คือลักษณะของปริมาณทองที่อาจปรากฏในเกม
| Max Gold | Bank | Shopkeeper | Player A | Player B | | 100 | 90 | 0 | 5 | 5 |
ผู้เล่น A ขายของที่ระลึก 2 เหรียญทองให้กับเจ้าของร้าน เจ้าของร้านมีทองคำ 0 ทองดังนั้นเขาจึง "ยืม" 2 ทองจากธนาคาร (NPC เท่านั้นที่สามารถทำได้)
- ผู้เล่น A ขายของที่มีค่า 3 ทองให้แก่ผู้เล่น B. ผู้เล่น B จ่ายจากกระเป๋าเงินของพวกเขา
ผู้เล่น A ซื้อดาบ 5 gold จาก Shopkeeper ผู้เล่น A จ่ายเงินจากกระเป๋าเงิน ตอนนี้เรามี:
| Max Gold | Bank | Shopkeeper | Player A | Player B | | 100 | 88 | 5 | 5 | 2 |
ทำซ้ำขั้นตอนการปล้นและขายข้างต้นสองสามครั้งและคุณอาจสิ้นสุดที่นี่:
| Max Gold | Bank | Shopkeeper | Player A | Player B | | 100 | 0 | 27 | 59 | 14 |
ผู้เล่น A พยายามขายสินค้า 30 ทองให้เจ้าของร้าน แต่ไม่สามารถทำได้เพราะเจ้าของร้านมีเพียง 27 ทองและไม่สามารถยืมจากธนาคาร (ตอนนี้ว่างเปล่า) ผู้เล่น A ต้องลดราคาขายแลกเปลี่ยนสินค้าหรือรอจนกว่า Shopkeeper รับเงินในรูปแบบอื่น
ระบบนี้ใช้งานได้ดี - ส่วนใหญ่ เมื่อเร็ว ๆ นี้หนึ่งในผู้ทดสอบของเราทำสิ่งที่ทำลายระบบของเราอย่างสมบูรณ์ พวกเขาขายแลกเปลี่ยนและต่อรองเป็นเจ้าของประมาณ 60% ของจำนวนเงินทั้งหมดที่มีอยู่ในเกมแล้วปฏิเสธที่จะใช้มัน (กลายเป็นสมมุติเทียบเท่าสครูจ McDuck ) เรื่องนี้ทำให้เกิดปัญหาใหญ่เพราะจู่ ๆ ก็ประมาณ 5500 ทองจาก 9000 รวมของเราคือใช้ไม่ได้
แน่นอนว่าในการเปิดตัวเกมผู้เล่นหนึ่งคนที่มีเงิน 60% ของเงินทั้งหมดไม่น่าจะเป็นไปได้ แต่ผู้เล่น 60 คนที่เป็นเจ้าของ 1% ของเงินทั้งหมดสามารถทำให้เกิดผลเช่นเดียวกัน เราได้พิจารณาลบตัวละครเก่าและคืนเงินให้กับ "ธนาคาร" แต่ตัดสินใจกับมันเพราะหากผู้เล่นกลับมาและตัวละครของเขาถูกลบไปฉันจะจินตนาการว่าพวกเขาจะเศร้ามาก (โดยเฉพาะถ้ามันรวยมาก!)
ดังนั้นคำถามที่เกิดขึ้นจริง; เราจะหลีกเลี่ยงเหตุการณ์นี้ได้อย่างไรและเราจะจำกัดความเสียหายที่เกิดขึ้นได้อย่างไร