Tôi có nên chỉ định một ID duy nhất cho từng đơn vị tiền tệ trò chơi không?


22

Tôi hiện đang làm một MMORPG.

Hiện tại, tôi đang làm việc với phần tiền tệ của trò chơi nhưng tôi bối rối không biết có nên gán một số sê-ri duy nhất cho mỗi đơn vị tiền tệ được tạo hay không.

Tôi hy vọng sẽ sử dụng hệ thống này để theo dõi bất kỳ việc lạm dụng tiền ảo nào nhưng đây có phải là một thông lệ và nếu không, đây có phải là một ý tưởng tốt về quan điểm hoạt động và / hoặc hiệu suất không?


8
Làm thế nào thường xảy ra trong trò chơi của bạn rằng một người chơi chuyển khoảng một triệu zorkmids cho người khác? Khi điều đó xảy ra, bạn sẽ phải cập nhật một triệu thực thể trong cơ sở dữ liệu của mình chứ?
Philipp

1
Đây thực sự là một ý tưởng thú vị. BitCoin làm một cái gì đó như thế này, với số lượng tiền tệ tùy ý. Có thể có một giải pháp / khả năng.
tro999

4
@ as999999 Những người tại bitcoin stackexchange nói rằng BitCoin cũng theo dõi số dư tài khoản chứ không phải đơn vị tiền tệ riêng lẻ.
Philipp

1
Nếu tiền hoàn toàn có thể bị nấm thì một zorkmid cũng giống như bất kỳ loại nào khác.
Joe

1
Không đúng Joe. Vàng thỏi nguyên chất hoàn toàn có thể bị nấm, nhưng thường được nối tiếp để ngăn chặn tham ô.
Carl Smith

Câu trả lời:


26

Nó không có ý nghĩa.

Khi tôi nhận được 100 Zorkmids từ Người chơi A và 100 Zorkmids từ Người chơi B, tôi có 200 Zorkmids.

Sau đó, khi tôi trả 50 Zorkmids cho Người chơi C, C sẽ nhận được chúng từ Zorkmids mà tôi có được mẫu A hoặc những người tôi nhận được từ B? Tôi có kiểm soát được việc này không? Nó thậm chí còn quan trọng? Một Zorkmid là một Zorkmid.

Nó chắc chắn không thành vấn đề đối với các ngân hàng và kế toán trong thế giới thực, tất cả đều theo dõi lịch sử giao dịch của các tài khoản, không phải lịch sử giao dịch của từng đơn vị tiền tệ. Vẫn có thể xác định lạm dụng theo cách đó.

Điều đó đang được nói, tôi có thể tưởng tượng một trò chơi coi các đồng tiền riêng lẻ là vật phẩm tồn kho, vì vậy khi bạn giao dịch với ai đó, bạn phải đảm bảo rằng bạn có thay đổi dự phòng. Điều này sẽ cho phép một số tính năng thú vị, như đánh dấu, mê hoặc tiền giả. Trong trường hợp đó, sẽ rất hợp lý khi theo dõi từng đồng tiền riêng lẻ. Nhưng tôi không thể nghĩ ra trò chơi nào thực sự làm được điều đó.


5
Tôi chỉ nhớ một trò chơi thực sự theo dõi từng đồng tiền riêng lẻ, nhưng đó không phải là một trò chơi trực tuyến: Pháo đài lùn . Nhưng giống như rất nhiều thứ mà nó mô phỏng, nó không thực sự sử dụng điều này cho tiềm năng chơi trò chơi đầy đủ của nó.
Philipp

4
Tôi phải lưu ý rằng tờ 10 bảng thật của tôi đã HC40415464được viết trên đó vì vậy rõ ràng có một số lợi thế để có một ID duy nhất và các chính phủ trong thế giới thực quan tâm
Richard Tingle

2
@RichardTingle, ghi chú thực có số sê-ri để cho phép ít nhất một số khả năng theo dõi giao dịch và làm cho việc giả mạo trở nên khó khăn hơn (nếu bạn in cùng một số trên mỗi ghi chú, ai đó có thể nhận thấy). Nhưng trong một trò chơi, tất cả các giao dịch tiền tệ đều được theo dõi bởi một cơ quan trung ương và việc làm giả là không thể.
cjm

