ฉันควรกำหนด ID เฉพาะให้กับหน่วยเงินของเกมแต่ละหน่วยหรือไม่


22

ฉันกำลังสร้าง MMORPG อยู่

ในขณะนี้ฉันกำลังทำงานในส่วนของสกุลเงินของเกม แต่ฉันสับสนว่าฉันควรกำหนดหมายเลขซีเรียลที่ไม่ซ้ำสำหรับทุกหน่วยของสกุลเงินที่สร้างขึ้นหรือไม่

ฉันหวังว่าจะใช้ระบบนี้เพื่อติดตามการใช้สกุลเงินเสมือนจริงในทางที่ผิด แต่นี่เป็นวิธีปฏิบัติทั่วไปและหากไม่เป็นเช่นนี้จะเป็นความคิดที่ดีเกี่ยวกับการปฏิบัติงานและ / หรือมุมมองด้านประสิทธิภาพหรือไม่?


8
มันจะเกิดขึ้นในเกมของคุณที่ผู้เล่นคนหนึ่งถ่ายโอน zorkmids หนึ่งล้านไปยังอีกที่หนึ่งบ่อยแค่ไหน? เมื่อสิ่งนี้เกิดขึ้นคุณจะต้องอัปเดตหน่วยงานนับล้านในฐานข้อมูลของคุณหรือไม่
Philipp

1
นี่เป็นความคิดที่น่าสนใจ BitCoin ทำอะไรเช่นนี้สำหรับจำนวนเงินตามอำเภอใจ อาจมีทางออก / ความเป็นไปได้
ashes999

4
@ ashes999 คนที่แลกเปลี่ยน bitcoinบอกว่า BitCoin ยังติดตามยอดคงเหลือในบัญชีและไม่ใช่หน่วยของแต่ละสกุลเงิน
Philipp

1
ถ้าเงินเป็นสิ่งที่ใช้กันได้อย่างสมบูรณ์โซบอร์หนึ่งตัวก็เหมือนกัน
Joe

1
ไม่จริงโจ ทองคำแท่งทองคำบริสุทธิ์สามารถเข้ากันได้อย่างสมบูรณ์ แต่มักจะต่อเนื่องกันเพื่อป้องกันการยักยอก
คาร์ลสมิ ธ

คำตอบ:


26

มันไม่สมเหตุสมผลเลย

เมื่อฉันได้รับ 100 Zorkmids จากผู้เล่น A และ 100 Zorkmids จากผู้เล่น B ฉันมี 200 Zorkmids

เมื่อฉันจ่าย Zorkmids ให้แก่ผู้เล่น C 50 ราย C จะได้รับพวกเขาจาก Zorkmids ที่ฉันได้รับจาก A หรือที่ฉันได้รับจาก B หรือไม่ ฉันสามารถควบคุมสิ่งนี้ได้หรือไม่? มันสำคัญหรือไม่ Zorkmid คือ Zorkmid

แน่นอนว่ามันไม่สำคัญสำหรับธนาคารและนักบัญชีในโลกแห่งความจริงซึ่งทั้งหมดติดตามประวัติธุรกรรมของบัญชีไม่ใช่ประวัติการทำธุรกรรมของแต่ละหน่วยของสกุลเงิน มันยังคงเป็นไปได้ที่จะระบุวิธีการที่ผิด

ที่ถูกกล่าวว่าฉันสามารถจินตนาการเกมที่ถือว่าเหรียญแต่ละรายการเป็นรายการสินค้าคงคลังดังนั้นเมื่อคุณแลกเปลี่ยนกับใครบางคนคุณต้องให้แน่ใจว่าคุณมีการเปลี่ยนแปลงอะไหล่ สิ่งนี้จะช่วยให้คุณสมบัติที่น่าสนใจบางอย่างเช่นการทำเครื่องหมายเหรียญที่มีเสน่ห์หรือปลอมแปลง ในกรณีนั้นมันจะทำให้รู้สึกถึงการติดตามแต่ละเหรียญ แต่ฉันไม่สามารถนึกถึงเกมใด ๆ ที่ทำอย่างนั้นจริง ๆ


