사용자 친화적 인 고유 한 게임 ID를 만드는 방법-한 명의 사용자가 게임에 참여하기 위해 다른 사용자에게 해당 게임 ID를 쉽게 제공 할 수 있습니다.
C #으로 Silverlight에서 게임을 만들고 있습니다.
사용자 친화적 인 고유 한 게임 ID를 만드는 방법-한 명의 사용자가 게임에 참여하기 위해 다른 사용자에게 해당 게임 ID를 쉽게 제공 할 수 있습니다.
C #으로 Silverlight에서 게임을 만들고 있습니다.
답변:
권위있는 소스를 가지고 있다면 그 문제는 쉽습니다 (사용자가 게임에 연결하기 위해 ID를 넣는다면 일부 중앙 서버를 사용하여 리디렉션됩니다). http://www.safepasswd.com/ 과 같은 알고리즘을 사용하면 기본적으로 사전 단어 + 작은 숫자 인 UID를 만들 수 있습니다. 서버 수가 상대적으로 적 으면 현재 사용하지 않을 때까지 임의의 것을 선택하는 순진한 알고리즘을 수행 할 수도 있습니다.
클라이언트가 UID의 소스가되기를 원한다면, 사용자는 이러한 ID의 사용자 친화적 인 부분을 버려야합니다. 그러나 System.Guid.NewGuid (). ToString ()을 사용하기 때문에 코딩 측면에서 수행하기가 더 쉽습니다. 이는 모든 의도와 목적이 100 % 고유 한 시간임을 보장하기위한 것입니다. 출처
다시 GUID는 약간 과잉입니다. IP 또는 사용자 이름을 기억하는 것이 더 쉬울 것입니다. b
한 가지 방법은 사전을 사용하고 번호 체계에 따라 단어를 선택하는 것입니다. 아마도 고유 한 32 비트 정수를 사용하여 각 사용자를 식별하고 16 비트 단어 각각에 대해 사전 (단어 배열)을 색인화하십시오. 이런 식으로 실제 단어를 사용하여 ID를 나타낼 수 있으며 각 식별자는 고유합니다.
또 다른 방법은 Steam에서 사용하는 것과 유사한 것을 구현하는 것입니다. 사용자가 자신이 선택한 ID로 로그인 할 수있게하고 나중에 원하는 표시 ID를 지정할 수있게합니다. 예를 들어, 로그인 ID는 이메일이고 표시 이름은 이름 일 수 있습니다. 이러한 방식으로 사용자는 고유 식별자를 공유 할 수 있지만 선택한 이름으로 식별 할 수도 있습니다.
의견에 대한 FuzzYspo0N의 답변은 매우 좋습니다. 기본적으로이 문제는 게임 ID를 임의로 복잡하게 만들지 않으면 서 충돌을 피할 수있을 정도로 고유 한 게임 ID로 만듭니다. 표준 128 비트 GUID는 로컬 정보 (예 : MAC 및 기타 요소)를 사용하여 시스템 간 충돌 가능성을 매우 작게 한 다음 임의 및 시간 기반 요소를 추가하여 해당 시스템 내에서 충돌 가능성을 만듭니다. 매우 작은.
동일한 전략에 따라 자신의 ID를 생성 할 수 있습니다. 사용자에게는 기억하기 쉽지만 상대적으로 고유 한 것으로 시작하십시오 (사용자에게 좋은 시작을위한 글로벌 사용자 이름 또는 시스템 이름 / IP가있는 경우). 머신 이름과 같은 로컬 항목을 선택하면 잠재적 충돌 세트를 제한하여 쿼리가있을 경우 쿼리를 시작할 수 있습니다. 예를 들어, 해당 사용자 또는 해당 시스템으로 제한 한 후에는 해당 UID가 이미 사용 중인지 여부를 확인하기 위해 어디로 가야하는지 정확하게 알 수 있습니다.
예를 들어 사용자 이름이 시스템 전체에서 고유하다는 것을 알고 있다면 MrCranky : 1은 유효한 UID입니다. MrCranky : 1이 이미 다른 방법으로 사용 중인지 확인할 수 있다면 고유 한 번호를 찾을 때까지 계속 시도 할 수 있습니다.
다른 요소 (예 : 임의성 또는 시간)를 사용하면 사용하지 않은 ID를 처음 선택할 가능성을 높일 수 있습니다. 예를 들어 초 당 하나 이상의 세션을 만들 수 없다는 것을 알고 있다면 MrCranky : 122730 (현재 시간, 초)을 사용하면 사용자에게 비교적 기억에 남는 고유 ID를 얻을 수 있습니다.
비교적 독창적 인 정보가있는 한 (완벽하지 않아도 대부분 독창적 인) 정보를 시작 블록으로 사용할 수 있으며 이는 진정한 고유 부분 (어떤 종류의 정수 코드)을 의미합니다. 훨씬 짧아서 UID가 더 기억에 남습니다.
플레이어의 이메일 주소를 고유 식별자로 사용할 수 있습니다. 나는 그들이 그것을 기억할 수 있다고 확신한다 :)