ユーザーフレンドリーで一意のゲームIDを作成するにはどうすればよいですか?


11

ユーザーフレンドリでもある一意のゲームIDを作成するにはどうすればよいですか-1人のユーザーが簡単にそのゲームIDを他の人に渡してゲームに参加させることができます。

SilverlightでC#を使用してゲームを作成しています。


3
これは答えが少ないので、コメントは不適切です。2キーシステムを使用しました。内部に保存する一意のキー(UUID)を生成しました。これによく似ています:39d7e998-e654-4f8b-9e4b-0e61fe9eaf65。一意のIDを作成した後、プレーヤーの友達は、ニックネームを検索し、最初の4文字を使用してプロフィールを見つけることができます。衝突が発生した場合は、最初の5または6にできます。彼の一意のキーを39d7eにします。これは明らかにパブリック(キャラクター)なので、友達が直接彼を追加でき、IMやチャットでゲームを作成するときに指定するのに役立ちます。
underscorediscovery 2010

キーの有効期間はどのくらい必要ですか?これは、それらの一意性の必要性、および古いキーを再利用できるかどうかに影響します。
Tim Holt、

@Timキーは最大で2時間有効です。
ザインシェイク

回答:


6

信頼できるソースがある場合、その問題は簡単です(ユーザーがゲームに接続するためにIDを入力した場合、中央サーバーを使用してリダイレクトされると想定しています)。http://www.safepasswd.com/のようなアルゴリズムを使用して、基本的に辞書の単語+小さな数字であるUIDを作成します。サーバーの数が比較的少ない場合は、現在使用されていない状態になるまでランダムに選択する単純なアルゴリズムを実行することもできます。

クライアントをUIDのソースにしたい場合は、それらのIDのユーザーフレンドリーな部分を破棄する必要があります。ただし、System.Guid.NewGuid()。ToString()を使用するだけなので、コーディング側で行う方が簡単です。これは、100%一意であることが保証されているすべての意図と目的のためのものです。 ソース

GUIDは少しやりすぎです。IPまたはユーザー名を覚える方が簡単ですb


いいですね、少なくともユーザー名が重複することはなく、ユーザーフレンドリーでもあるユーザー名を使用するべきだと思います。感謝:)
Zain Shaikh

3

1つのアプローチは、辞書を使用し、番号付けスキームに基づいて単語を選択することです。おそらく、一意の32ビット整数を使用して各ユーザーを識別し、16ビットの各単語について、辞書(単語の配列)にインデックスを付けます。この方法では、実際の単語を使用してIDを表すことができ、各識別子は一意になります。

別のアプローチは、Steamが使用するものと同様のものを実装することです。ユーザーが自分で選択したIDでログインし、後で必要な表示IDを指定できるようにします。たとえば、ログインIDをメールに、表示名を名前にできます。このようにして、ユーザーは一意の識別子を共有できますが、選択した名前で識別することもできます。


提案ありがとうございます。@ Tetradが提案した一意のキーとしてユーザー名を使用します。
Zain Shaikh

3

コメントでのFuzzYspo0Nの回答は非常に良いものです。基本的に、この問題は、ゲームIDを任意に複雑にすることなく、衝突を回避するのに十分ユニークなゲームIDにすることを意味します。標準の128ビットGUIDは、ローカル情報(MACやその他の要素など)を使用して一意性を取得し、マシン間の衝突の可能性を非常に小さくしてから、ランダムな時間ベースの要素を追加して、そのマシン内での衝突の可能性を高めます非常に少ない。

同じ戦略に従って、独自のIDを生成できます。ユーザーにとって覚えやすいものから始めて、比較的ユニークなものから始めます(ユーザーが良い出発点であるグローバルユーザー名、またはマシン名/ IPを持っている場合)、ユニークなものを生成するまで他の要素を追加します。マシン名などのローカルなものを選択することにより、潜在的な衝突のセットを制限して、衝突がある場合にクエリを開始できるようにします。たとえば、そのユーザーまたはそのマシンのみに制限すると、そのUIDがすでに使用されているかどうかを確認するためにどこに移動する必要があるかが正確にわかります。

たとえば、ユーザー名がシステム全体で一意であることがわかっている場合、MrCranky:1は有効なUIDです。(他の方法で)MrCranky:1が既に使用されているかどうかを確認できれば、一意の番号が見つかるまで番号を試すことができます。

他の要素(ランダム性や時間など)を使用することで、未使用のIDを初めて選択する可能性を高めることができます。たとえば、1秒間に複数のセッションを適切に作成できないことがわかっている場合は、MrCranky:122730(現在の時刻から秒)を使用すると、ユーザーにとって比較的覚えやすい一意のIDを取得できます。

比較的一意の情報(完全である必要はなく、ほとんどが一意である必要があります)がある限り、それを開始ブロックとして使用できます。つまり、真に一意の部分(ある種の整数コード)を使用できます。はるかに短くなるため、UIDはより覚えやすくなります。


提案ありがとうございます。@ Tetradが提案した一意のキーとしてユーザー名を使用します。
Zain Shaikh

0

プレーヤーのメールアドレスを一意の識別子として使用できます。私は彼らがそれを覚えていると確信しています:)


提案ありがとうございます。@ Tetradが提案した一意のキーとしてユーザー名を使用します。
Zain Shaikh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.