Haruskah saya menetapkan ID unik untuk masing-masing unit mata uang game?

22

Saat ini saya sedang membuat MMORPG.

Saat ini, saya sedang mengerjakan bagian mata uang dari permainan tetapi saya bingung apakah saya harus menetapkan nomor seri unik untuk setiap unit mata uang yang dihasilkan.

Saya berharap untuk menggunakan sistem ini untuk melacak penyalahgunaan mata uang virtual tetapi apakah ini praktik yang umum dan jika tidak, apakah ini merupakan ide yang baik tentang sudut pandang operasional dan / atau kinerja?

dK3
sumber
8
Seberapa sering hal itu terjadi dalam gim Anda bahwa satu pemain mentransfer sekitar satu juta zorkmids ke yang lain? Ketika itu terjadi, apakah Anda harus memperbarui sejuta entitas di basis data Anda?
Philipp
1
Ini sebenarnya ide yang menarik. BitCoin melakukan sesuatu seperti ini, untuk jumlah mata uang yang sewenang-wenang. Mungkin ada solusi / kemungkinan.
ashes999
4
@ ashes999 Orang-orang di bitcoin stackexchange mengatakan bahwa BitCoin juga melacak saldo akun dan bukan unit mata uang individual.
Philipp
1
Jika uang benar-benar sepadan maka satu zorkmid sama seperti yang lainnya.
Joe
1
Joe tidak benar. Emas batangan murni sepenuhnya sepadan, tetapi sering diserialisasi untuk mencegah penggelapan.
Carl Smith

Jawaban:

26

Itu tidak masuk akal.

Ketika saya mendapatkan 100 Zorkmids dari Player A dan 100 Zorkmids dari Player B, saya memiliki 200 Zorkmids.

Ketika saya kemudian membayar 50 Zorkmids ke Player C, apakah C akan mendapatkannya dari Zorkmids yang saya dapatkan dari formulir A atau yang saya dapatkan dari B? Apakah saya memiliki kendali atas ini? Apakah itu penting? Zorkmid adalah Zorkmid.

Jelas tidak masalah bagi bank dan akuntan dunia nyata yang semuanya melacak riwayat transaksi akun, bukan riwayat transaksi satuan mata uang individu. Masih mungkin untuk mengidentifikasi penyalahgunaan seperti itu.

Yang sedang berkata, saya bisa membayangkan permainan yang memperlakukan koin individu sebagai barang inventaris, jadi ketika Anda berdagang dengan seseorang, Anda harus memastikan Anda memiliki receh. Ini akan memungkinkan beberapa fitur menarik, seperti menandai, memikat, atau memalsukan koin. Jika demikian, masuk akal untuk melacak setiap koin satu per satu. Tapi saya tidak bisa memikirkan permainan apa pun yang benar-benar melakukan itu.

Philipp
sumber
5
Saya baru ingat sebuah game yang benar-benar melacak setiap koin individu, tetapi ini bukan game online: Dwarf Fortress . Tapi seperti banyak hal yang disimulasikan, itu tidak benar-benar menggunakan ini untuk potensi gameplay penuh.
Philipp
4
Saya harus mencatat bahwa uang kertas £ 10 saya yang sebenarnya telah HC40415464ditulis di atasnya sehingga jelas ada beberapa keuntungan memiliki ID unik dan pemerintah dunia nyata peduli
Richard Tingle
2
@ RichardTingle, real note memiliki nomor seri untuk memungkinkan setidaknya beberapa kemungkinan melacak transaksi dan membuat pemalsuan lebih sulit (jika Anda mencetak nomor yang sama pada setiap note, seseorang mungkin memperhatikan). Namun dalam permainan semua transaksi mata uang dilacak oleh otoritas pusat dan pemalsuan tidak mungkin.
cjm
Saya suka ide permainan yang benar-benar memungkinkan untuk pemalsuan koin. Akan ada seluruh pasar hanya untuk mantra dan barang-barang yang bisa mendeteksi mereka, dan tentu saja seluruh pasar-counter pemalsuan "tidak terdeteksi"! Juga, ada potensi memiliki situs web "Di mana Zork" ...
Tim Holt
3
Jawaban 'benar' ini salah. Bank dunia nyata menghabiskan banyak uang untuk melacak unit uang individual.
Carl Smith
6

