Làm cách nào để tạo ID trò chơi độc đáo, thân thiện với người dùng?


11

Làm cách nào để tôi tạo ID trò chơi duy nhất thân thiện với người dùng - để một người dùng có thể dễ dàng cung cấp ID trò chơi đó cho người khác tham gia trò chơi.

Tôi đang tạo trò chơi của mình trong Silverlight với C #.


3
Đây là ít câu trả lời, vì vậy bình luận xấu. Tôi đã sử dụng một hệ thống 2 phím. Tôi đã tạo một khóa duy nhất (UUID) mà tôi lưu trữ nội bộ. Rất giống như thế này: 39d7e998-e654-4f8b-9e4b-0e61fe9eaf65. Sau khi tôi tạo một ID duy nhất, bạn bè của người chơi có thể tìm thấy hồ sơ của anh ấy bằng cách tìm kiếm biệt danh của anh ấy và sử dụng 4 chữ cái đầu tiên. Cơ hội có 2 'microdude: 39d7' là khá mong manh. Nếu tôi thấy va chạm, tôi có thể biến nó thành 5 hoặc 6. Đầu tiên Tạo khóa duy nhất 39d7e của mình. Đây rõ ràng là công khai (các nhân vật) để bạn bè của anh ta có thể thêm anh ta trực tiếp và giúp chỉ định khi tạo trò chơi qua IM hoặc trò chuyện.
dưới

Bao lâu các khóa cần để có hiệu lực? Điều này sẽ ảnh hưởng đến mức độ độc đáo của chúng và liệu bạn có thể sử dụng lại các khóa cũ hay không.
Tim Holt

@Tim các khóa có thể có hiệu lực trong tối đa 2 giờ.
Zain Shaikh

Câu trả lời:


6

Nếu bạn có một nguồn có thẩm quyền, vấn đề đó rất dễ dàng (mà tôi giả sử nếu người dùng đang đặt ID để kết nối với trò chơi thì điều đó sẽ được chuyển hướng bằng một số máy chủ trung tâm). Chỉ cần sử dụng một thuật toán như http://www.safepasswd.com/ để tạo UID về cơ bản là các từ trong từ điển + số nhỏ. Nếu số lượng máy chủ tương đối ít, bạn thậm chí có thể thực hiện một thuật toán ngây thơ chỉ chọn một cái gì đó ngẫu nhiên cho đến khi nó không được sử dụng.

Nếu bạn muốn khách hàng của mình là nguồn của UID, bạn sẽ phải vứt bỏ phần thân thiện với người dùng của những ID đó. Nhưng nó dễ thực hiện hơn về mặt mã hóa vì bạn chỉ đang sử dụng System.Guid.NewGuid (). ToString (). Đó là cho tất cả các ý định và mục đích được đảm bảo là duy nhất 100% thời gian. nguồn

Sau đó, một lần nữa, GUID là một chút quá mức cần thiết. Sẽ dễ nhớ IP hơn hoặc tên người dùng b


tốt, tôi nghĩ rằng tôi nên đi với tên người dùng, ít nhất họ sẽ không bị trùng lặp và thậm chí họ còn thân thiện với người dùng. cảm ơn :)
Zain Shaikh

3

Một cách tiếp cận sẽ là sử dụng từ điển và chọn từ dựa trên sơ đồ đánh số. Có lẽ sử dụng số nguyên 32 bit duy nhất để xác định từng người dùng và với mỗi từ 16 bit, lập chỉ mục một từ điển (mảng từ). Bằng cách này, bạn có thể thể hiện id của họ bằng các từ thực tế và mỗi mã định danh sẽ là duy nhất.

Một cách tiếp cận khác là triển khai một cái gì đó tương tự như những gì Steam sử dụng: cho phép người dùng đăng nhập bằng id mà họ tự chọn và sau đó cho phép họ chỉ định bất kỳ id hiển thị nào họ muốn. Ví dụ: id đăng nhập của họ có thể là email của họ và tên hiển thị của họ có thể là tên của họ. Bằng cách này, người dùng có thể chia sẻ định danh duy nhất của họ nhưng cũng được xác định bằng tên mà họ chọn.


cảm ơn lời đề nghị của bạn, bây giờ tôi sẽ sử dụng tên người dùng làm khóa duy nhất theo đề xuất của @Tetrad.
Zain Shaikh

3

Câu trả lời của FuzzYspo0N trong các bình luận là một câu trả lời rất hay. Về cơ bản, vấn đề này giúp làm cho ID trò chơi đủ độc đáo để tránh va chạm, mà không làm cho chúng phức tạp một cách tùy tiện. GUID 128 bit tiêu chuẩn có được tính duy nhất của chúng bằng cách sử dụng thông tin cục bộ (như MAC của bạn và các yếu tố khác) để làm cho khả năng xảy ra va chạm giữa các máy rất nhỏ, sau đó thêm yếu tố ngẫu nhiên và dựa trên thời gian để tạo khả năng va chạm trong máy đó rất nhỏ.

Bạn có thể theo cùng một chiến lược để tạo ID của riêng bạn. Bắt đầu với một cái gì đó đáng nhớ với người dùng nhưng tương đối độc đáo (nếu người dùng có tên người dùng toàn cầu đó là một khởi đầu tốt hoặc tên máy / IP) và thêm các yếu tố khác cho đến khi bạn tạo ra thứ gì đó độc đáo. Bằng cách chọn một cái gì đó cục bộ như tên máy, bạn hạn chế tập hợp các xung đột tiềm năng đủ để bạn có thể bắt đầu truy vấn nếu có. Ví dụ: một khi bạn đã giới hạn nó cho chỉ người dùng đó hoặc chỉ máy đó, bạn sẽ biết chính xác nơi bạn cần đến để kiểm tra xem UID đó đã được sử dụng hay chưa.

Ví dụ: nếu tôi biết tên người dùng của mình là một hệ thống duy nhất, thì MrCranky: 1 là một UID hợp lệ. Nếu tôi có thể kiểm tra xem MrCranky: 1 đã được sử dụng chưa (bằng một số phương pháp khác), thì tôi có thể tiếp tục thử số cho đến khi tìm thấy một số duy nhất.

Bằng cách sử dụng một số yếu tố khác (như ngẫu nhiên hoặc thời gian), tôi có thể tăng khả năng tôi chọn ID không sử dụng lần đầu tiên. Ví dụ: Nếu bạn biết rằng bạn không thể tạo nhiều hơn một phiên một giây, thì sử dụng MrCranky: 122730 (thời điểm hiện tại, đến lần thứ hai) sẽ giúp tôi có một ID duy nhất tương đối dễ nhớ với người dùng.

Miễn là bạn có một số thông tin tương đối độc đáo (không nhất thiết phải hoàn hảo, hầu như là duy nhất), bạn có thể sử dụng đó làm khối bắt đầu và điều đó có nghĩa là phần thực sự duy nhất (một mã số nguyên loại nào đó) có thể ngắn hơn nhiều, và do đó UID dễ nhớ hơn.


cảm ơn lời đề nghị của bạn, bây giờ tôi sẽ sử dụng tên người dùng làm khóa duy nhất theo đề xuất của @Tetrad.
Zain Shaikh

0

Bạn có thể sử dụng địa chỉ email của người chơi làm định danh duy nhất. Tôi chắc rằng họ có thể nhớ điều đó :)


cảm ơn lời đề nghị của bạn, bây giờ tôi sẽ sử dụng tên người dùng làm khóa duy nhất theo đề xuất của @Tetrad.
Zain Shaikh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.