5
ฉันเพียงแค่จำเกมที่จริงร่องรอยเหรียญแต่ละบุคคล แต่มันไม่ได้เป็นเกมออนไลน์: แคระป้อม แต่ก็เหมือนกับหลาย ๆ สิ่งที่มันจำลองมันไม่ได้ใช้สิ่งนี้กับศักยภาพในการเล่นเกมอย่างเต็มรูปแบบ
Philipp

4
ฉันต้องทราบว่าธนบัตรจริง 10 ปอนด์ของฉันได้HC40415464เขียนไว้แล้วดังนั้นจึงมีข้อได้เปรียบบางอย่างในการมี ID ที่ไม่ซ้ำใครและรัฐบาลโลกที่แท้จริงดูแล
Richard Tingle

2
@RichardTingle บันทึกจริงมีหมายเลขซีเรียลเพื่อให้มีความเป็นไปได้อย่างน้อยในการติดตามธุรกรรมและทำให้การปลอมแปลงยากขึ้น (หากคุณพิมพ์หมายเลขเดียวกันในทุก ๆ บันทึกบางคนอาจสังเกตเห็น) แต่ในเกมการทำธุรกรรมสกุลเงินทั้งหมดจะถูกติดตามโดยหน่วยงานกลางและการปลอมแปลงเป็นไปไม่ได้
cjm

ฉันชอบความคิดของเกมที่อนุญาตให้ใช้เหรียญได้จริง จะมีทั้งตลาดสำหรับคาถาและสิ่งของที่สามารถตรวจจับพวกเขาได้และแน่นอนทั้งตลาดเคาน์เตอร์ของการปลอม "ไม่ตรวจจับได้"! นอกจากนี้ยังมีศักยภาพในการมีเว็บไซต์ "Where's Zork" ...
ทิมโฮลท์

3
คำตอบ 'ถูกต้อง' นี้ผิด ธนาคารในโลกแห่งความเป็นจริงไปสู่ค่าใช้จ่ายที่ยอดเยี่ยมในการติดตามเงินแต่ละหน่วย
คาร์ลสมิ ธ

6

ไม่คุณไม่ควรทำ

ในขณะที่คุณควรสร้างระบบที่ช่วยให้คุณสามารถติดตามธุรกรรมสกุลเงิน (โดยเฉพาะถ้าสกุลเงินที่เป็น Obfuscator เงินจริง) คุณไม่จำเป็นต้องติดตามทุกแต่ละหน่วยของสกุลเงินที่ สิ่งที่คุณสนใจติดตามคือการเคลื่อนไหวโดยรวมของกองทุนโดยเฉพาะอย่างยิ่งในปริมาณมาก (เนื่องจากอาจเป็นตัวบ่งชี้การทำธุรกรรมเงินจริงภายนอก / ที่ไม่ถูกต้อง) การติดตามแต่ละหน่วยของสกุลเงินไม่ได้ช่วยเรื่องนั้น (อันที่จริงแล้วมันอาจทำร้าย) และทำให้การเก็บรักษาข้อมูลที่เกี่ยวข้องซับซ้อนยิ่งขึ้นโดยกำหนดให้คุณต้องสร้าง ID จำนวนมากและเก็บข้อมูลจำนวนมากในฐานข้อมูลของคุณ

มีค่าสำหรับแนวคิดนี้สำหรับสกุลเงิน obfuscator ด้วยเงินจริง (นั่นคือสิ่งที่คุณซื้อด้วยเงินจริงที่ใช้เพื่อซื้อเนื้อหาในเกมเช่นอัญมณีใน Guild Wars 2) โดยเฉพาะอย่างยิ่งความปรารถนานี้อาจเกิดขึ้นเพื่อแยกแยะระหว่างหน่วยของสกุลเงินที่นำเข้าสู่ระบบเศรษฐกิจสำหรับ "ฟรี" เมื่อเทียบกับที่ได้รับการแนะนำผ่านการทำธุรกรรมจริงของโลก โดยทั่วไปคุณสามารถรับรู้รายได้ในท้ายที่สุดเท่านั้นดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องทำให้พวกเขาแตกต่าง