Tidak, seharusnya tidak.

Meskipun Anda harus membangun sistem yang dapat memungkinkan Anda untuk melacak transaksi mata uang (terutama jika mata uang yang nyata-uang obfuscator), Anda tidak perlu untuk melacak setiap individu unit mata uang itu. Hal yang Anda minati adalah pergerakan agregat dana, terutama dalam volume besar (karena ini bisa menjadi indikator potensi transaksi uang riil eksternal / tanpa persetujuan keuangan). Melacak satuan mata uang secara individual tidak membantu dengan hal itu (bahkan mungkin merugikan), dan hanya mempersulit pemeliharaan data yang relevan dengan mengharuskan Anda untuk menghasilkan banyak ID dan menyimpan volume informasi yang relatif besar dalam database Anda.

Ada beberapa nilai pada gagasan ini untuk mata uang obfuscator uang riil (yaitu, barang yang Anda beli dengan uang dunia nyata yang digunakan untuk membeli konten dalam game, seperti permata di Guild Wars 2). Secara khusus, keinginan ini mungkin muncul untuk disambiguasi antara unit mata uang yang dimasukkan ke dalam ekonomi untuk "gratis" versus yang diperkenalkan melalui transaksi dunia nyata yang sebenarnya. Secara umum, Anda hanya bisa mengenali pendapatan dari yang terakhir, jadi penting untuk membuatnya berbeda.

Namun, Anda dapat melacak informasi yang Anda butuhkan hanya dengan menyimpan angka dalam agregat (total unit masuk, total unit keluar, untuk instance mata uang 'gratis' dan 'dibayar'). Ini sejalan dengan gagasan umum bahwa Anda ingin melacak hal-hal ini secara agregat, umumnya tingkat transaksi dan bukan tingkat saat ini, karena keduanya melacak data yang benar-benar Anda butuhkan dan membuatnya lebih mudah untuk melacak sejumlah besar dana ketika mereka bubar. di seluruh sistem Anda.


sumber
4

Catatan penulis: Jawaban ini dibuat dengan asumsi bahwa Anda tidak melakukan perdagangan saat keluar dari jaringan dan kemudian menyinkronkan kembali ke server.

Anda tidak perlu melacak nomor seri mata uang secara khusus karena setiap transaksi antar pemain harus dilakukan melalui server Anda. Dengan kata lain, server Anda adalah sumber otorisasi pada saldo akun. Server Anda tidak akan menanyakan berapa banyak uang yang ia miliki kepada pengguna. Klien yang dilampirkan ke server bertanya kepada server "Berapa banyak uang yang dimiliki pemain saya" melalui panggilan api. Ini menempatkan asumsi bahwa pemain tidak melakukan perdagangan saat berada di luar jaringan dan kemudian menyinkronkan kembali ke server [Meskipun itu baru, saya tidak merekomendasikannya kecuali Anda ingin menghabiskan banyak waktu dalam teori ]

Dalam contoh mata uang pemerintah, satu-satunya sumber otoritatif adalah mata uang ketika tidak dilampirkan ke akun [Seorang pria mengeluarkan $ 200, setiap tagihan "ditandatangani" dengan nomor seri yang menandainya sehingga orang lain dapat menentukan apakah itu nyata (jika mereka melalui kerumitan melakukannya) untuk mengambilnya]. Ketika tagihan dibawa ke bank, ada cara untuk menentukan apakah nomor seri telah ditandai sebagai tidak beredar, dll]. Tetapi, transaksi Anda lebih mirip dengan banyak pengguna dalam satu cabang mentransfer dana antar rekening tanpa pernah melihat mata uang.

