Nimesh Chandramaniya
Nimesh Chandramaniya

Reputation: 628

Generate unique ID per user

I am developing a cross platform game for which I needs to generate unique identifier (User ID) for each user. I known some platform (Android or iOS) specific approaches to get device related identifiers but I am looking for a solution independent of the device identifiers.

User ID Requirements:

  1. Independent of the device's platform
  2. Offline implementation (no communication with any servers)
  3. Without sign-up process

I have implemented one approach to create User IDs where I store the system time when the game was launched for the first time on the device.

I have following questions:

  1. Are there any other approaches to generate User IDs (which will meet the above requirements)?
  2. What are the common approaches to create unique identifiers with taking any information from the user?
  3. Are there any third party plug-ins to implement User IDs?

I would appreciate any suggestions and thoughts on this topic.

EDIT:

There are lot of responses to use UUID/GUID. Generally, this approach looks fine but I am looking for a solution which can generate same User ID even if the user reinstall the game.

Upvotes: 1

Views: 12393

Answers (5)

Radon8472
Radon8472

Reputation: 4951

Assuming that your usernames are unique, you could simply takje the md5 hash of your usernames to get an unique ID (string). e.g. in php:

$userID = md5($username);

because m5 hash functions exist in nearly every programming language you should be able to use this ID on all possible plattforms.

And if you arer looking for a numeric ID, you even can calculate a qunique number from md5.

See represent md5-hash as an integer - stack question for more details

Upvotes: 0

Ulysses Caetano Braga
Ulysses Caetano Braga

Reputation: 138

Have you looked at UUID from Java?

https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html

EDIT: The following links might help using UUID for unique identifiers.

Best practices for permissions & Identifiers

Instance ID

Upvotes: 3

Mark Sheekey
Mark Sheekey

Reputation: 618

Just generate a long string of random characters. For example, generates a 10 long string of alphanumerics ...

private String GetId(){
    String[] chars = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"};
    StringBuilder s = new StringBuilder(10);

    for(int i = 0;i<10;i++){
        int pos = (int) (Math.random() * 62);
        String c = "";
        if (pos > chars.length-1){
            pos = pos - chars.length;
            c = chars[pos].toUpperCase();
        }else{
            c = chars[pos];
        }

        s.append(c);
    }

    return s.toString();
}

Upvotes: -1

Rushabh Shah
Rushabh Shah

Reputation: 670

As per my opinion your System current time is the best method for generating Unique User Id.

For Android : System.currentTimeMillis() returns you the unique 13 digit number which can be used as User Id.

But When you get current time in iOS then it is 10 digit number which generates. So you can multiply it by 1000 to make User Id platform Independent.

Happy Coding...

Upvotes: 0

Fritjof H&#246;st
Fritjof H&#246;st

Reputation: 46

When you say user id, are you talking about a public id such as an username, or a database id?

If you are talking about a database id, go for a GUID/UUID. T-sql for example have the NEWID() method that will return a GUID that doesn't exist in the database yet. I am sure that whichever database you go for you will find some way to use a GUID.

https://learn.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql

Upvotes: 1

Related Questions