Bagaimana cara membuat ID game unik yang ramah pengguna?


11

Bagaimana cara membuat ID game unik yang juga ramah pengguna - sehingga satu pengguna dapat dengan mudah memberikan ID game itu kepada orang lain untuk bergabung dengan game.

Saya membuat game saya di Silverlight dengan C #.


3
Ini kurang dari jawaban, jadi komentar buruk. Saya menggunakan sistem 2 kunci. Saya membuat kunci unik (UUID) yang saya simpan secara internal. Banyak seperti ini: 39d7e998-e654-4f8b-9e4b-0e61fe9eaf65. Setelah saya membuat ID unik, teman-teman pemain dapat menemukan profilnya dengan mencari nama panggilannya dan menggunakan 4 huruf pertama. Kemungkinan ada 2 'microdude: 39d7' cukup tipis. Jika saya melihat tabrakan, saya bisa membuatnya 5 atau 6. pertama. Membuat kunci uniknya 39d7e. Ini jelas bersifat publik (karakter) sehingga teman-temannya dapat menambahkannya secara langsung, dan membantu menentukan saat membuat game melalui IM atau obrolan.
menggarisbawahi setiap

Berapa lama kunci harus tetap valid? Ini akan memengaruhi seberapa uniknya mereka dan apakah Anda dapat menggunakan kembali kunci lama atau tidak.
Tim Holt

@Tim kunci bisa valid paling lama 2 jam.
Zain Shaikh

Jawaban:


6

Jika Anda memiliki sumber otoritatif, masalah itu mudah (yang saya asumsikan jika pengguna memasukkan ID untuk terhubung ke game maka itu akan dialihkan menggunakan beberapa server pusat). Cukup gunakan algoritma seperti http://www.safepasswd.com/ untuk membuat UID yang pada dasarnya adalah kata-kata kamus + angka kecil. Jika jumlah server relatif kecil Anda bahkan dapat melakukan algoritma naif yang hanya mengambil sesuatu secara acak sampai saat ini tidak digunakan.

Jika Anda ingin klien menjadi sumber UID, Anda harus membuang bagian ID yang ramah pengguna itu. Tetapi lebih mudah dilakukan di sisi pengkodean karena Anda hanya akan menggunakan System.Guid.NewGuid (). ToString (). Itu untuk semua maksud dan tujuan dijamin unik 100% dari waktu. sumber

Kemudian lagi, GUID sedikit berlebihan. Akan lebih mudah untuk mengingat IP atau nama pengguna b


bagus, saya pikir saya harus pergi dengan nama pengguna, setidaknya mereka tidak akan duplikat, dan mereka bahkan ramah pengguna. terima kasih :)
Zain Shaikh

3

Salah satu pendekatan adalah menggunakan kamus, dan memilih kata berdasarkan skema penomoran. Mungkin menggunakan integer 32-bit yang unik untuk mengidentifikasi setiap pengguna dan untuk masing-masing kata 16-bit, indeks kamus (array kata). Dengan cara ini, Anda dapat mewakili id ​​mereka menggunakan kata-kata aktual dan setiap pengenal akan unik.

Pendekatan lain adalah dengan mengimplementasikan sesuatu yang mirip dengan apa yang digunakan Steam: memungkinkan pengguna untuk login dengan id yang mereka pilih sendiri, dan kemudian membiarkan mereka menentukan id tampilan yang mereka inginkan. Misalnya, id login mereka bisa berupa email dan nama tampilan mereka bisa menjadi nama depan mereka. Dengan cara ini pengguna dapat membagikan pengidentifikasi unik mereka tetapi juga diidentifikasi dengan nama yang mereka pilih.


terima kasih atas saran Anda, sekarang saya akan menggunakan nama pengguna sebagai kunci unik seperti yang disarankan oleh @Tetrad.
Zain Shaikh

3

Jawaban FuzzYspo0N di komentar adalah jawaban yang sangat bagus. Pada dasarnya masalah ini bermuara pada membuat ID game yang cukup unik untuk menghindari tabrakan, tanpa membuatnya rumit. GUID 128-bit standar mendapatkan keunikannya dengan menggunakan informasi lokal (seperti MAC Anda dan faktor lain) untuk membuat kemungkinan tabrakan antar mesin menjadi sangat kecil, kemudian menambahkan faktor acak dan berbasis waktu untuk membuat kemungkinan tabrakan di dalam mesin itu sangat kecil.

Anda dapat mengikuti strategi yang sama untuk menghasilkan ID Anda sendiri. Mulailah dengan sesuatu yang berkesan bagi pengguna tetapi relatif unik (jika pengguna memiliki nama pengguna global yang merupakan awal yang baik, atau nama mesin / IP), dan tambahkan faktor-faktor lain hingga Anda menghasilkan sesuatu yang unik. Dengan memilih sesuatu yang lokal seperti nama mesin, Anda membatasi sekumpulan potensi tabrakan yang cukup sehingga Anda bisa mulai bertanya jika ada. Misalnya, setelah Anda membatasi hanya untuk pengguna itu, atau hanya mesin itu, Anda tahu persis di mana Anda harus pergi untuk memeriksa apakah UID sudah digunakan.

Misalnya, jika saya tahu nama pengguna saya adalah sistem unik lebar, maka MrCranky: 1 adalah UID yang valid. Jika saya dapat memeriksa apakah MrCranky: 1 sudah digunakan (dengan metode lain), maka saya bisa terus mencoba angka sampai saya menemukan yang unik.

Dengan menggunakan beberapa faktor lain (seperti keacakan atau waktu), saya dapat meningkatkan kemungkinan saya memilih ID yang tidak digunakan pertama kali. Misalnya, jika Anda tahu Anda tidak dapat membuat lebih dari satu sesi per detik, kemudian menggunakan MrCranky: 122730 (waktu saat ini, ke yang kedua) akan memberi saya ID unik yang relatif berkesan bagi pengguna.

Selama Anda memiliki beberapa informasi yang relatif unik (tidak harus sempurna, hanya sebagian besar unik), Anda dapat menggunakannya sebagai blok awal, dan itu berarti bagian yang benar-benar unik (kode integer semacam) dapat jauh lebih pendek, dan dengan demikian UID lebih mudah diingat.


terima kasih atas saran Anda, sekarang saya akan menggunakan nama pengguna sebagai kunci unik seperti yang disarankan oleh @Tetrad.
Zain Shaikh

0

Anda dapat menggunakan alamat email pemain sebagai pengidentifikasi unik. Saya yakin mereka bisa mengingatnya :)


terima kasih atas saran Anda, sekarang saya akan menggunakan nama pengguna sebagai kunci unik seperti yang disarankan oleh @Tetrad.
Zain Shaikh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.