อย่างไรก็ตามคุณสามารถติดตามข้อมูลที่คุณต้องการได้อย่างง่ายดายโดยการจัดเก็บตัวเลขเป็นแบบรวม (หน่วยรวมใน, หน่วยทั้งหมด, สำหรับทั้ง 'ฟรี' และ 'จ่าย' อินสแตนซ์ของสกุลเงิน) สิ่งนี้สอดคล้องกับแนวคิดทั่วไปที่คุณต้องการติดตามสิ่งเหล่านี้โดยรวมโดยทั่วไปเป็นระดับธุรกรรมและไม่ใช่ระดับปัจจุบันเนื่องจากทั้งสองติดตามข้อมูลที่คุณต้องการจริงๆและทำให้ง่ายต่อการติดตามกลุ่มทุนขนาดใหญ่เมื่อกระจาย ตลอดทั้งระบบของคุณ


4

หมายเหตุผู้แต่ง: คำตอบนี้ทำขึ้นโดยมีข้อสันนิษฐานว่าคุณไม่ได้ทำการซื้อขายในขณะที่อยู่นอกเครือข่ายแล้วทำการซิงค์กลับไปที่เซิร์ฟเวอร์

คุณไม่จำเป็นต้องติดตามหมายเลขซีเรียลของแต่ละสกุลเงินโดยเฉพาะเพราะการทำธุรกรรมระหว่างผู้เล่นแต่ละคนจะต้องเกิดขึ้นผ่านเซิร์ฟเวอร์ของคุณ กล่าวอีกนัยหนึ่งเซิร์ฟเวอร์ของคุณเป็นแหล่งข้อมูลที่เชื่อถือได้ตามยอดคงเหลือในบัญชี เซิร์ฟเวอร์ของคุณจะไม่ถามผู้ใช้ว่าเขามีเงินเท่าใด ลูกค้าที่เชื่อมต่อกับเซิร์ฟเวอร์จะถามเซิร์ฟเวอร์ว่า "โปรแกรมเล่นของฉันมีเงินเป็นจำนวนเท่าใด" ผ่านการโทรผ่าน API นี่เป็นการสันนิษฐานว่าผู้เล่นไม่ได้ทำการซื้อขายในขณะที่อยู่นอกเครือข่ายแล้วทำการซิงก์กลับไปที่เซิร์ฟเวอร์ (แม้ว่ามันจะเป็นเรื่องแปลกใหม่ก็ตามฉันไม่แนะนำเว้นแต่ว่าคุณต้องการใช้เวลาเป็นจำนวนมากในทางทฤษฎี ]

ในตัวอย่างของสกุลเงินของรัฐบาลแหล่งข้อมูลที่เชื่อถือได้เพียงอย่างเดียวคือสกุลเงินเมื่อไม่ได้แนบกับบัญชี [ชายคนหนึ่งนำเงินออก $ 200 แต่ละบิลเรียกว่า "เซ็นชื่อ" พร้อมหมายเลขประจำสินค้าที่แท็กเพื่อให้คนอื่น ๆ พวกเขาผ่านความยุ่งยากในการทำเช่นนั้น) เพื่อรับมัน] เมื่อนำบิลเข้าธนาคารมีหลายวิธีในการพิจารณาว่ามีการทำเครื่องหมายหมายเลขประจำผลิตภัณฑ์ว่าไม่หมุนเวียนหรือไม่] แต่ธุรกรรมของคุณคล้ายกับผู้ใช้หลายคนในสาขาเดียวที่โอนเงินระหว่างบัญชีโดยไม่เห็นสกุลเงิน

เรื่องหลักในการอธิบายคือใครเป็นแหล่งข้อมูลที่เชื่อถือได้ของคุณ: ฉันจะพยายามอธิบาย: ผู้ใช้ต้องการนำเงินออกจาก ATM ผู้ใช้ไม่ได้ไปที่สาขาและประกาศว่า "ฉันมี $ 500 เชื่อใจฉันนี่คือ serials" เขาให้คีย์แทน [หมายเลขบัญชี / คีย์] และสาขา / เซิร์ฟเวอร์สามารถแจ้งผู้ใช้ของกองทุนของเขาและอนุญาตให้เขาถอนสกุลเงินในขณะที่ยอดคงเหลือของเขาลดลง ไม่ว่าผู้ใช้จะพยายามโน้มน้าวธนาคาร "จริง ๆ ฉันมีเงิน $ 500" เว้นแต่ว่าแหล่งข้อมูลที่เชื่อถือได้ (เซิร์ฟเวอร์) จะตรวจสอบยอดเงินคงเหลือจะไม่มีอะไรเกิดขึ้น

