사용자 친화적이고 고유 한 게임 ID는 어떻게 만듭니 까?


11

사용자 친화적 인 고유 한 게임 ID를 만드는 방법-한 명의 사용자가 게임에 참여하기 위해 다른 사용자에게 해당 게임 ID를 쉽게 제공 할 수 있습니다.

C #으로 Silverlight에서 게임을 만들고 있습니다.


3
이것은 대답이 적기 때문에 나쁜 의견입니다. 나는 2 키 시스템을 사용했습니다. 내부에 저장하는 고유 키 (UUID)를 생성했습니다. 이것처럼 : 39d7e998-e654-4f8b-9e4b-0e61fe9eaf65. 고유 한 ID를 만든 후 플레이어의 친구는 자신의 닉네임을 검색하고 처음 4자를 사용하여 자신의 프로필을 찾을 수 있습니다. 충돌이 보이면 처음 5 또는 6으로 만들 수 있습니다. 고유 키 39d7e 만들기. 이것은 명백히 공개적 (캐릭터)이므로 친구가 직접 그를 추가 할 수 있으며 IM 또는 채팅을 통해 게임을 만들 때 지정할 수 있습니다.
밑줄 발견

키는 얼마 동안 유효해야합니까? 이는 필요한 고유 한 특성과 이전 키를 재사용 할 수 있는지 여부에 영향을줍니다.
Tim Holt

@ 키를 최대 2 시간 동안 사용할 수 있습니다.
Zain Shaikh

답변:


6

권위있는 소스를 가지고 있다면 그 문제는 쉽습니다 (사용자가 게임에 연결하기 위해 ID를 넣는다면 일부 중앙 서버를 사용하여 리디렉션됩니다). http://www.safepasswd.com/ 과 같은 알고리즘을 사용하면 기본적으로 사전 단어 + 작은 숫자 인 UID를 만들 수 있습니다. 서버 수가 상대적으로 적 으면 현재 사용하지 않을 때까지 임의의 것을 선택하는 순진한 알고리즘을 수행 할 수도 있습니다.

클라이언트가 UID의 소스가되기를 원한다면, 사용자는 이러한 ID의 사용자 친화적 인 부분을 버려야합니다. 그러나 System.Guid.NewGuid (). ToString ()을 사용하기 때문에 코딩 측면에서 수행하기가 더 쉽습니다. 이는 모든 의도와 목적이 100 % 고유 한 시간임을 보장하기위한 것입니다. 출처

다시 GUID는 약간 과잉입니다. IP 또는 사용자 이름을 기억하는 것이 더 쉬울 것입니다. b


좋습니다, 나는 사용자 이름으로 가야한다고 생각합니다. 적어도 중복되지 않으며 심지어 사용자 친화적입니다. 고마워요 :)
Zain Shaikh

3

한 가지 방법은 사전을 사용하고 번호 체계에 따라 단어를 선택하는 것입니다. 아마도 고유 한 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를 처음 선택할 가능성을 높일 수 있습니다. 예를 들어 초 당 하나 이상의 세션을 만들 수 없다는 것을 알고 있다면 MrCranky : 122730 (현재 시간, 초)을 사용하면 사용자에게 비교적 기억에 남는 고유 ID를 얻을 수 있습니다.

비교적 독창적 인 정보가있는 한 (완벽하지 않아도 대부분 독창적 인) 정보를 시작 블록으로 사용할 수 있으며 이는 진정한 고유 부분 (어떤 종류의 정수 코드)을 의미합니다. 훨씬 짧아서 UID가 더 기억에 남습니다.


제안 해 주셔서 감사합니다. 이제 @Tetrad에서 제안한대로 사용자 이름을 고유 키로 사용하겠습니다.
Zain Shaikh

0

플레이어의 이메일 주소를 고유 식별자로 사용할 수 있습니다. 나는 그들이 그것을 기억할 수 있다고 확신한다 :)


제안 해 주셔서 감사합니다. 이제 @Tetrad에서 제안한대로 사용자 이름을 고유 키로 사용하겠습니다.
Zain Shaikh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.