Tôi thích ý tưởng về một trò chơi thực sự cho phép phản tác dụng tiền xu. Sẽ có cả một thị trường chỉ dành cho các phép thuật và vật phẩm có thể phát hiện ra chúng, và tất nhiên là toàn bộ thị trường đối với các giả mạo "không thể phát hiện"! Ngoài ra, có tiềm năng có một trang web "Zork ở đâu" ...
Tim Holt

3
Câu trả lời 'đúng' này là sai. Các ngân hàng trong thế giới thực chi phí lớn để theo dõi các đơn vị tiền riêng lẻ.
Carl Smith

6

Không, bạn không nên.

Trong khi bạn nên xây dựng hệ thống có thể cho phép bạn theo dõi các giao dịch tiền tệ (đặc biệt nếu đó là tiền tệ là một obfuscator bằng tiền thật), bạn không cần phải theo dõi tất cả các cá nhân đơn vị tiền tệ đó. Điều bạn quan tâm theo dõi là sự chuyển động tổng hợp của các quỹ, đặc biệt là với khối lượng lớn (vì đây có thể là một chỉ báo về các giao dịch tiền thật bên ngoài / không được cung cấp). Theo dõi các đơn vị tiền tệ riêng lẻ không giúp ích gì cho điều đó (thực tế nó có thể gây tổn hại) và chỉ làm phức tạp việc bảo trì dữ liệu có liên quan bằng cách yêu cầu bạn tạo nhiều ID và lưu trữ khối lượng thông tin tương đối lớn trong cơ sở dữ liệu của bạn.

Có một số giá trị cho ý tưởng này đối với các loại tiền tệ obfuscator bằng tiền thật (nghĩa là thứ bạn mua bằng tiền thật được sử dụng để mua nội dung trong trò chơi, chẳng hạn như đá quý trong Guild Wars 2). Cụ thể, mong muốn này có thể nảy sinh để phân tán giữa các đơn vị tiền tệ được đưa vào nền kinh tế "miễn phí" so với các đơn vị được giới thiệu thông qua giao dịch trong thế giới thực. Nói chung, cuối cùng bạn chỉ có thể nhận ra doanh thu, vì vậy điều quan trọng là phải giữ chúng khác biệt.

Tuy nhiên, bạn có thể theo dõi thông tin bạn cần chỉ bằng cách lưu trữ các số trong tổng hợp (tổng số đơn vị, tổng số đơn vị, cho cả hai trường hợp 'miễn phí' và 'trả phí' của tiền tệ). Điều này đi cùng với ý tưởng chung là bạn muốn theo dõi những thứ này một cách tổng hợp, nói chung là cấp độ giao dịch chứ không phải cấp độ hiện tại, vì nó vừa theo dõi dữ liệu bạn thực sự cần giúp dễ dàng theo dõi các khoản tiền lớn khi chúng phân tán trong toàn hệ thống của bạn.


4

Lưu ý của tác giả: Câu trả lời này được đưa ra với giả định rằng bạn không thực hiện giao dịch trong khi tắt mạng và sau đó đồng bộ hóa trở lại máy chủ.

Bạn không cần phải theo dõi số lượng tiền tệ riêng lẻ cụ thể vì mọi giao dịch giữa các người chơi riêng lẻ phải diễn ra thông qua máy chủ của bạn. Nói cách khác, máy chủ của bạn là nguồn có thẩm quyền về số dư tài khoản. Máy chủ của bạn sẽ không hỏi người dùng anh ta có bao nhiêu tiền. Các máy khách được gắn vào máy chủ hỏi máy chủ "Người chơi của tôi có bao nhiêu tiền" thông qua một cuộc gọi api. Điều này đặt ra một giả định rằng người chơi không giao dịch trong khi tắt mạng và sau đó đồng bộ hóa lại với máy chủ [Mặc dù đó là tiểu thuyết, tôi không khuyên bạn nên trừ khi bạn muốn dành nhiều thời gian trên lý thuyết ].

Trong ví dụ về tiền tệ của chính phủ, nguồn có thẩm quyền duy nhất là tiền tệ khi không được đính kèm vào tài khoản [Một người đàn ông lấy ra 200 đô la, mỗi hóa đơn được "ký" với một số sê-ri gắn thẻ để người khác có thể xác định xem nó có thật không (nếu họ đã trải qua những rắc rối khi làm như vậy) để có được nó]. Khi hóa đơn được đưa vào ngân hàng, có nhiều cách để xác định xem số sê-ri có được đánh dấu là không lưu hành hay không, v.v.]. Nhưng, các giao dịch của bạn tương tự như nhiều người dùng trong một chi nhánh chuyển tiền giữa các tài khoản mà không bao giờ thấy tiền tệ.