ไชโย


2

หากคุณพยายามตั้งโปรแกรมการจำลองเกมขึ้นอยู่กับการทำงานของโลกแห่งความเป็นจริงคุณจะพบกับปัญหาใหญ่บางอย่างเมื่อพูดถึงปริมาณข้อมูลที่คอมพิวเตอร์สามารถประมวลผลได้
ยกตัวอย่างเช่นหน้าต่อไปนี้ซึ่งเป็นความพยายามในการคำนวณจำนวนอะตอมที่มีในเม็ดทราย

http://www.thenakedscientists.com/forum/index.php?topic=6447.0

ฉันได้เห็นปัญหามากมายเช่นนี้จากการเรียนวิชาเคมีและฟิสิกส์และจำนวนที่น่าขันที่คนในหน้านี้เข้ามาอยู่ในสวนบอลล์ของสิ่งที่ฉันได้เห็นอาจารย์และตำราต่าง ๆ เกิดขึ้น -> 78 000 000 000 000 000 000

แม้ว่านี่จะเป็นวิธีปิดและคุณลบเลขศูนย์ทั้ง 6 ออกไปแล้วคุณจะยังคงมีตัวเลขที่ใหญ่เกินไปสำหรับคอมพิวเตอร์โดยเฉลี่ยที่จะจัดการในอัตราโต้ตอบ โดยเฉพาะอย่างยิ่งเมื่อมีธุรกรรม 1,000 รายการเกิดขึ้นในเวลาใดก็ตาม

เราจะคำนวณและติดตามโมเมนตัมตำแหน่งความเร็วการเร่งความเร็วแบบทันทีประจุสนาม ฯลฯ ของอะตอมทุกเม็ดในทรายทุกเม็ดบนชายหาดได้อย่างไรถ้าเม็ดหนึ่งเม็ดมีองค์ประกอบ 78,000 000 000 000 000 ชิ้น (หรือมากกว่านั้นถ้าคุณพิจารณาส่วนประกอบย่อยของอะตอม)

ฉันเคยอ่านเอกสารการเขียนโปรแกรมกราฟิก nVidia ที่ระบุบางสิ่งเช่นนี้
ทำในสิ่งที่ให้การประมาณค่าที่ดีที่สุดของภาพลักษณ์ที่ดีเพราะไม่มีใครสามารถบอกได้ว่าการจำลองนั้นไม่ถูกต้อง 100% หรือไม่ ประสิทธิภาพจะต้องถูกนำมาพิจารณา

เช่นเดียวกับการจำลองเกมทุกประเภทแม้ว่ามันจะไม่เกี่ยวข้องกับกราฟิก คุณควรทำอย่างน้อยที่สุดเพื่อให้ทุกอย่างใช้งานได้ หากคุณออกไปที่นี่คุณจะต้องฝังคอมพิวเตอร์ในความซับซ้อนที่ไม่สามารถจัดการได้
คุณจะต้องเขียนและลองและรักษารหัสของความซับซ้อนนี้

คุณสามารถให้หมายเลขซีเรียลที่ไม่ซ้ำกันให้กับทุกหน่วยของสกุลเงิน แต่คุณจะใช้ทรัพยากรทั้งหมดของคอมพิวเตอร์เพียงแค่รายละเอียดนี้

อาจเป็นวิธีที่ดีกว่าในการจัดการเรื่องนี้คือการระบุตัวตนที่ไม่ซ้ำกันเพียง 1 รายการสำหรับแต่ละธุรกรรม

ดังนั้นผู้เล่น # 1 จ่ายผู้เล่น # 2 $ 1000000
หากคุณให้ตัวบ่งชี้ที่ไม่ซ้ำใครแต่ละดอลลาร์คอมพิวเตอร์หลายคนจะเริ่มมีปัญหาใหญ่ไม่พูดถึงการรับส่งข้อมูลเครือข่ายทั้งหมดและความล่าช้านี้จะทำให้เกิด

หรือคุณสามารถสร้างค่าเดียวที่แสดงถึงธุรกรรมทั้งหมด

uint transferFunds_Player1ToPlayer2 = 1000000;

แม้แต่เครื่องคิดเลขพกพาอายุ 20 ปีก็สามารถจัดการสิ่งนี้ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.