Kisah utama untuk diilustrasikan adalah siapa sumber otoritatif Anda: Saya akan mencoba mengilustrasikan: Seorang pengguna ingin mengambil uang dari atm. Pengguna tidak pergi ke cabang dan menyatakan "Saya punya $ 500, percayalah, ini adalah serial". Sebagai gantinya dia memberikan kunci [nomor rekening / kunci] dan cabang / server dapat memberi tahu pengguna dana dan memungkinkannya untuk mengambil mata uang sambil mengurangi saldo. Tidak peduli apa yang dilakukan pengguna untuk meyakinkan bank "Sungguh, saya mendapat $ 500" kecuali sumber otoritatif (server) memverifikasi saldo, tidak ada yang akan terjadi.

Tepuk tangan.

pnewnan
sumber
2

Jika Anda mencoba memprogram simulasi game berdasarkan cara kerja dunia nyata, maka Anda akan mengalami beberapa masalah besar ketika menyangkut seberapa banyak informasi yang dapat diproses oleh komputer.
Ambil contoh halaman berikut yang merupakan upaya untuk menghitung berapa banyak atom yang ada dalam sebutir pasir.

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

Saya telah melihat banyak masalah seperti ini dari mempelajari kimia dan fisika dan jumlah yang sangat tinggi dari orang yang ada di halaman ini ada di taman bola dari apa yang saya lihat berbagai guru dan buku teks muncul. -> 78 000 000 000 000 000 000

Bahkan jika ini jauh dan Anda menghapus 6 dari nol maka Anda masih akan memiliki angka yang terlalu besar untuk komputer rata-rata untuk menangani pada tingkat interaktif. Terutama ketika ada 1000 dari transaksi ini terjadi pada waktu tertentu.

Bagaimana mungkin kita menghitung dan melacak momentum, posisi, kecepatan, percepatan sesaat, muatan lapangan, dll, dari setiap atom di setiap butiran pasir di pantai jika hanya satu butir memiliki 78.000 000 000 000 000 000 masing-masing komponen. (Atau bahkan lebih jika Anda mempertimbangkan komponen sub-atomik.)

Saya pernah membaca dokumen pemrograman grafik nVidia yang menyatakan sesuatu seperti berikut ini.
Lakukan apa yang memberikan perkiraan terbaik untuk terlihat bagus karena tidak ada yang benar-benar dapat mengetahui apakah simulasi tidak 100% akurat. Efisiensi harus dipertimbangkan.

Hal yang sama berlaku untuk setiap jenis simulasi gim bahkan jika itu tidak ada hubungannya dengan grafik. Anda mungkin harus melakukan minimal apa yang diperlukan untuk membuat semuanya bekerja. Jika Anda keluar semua di sini maka Anda akan mengubur komputer dalam kompleksitas yang tidak dapat ditangani.
Anda juga harus menulis dan mencoba dan memelihara kode kompleksitas ini.

Anda bisa memberikan nomor seri unik untuk setiap unit mata uang tetapi Anda akan menggunakan semua sumber daya komputer hanya pada detail yang satu ini.

Mungkin cara yang lebih baik untuk menangani ini adalah dengan memberikan hanya 1 identifikasi unik untuk setiap transaksi.

Jadi pemain # 1 membayar pemain # 2 $ 1000000.
Jika Anda memberikan pengidentifikasi unik kepada setiap dolar, komputer banyak orang akan mulai memiliki masalah besar, belum lagi semua lalu lintas jaringan dan kelambatan yang akan ditimbulkannya.

Atau Anda bisa membuat satu nilai yang mewakili seluruh transaksi.

uint transferFunds_Player1ToPlayer2 = 1000000;

Bahkan kalkulator saku berumur 20 tahun dapat menangani hal seperti ini.

MarcClintDion
sumber