Câu chuyện chính để minh họa là ai là nguồn có thẩm quyền của bạn: Tôi sẽ cố gắng minh họa: Một người dùng muốn rút tiền từ máy rút tiền. Người dùng không đến chi nhánh và tuyên bố "Tôi có 500 đô la, hãy tin tôi, đây là những sê-ri". Thay vào đó, anh ta trao chìa khóa [số tài khoản / khóa] và chi nhánh / máy chủ có thể thông báo cho người dùng về tiền của mình và cho phép anh ta rút tiền trong khi giảm số dư của mình. Bất kể người dùng làm gì để cố gắng thuyết phục ngân hàng "Thực sự, tôi đã nhận được 500 đô la" trừ khi nguồn có thẩm quyền (máy chủ) xác minh số dư, sẽ không có gì xảy ra.

Chúc mừng.


2

Nếu bạn cố gắng lập trình một mô phỏng trò chơi dựa trên cách thế giới thực hoạt động thì bạn sẽ gặp phải một số vấn đề lớn khi nói đến việc máy tính có thể xử lý bao nhiêu thông tin.
Ví dụ như trang sau đây là một nỗ lực để tính toán có bao nhiêu nguyên tử trong một hạt cát.

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

Tôi đã thấy rất nhiều vấn đề như thế này từ việc nghiên cứu hóa học và vật lý và con số cao đến mức nực cười mà người trên trang này gặp phải là trong công viên bóng của những gì tôi đã thấy các giáo viên và sách giáo khoa khác nhau nghĩ ra. -> 78 000 000 000 000 000 000

Ngay cả khi đây là cách tắt và bạn loại bỏ 6 trong số các số 0 đó thì bạn vẫn sẽ có một số quá lớn để máy tính trung bình xử lý ở tốc độ tương tác. Đặc biệt là khi có 1000 trong số các giao dịch này diễn ra tại bất kỳ thời điểm nào.

Làm thế nào chúng ta có thể tính toán và theo dõi động lượng, vị trí, vận tốc, gia tốc tức thời, điện tích trường, v.v., của mỗi nguyên tử trong mỗi hạt cát trên bãi biển nếu chỉ một hạt có 78 000 000 000 000 000 000 thành phần riêng lẻ. (Hoặc thậm chí nhiều hơn nếu bạn xem xét các thành phần nguyên tử phụ.)

Tôi đã từng đọc một tài liệu lập trình đồ họa nVidia có nội dung như sau.
Làm những gì mang lại sự gần đúng tốt nhất về ngoại hình là tốt bởi vì không ai thực sự có thể biết nếu mô phỏng không chính xác 100%. Hiệu quả phải được xem xét.

Điều tương tự cũng áp dụng cho mọi loại mô phỏng trò chơi ngay cả khi nó không liên quan đến đồ họa. Bạn có lẽ chỉ nên làm tối thiểu những gì cần thiết để mọi thứ hoạt động. Nếu bạn đi hết ở đây thì bạn sẽ chôn máy tính phức tạp mà nó không thể xử lý được.
Bạn cũng sẽ phải viết và thử và duy trì mã của sự phức tạp này.

Bạn có thể cung cấp số sê-ri duy nhất cho mỗi đơn vị tiền tệ nhưng bạn sẽ sử dụng hết tất cả tài nguyên của máy tính chỉ trên một chi tiết này.

Có lẽ cách tốt hơn để xử lý việc này là chỉ cung cấp 1 nhận dạng duy nhất cho mỗi giao dịch.

Vì vậy, người chơi số 1 trả cho người chơi số 2 $ 1000000.
Nếu bạn cung cấp cho mỗi đô la một mã định danh duy nhất, nhiều máy tính của mọi người sẽ bắt đầu gặp vấn đề lớn, chưa kể tất cả lưu lượng truy cập mạng và độ trễ mà điều này sẽ gây ra.

Hoặc bạn chỉ có thể tạo một giá trị đại diện cho toàn bộ giao dịch.

uint transferFunds_Player1ToPlayer2 = 1000000;

Ngay cả một máy tính bỏ túi 20 tuổi cũng có thể xử lý một cái gì đó như thế này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.