Hi Dan! I tried implementing it to my game but I keep getting this error whenever I try to upload a score: User GUID is null or empty! Please authorize the user before uploading an entry.
Hi! Thanks for your tool :) I noticed that these times, I couldn't update the username on my little project using your leaderboard. I just noticed reading the v2.8 updates that 'UpdateEntryUsername' is now deprecated.
I was wondering what is the correct way to update a username after this new version. Should we simply use UploadNewEntry with the new username?
Hey, due to a new browser policy copying to clipboard became broken on some browsers and I am working on fixing it. The keys are alternatively printed in the developer console, so you can copy them from there.
Hello! The Leaderboard functionality in my game is functioning smoothly; it uploads and downloads values as expected. However, when attempting to manage it here, clicking on 'Add Existing Leaderboard' using my secret key results in the addition of an empty, random leaderboard instead of the intended one. Strangely, the game continues to update the correct leaderboard without issue.
Adding some important info, all leaderboard added share the same public and secret key, and when I enter any of the leaderboard there is a red message "not found"
Could you send me the public key or secret key of your leaderboard through Discord? I think I will be able to fully understand your problem with more explanation or a live demo. My username there is: @danqzq
I was able to get my data anyway from the waterfall on reset keys but ty very much, the error seems to come from an "Oudated" function "pointer_stringify" if your try to pull public or private key
On the "add existing leaderboard" i dont know what function is the problem
Hello! Thank you for your work on the leaderboard creator! I am working to implement it into my game. I'm unsure exactly what to change here to access my score variable. Can you advise?
// Make changes to this section according to how you're storing the player's score: // ------------------------------------------------------------ [SerializeField] private ExampleGame _exampleGame;
private int Score => _exampleGame.Score; // ------------------------------------------------------------
I'm also not seeing anything in the inspector to assign objects to (screenshot below). I'm sure these are easy fixes as I've still got lots to learn. Thanks for any assistance!
If you could fetch all the entries of your leaderboard, then you can write your own algorithm to sort those entries based on their usernames in alphabetical order.
i have a game where user have go through an auth and in return i get a unique id for that user, so that user can play the game from multiple device. What i want is to upload that id along with username and score. So that whenever i am uploading new entry, i check if the entry against that id exist, if yes then update it, if no then create new one
With the latest version, there is a way to manually insert unique IDs for players as a method of identification. Please read more here on how to integrate manual authorization of players:
Hey, how can I allow the table to take scores greater than an int32? I modified the functions to take longs instead, but I get an error thrown that the score cannot be larger than 2147...etc.
Is this a network limitation or is there something else I can change to allow this?
you get locked in when you're using the free version and try to black list someone, the only clickable button in that menu is the "Save & Close" button, and when You click it It gives you the warning and never closes.
Hi, My project uses Unity 2019.4.40f1. this means some of the code did not work, due to my C# version being version 7.3. So, I ended up rewriting the ConstantVariables class. Hopefully you are all cool with it, It would not have worked if I didn't. Here it is:
There are a couple other lines of code in one of the other scripts that uses the ConstantVariables, but other than that, the compatibility of this code for 2019.4 is actually really good!
Hi! I'm having hard time with already taken username while uploading scores. Please Is there an errorcallback to identify this case or any way to check if username is available? I tried with IsMine in order to know if my score is already on the leaderboard but doesn't work properly.
Unfortunately, you cannot delete all entries at once for classic leaderboards. This feature is only available for advanced leaderboards and it can only be done manually as of now.
Hello Dan. I'm using your Leaderboard Creator in my game, which after the game, stores score with their name in a leaderboard. A problem I'm facing though is that after they point their information in, send entry, then go back to the main menu and play a new game, and then try to submit a new score, it overrides the previous game. Is there any way to work around this? Thanks!
Hi Dan. I tried installing version 2.8. On the ranking I checked "Unique Username" and the game still replies "409 Username already exist". The same response happens when I try your Demo! If I uncheck "Unique Username", the game registers two identical names for me. It appears that this update did not resolve the issue of unique identifiers being lost. I tried using both "player prefs" and "persistent data path", the problem remains. Thank you so much for your possible response and for what you created.
The curious thing is that if I ask the server for my "guid", he answers correctly. Despite this, (randomly) either clone the nick name (or reply "409" if I set "Unique Username")
Is this issue happening specifically on your leaderboard(s)? I have tested the demo scene with the demo leaderboard and could not see this issue occur. This could be an issue that is tied to your leaderboard, so if you could reach out to me via email with its public key I could investigate more.
I am not sure if you saw my reply to your previous comment, but I would like you to reach out to me via Discord (@danqzq) or email at dan@danqzq.games so we could investigate this issue as it seems to be happening for a select number of users' leaderboards.
hi dan, thanks for making this! i'm using it and it works great! i'm just curious but if i use UploadEntry how does it work exactly? does it reset the score if it higher than the original or does it override it entirely? thanks in advance!
It will override the previous entry if the new one exceeds by its score. It works using a unique user identifier which is assigned to the player upon initialization.
Hey, I understand that it is completely my fault, I forgot to save the secret key of a leaderboard and now it is not showing up in the leaderboard creator. I have the public key, if you can help me get back it back it would be really appreciated
I know you have been suggesting this feature for a while, so I have added it into advanced leaderboards! Please reach out to me via Discord (@danqzq) or email at dan@danqzq.games.
Please debug your game and investigate for any errors in the console. That should give you a clue about where the error is coming from. Detailed web build errors usually show up both in the engine and in the developer console of the browser.
Hi Daniel, I submitted a question to you earlier today regarding the sorting. I feel that the sorting is working in descending order right now as long as I don't change the setting which has some intermittent issue where it doesn't actually refresh (reverse) the sorting. I have another question for you related to the GetPersonalEntry call. Right now, a player can submit their score after creating a username the first time. Subsequent personal best scores are also submitted. I call GetPersonalEntry to retrieve their Username and Score. This seems to work for awhile and at some point the Username is returned as Unknown although the user has been submitting scores. How is the user and device tracked and any idea why their info is no longer being pulled back? I checked in the leaderboard-creator management UI and their info is still listed there. It seems like it is being cached for some amount of time and then no longer correlated to their device and the public key. Any help very much appreciated.
Upon initialization of the game, the user automatically receives a unique identifier from the server, which is used for identification. This is then used to identify the player's entry among other entries in the leaderboard. I have just released a new update which should fix the issue of unique identifiers getting lost, however this behavior may reoccur if your leaderboard exceeds the limit of entries that it has (1000 for classic leaderboards and 100,000 for advanced leaderboards) as entries outside the limit get removed completely.
Hey Danial, appreciate the reply. Leaderboard is working great right now. To work around the GetPersonalEntry issue I was having, I just decided to switch to storing the player username and score locally (PlayerPrefs) instead of calling GetPersonalEntry. I am still using the Leaderboard but just focused on the UploadNewEntry and GetLeaderboard services. They are working great. I'll update to newer version soon. If I get lucky enough to exceed the free limit, I'll definitely sign up for the paid advanced leaderboard. Thanks, Jeb
Hi Daniel, I have been testing with the free version of leaderboard-creator for a couple months. Super easy to use and thank you for providing this service. I just released my app called Rocket Ripper on the Apple app store this morning and noticed that the sorting isn't working the way it did a few weeks ago when last tested. I can click to sort ascending or descending and it only sorts score by ascending now. It is causing my rankings to be reversed since I was letting leaderboard-creator handle it. Is this something that you could look at? Thanks in advance!
Update: More testing and I first thought the data I was populating in the extra field was causing the sorting to not work correctly. I removed the extra info and there still seems to be some issue. I can have the the sorting set to descending (box not checked on itch manage UI) and it might be sorting one way. If I click the edit button on a row (not change anything) and then the check box to save/confirm, the records refresh and the sorting may change.
Hey, the Leaderboard is working great. It's very beginner-friendly. I just want to ask: How can I handle errors? How can I do some operations when getting or sending something to the leaderboard fails? These are probably the basics, but it would help me a lot. Just please tell me the structure of the code. Thanks in advance!
Hi Broi, in case you're still looking for some help, just thought I'd share some code that might help you with error checking although it is very basic but might help you with how to use the callbacks that Daniel provided for return status and content. See below screenshot. Doesn't paste well with formatting. Happy to paste something you can copy-n-paste if this helps but might not be clean to look at.
I can't answer what all the error messages would be and it might depend on which methods you are using. I check if the server is reachable, if a post for a new score was successful (return code of 201 or 202 maybe - not sure which), and for an error message containing the word profane (return code 403 is what is returned) so I can tell the player they can't use a username with a bad word in it). But, in looking through Daniel's client side code, the StatusCode.cs file contains a bunch of return codes and you might be able to check for these. I would verify with Daniel though. You could also test some of them like a 401 maybe is a bad public key (maybe), 204 might be a submission with a required param like username missing. Here are the codes that I saw, but I have no idea which ones are returned for which methods/functions. Hope this helps some.
Okay, I have another question: there is a method called GetPersonalEntry. What will it return if the player hasn't uploaded any entry and how to check so?
Hi Broi, I was having an issue with GetPersonalEntry so I've stopped using it. Not sure what it would call if you haven't uploaded anything. Probably a null value or an error. I'd say just call it and see. You can always delete your test entry from the leaderboard and check. You might have to clear PlayerPrefs too but not sure on that. If you have an entry uploaded, for each Entry returned on looping through, you can call the function called IsMine() to see if it is your entry. I think a GUID is assigned on the server side and then Daniel persists this locally using PlayerPrefs, but I'm not 100% sure on that. You can see this in one of the scripts.
Good morning Dan.I have a problem, I set the leaderboard "Unique Username" when I update the ranking, keeping the same username from the same device, randomly an error code comes out: 409 (conflict) "user name already exist?".Sometimes it updates correctly, sometimes the error comes out.Could you help me?
Hello! At its current state, the "Unique Username" toggle seems to be causing an issue for many, so I can only recommend disabling it for the time being while I work on improving its stability.
Does this issue occur only within the web app, or in the engine/game?
I just wanted to mention that error 409 will show up in the web app if you try to submit an entry with the same name because it will try to create an entirely new instance of an entry with a new unique identifier. However, inside the engine/game it should allow you to change or submit an entry with the same username, without causing the 409 error, unless you have cleared the PlayerPrefs.
I have also just released a new update which allows you to store the player's unique identifier in the persistent data path, rather than PlayerPrefs.
Hello! Could you message me on Discord (@danqzq) so we can further investigate this issue? As far as I am aware it should be working, but it could be a problem caused by time zones.
Hello, my game has authentication, and I send the score using a unique identifier (the username provided during authentication). But it tells me that such a name is already used. But it's used by me! UpdateEntryUsername gives the same error (name is taken).
So instead of updating my entry, it tells me the name is taken. But this name was created by me just a minute ago, and now I can't update the record in the table.
Can I update an existing entry using the username?
Hello! I have answered this question before, but TLDR yes, though it is not straightforward yet. I do plan to integrate manual identification soon, so I am sorry for the inconvenience. This tool was originally meant for creating simple leaderboards and quickly implement them into Unity games, but as time goes by, and with more users it is scaling up.
I just wanted to let you know that I have released an update which allows you to assign a unique ID manually to the player. Please review the update notes below:
Hello! This could be caused due to a variety of reasons, you might be using a query that is filtering out the leaderboard entry. Could you perhaps demonstrate your code through Discord and I could take a look?
Is it possible instead of updating the leaderboard by a user's unique device ID to update an entry based on their username? I am setting up Steam integration and am having issues where Steam users on the same device are overriding each other's scores and Steam users with multiple devices are having their own scores listed more than once.
Hello! Theoretically, yes. A few days ago there was a bug where entries' unique identifiers would get erased, so that issue should no longer persist. For now, to tackle this issue you would have to modify the PlayerPrefs, where the ID is being saved. But I am thinking of adding the ability to add manual unique identification later.
Hi, may I ask, are there any easy ways to check if a username already exists without trying to upload a new entry with that name. I tried using the following script, but it always returns 1:
In this example, the "test" user is at the 2nd place, but even if I try it with any other placement, it always returns 1. I checked, and all the captions are correct.
You could loop through every entry and compare the usernames, but why not just show a message that a different username must be used when the user tries to submit an entry?
I want to use it for a random username generator. I might try the looping, but I am scared, that it will result in a lot of lag. But thanks for the reply anyway, I might try looking into it a bit more!
Hello Dan! First, i want to say Thank you for developing this Leaderboard.
I have a Question about how it will work, if you uninstall a game on android with your leaderboard integrated. If i uninstall my game and re-install it, i can´t use the same username as before, because the username is still in the list.
And how can i access a name in the leaderboard before i submit a new score. I want to check if the same username already exists. In Unity it gives me a console-error message, when the username already exists and the entry is not uploaded to the leaderboard. But what i want is, that a User has the chance again to entry a other Username, that doesn´t exist.
Thanks for help. If you want, we could write on Discord!?
Hello! Unfortunately, this is something I overlooked and did not take into consideration. For now, you just have the option to disable the "Unique Usernames" toggle for allowing people to have duplicate usernames. Having said that, I am working on a solution that could solve your problem.
← Return to Leaderboard Creator
Comments
Log in with itch.io to leave a comment.
Hi Dan! I tried implementing it to my game but I keep getting this error whenever I try to upload a score: User GUID is null or empty! Please authorize the user before uploading an entry.
I really have no Idea what could it be, thanks!
Hello T- cius!
Make sure your Authorization Save Mode isn't set to Unhandled in the settings window of the tool.
Thanks! I already had fixed it following you tutorial, but thanks again for the reply!
Hello dan! I'm having problems with UploadNewEntry() method as it only updates the username instead of creating a new entry.
Hello 5kr1mp!
Please refer to the FAQ which goes over why this is happening:
https://github.com/danqzq/unity-leaderboard-creator/blob/main/README.md#my-leade...
Hi! Thanks for your tool :)
I noticed that these times, I couldn't update the username on my little project using your leaderboard. I just noticed reading the v2.8 updates that 'UpdateEntryUsername' is now deprecated.
I was wondering what is the correct way to update a username after this new version. Should we simply use UploadNewEntry with the new username?
Thanks again for your tool :)
Hey Gitanerie!
No problem! Yes, just call UploadNewEntry with the new username. That will update the username for the entry and retain the high score.
Perfect! Thank you :)
Hi! I'm trying to use your tool, but when pressing on the secret key button it opens a pop-up with the code, but I cannot copy it from ther
same Here, the public key wasn't copied to my clipboard either but i could select it with my mouse o copy it
I can't even select it with the mouse, I don't know why. I had to do a screenshot and take the text from the picture with AI
Hey, due to a new browser policy copying to clipboard became broken on some browsers and I am working on fixing it. The keys are alternatively printed in the developer console, so you can copy them from there.
As a temporary workaround, I made the keys appear on top of the Unity view, so you will be able to copy the keys from there for now.
Hello! The Leaderboard functionality in my game is functioning smoothly; it uploads and downloads values as expected. However, when attempting to manage it here, clicking on 'Add Existing Leaderboard' using my secret key results in the addition of an empty, random leaderboard instead of the intended one. Strangely, the game continues to update the correct leaderboard without issue.
Am I doing something wrong?
Adding some important info, all leaderboard added share the same public and secret key, and when I enter any of the leaderboard there is a red message "not found"
Hey osbaldoj!
Could you send me the public key or secret key of your leaderboard through Discord? I think I will be able to fully understand your problem with more explanation or a live demo. My username there is: @danqzq
Hey im getting the Error "Allocate is not defined in my browser when i try to add a number in the input field of "Add Existing Leaderboard" "
Hey Morgee!
I will take a look and try to fix this soon, thanks for letting me know!
I was able to get my data anyway from the waterfall on reset keys but ty very much, the error seems to come from an "Oudated" function "pointer_stringify" if your try to pull public or private key
On the "add existing leaderboard" i dont know what function is the problem
This should be fixed now!
Hello! Thank you for your work on the leaderboard creator! I am working to implement it into my game. I'm unsure exactly what to change here to access my score variable. Can you advise?
// Make changes to this section according to how you're storing the player's score:
// ------------------------------------------------------------ [SerializeField] private ExampleGame _exampleGame;
private int Score => _exampleGame.Score;
// ------------------------------------------------------------
I'm also not seeing anything in the inspector to assign objects to (screenshot below). I'm sure these are easy fixes as I've still got lots to learn. Thanks for any assistance!
Hello invertedMirrors!
Where are you handling the player's score in your game?
Can i organise the leaderboard by name alphabetical order?
I am kind of trying to make it do something it probably wasn't designed to do but I have this requirement. Is this a possibility?
Hey joeyjojoe71!
If you could fetch all the entries of your leaderboard, then you can write your own algorithm to sort those entries based on their usernames in alphabetical order.
Leaderbord disappear sometime from my leaderboard list. is this normal?
Hello tabtaste!
This could be due to your browser not caching the leaderboard credentials. In any case, you should be saving your leaderboards' secret keys.
Ah okay thanks a lot!
i have a game where user have go through an auth and in return i get a unique id for that user, so that user can play the game from multiple device. What i want is to upload that id along with username and score. So that whenever i am uploading new entry, i check if the entry against that id exist, if yes then update it, if no then create new one
Hello SquadCell!
With the latest version, there is a way to manually insert unique IDs for players as a method of identification. Please read more here on how to integrate manual authorization of players:
https://github.com/danqzq/unity-leaderboard-creator/releases/tag/v2.8
Hey, how can I allow the table to take scores greater than an int32? I modified the functions to take longs instead, but I get an error thrown that the score cannot be larger than 2147...etc.
Is this a network limitation or is there something else I can change to allow this?
Hello Niblet!
There is unfortunately no straightforward approach to this, but you could make use of the Extra field to hold more data for each player.
this tool is amazing
bug report tho
you get locked in when you're using the free version and try to black list someone, the only clickable button in that menu is the "Save & Close" button, and when You click it It gives you the warning and never closes.
Thanks for the bug report, I will fix this soon!
Hi, My project uses Unity 2019.4.40f1. this means some of the code did not work, due to my C# version being version 7.3. So, I ended up rewriting the ConstantVariables class. Hopefully you are all cool with it, It would not have worked if I didn't. Here it is:
internal const string GUID_KEY = "LEADERBOARD_CREATOR___LOCAL_GUID";
private const string SERVER_URL = "https://lcv2-server.danqzq.games";
private static string URL_EXTENSION;
internal static string GetServerURL(Routes route = Routes.None, string extra = "")
{
switch (route)
{
case Routes.Authorize:
URL_EXTENSION = "/authorize";
break;
case Routes.Get:
URL_EXTENSION = "/get";
break;
case Routes.Upload:
URL_EXTENSION = "/entry/upload";
break;
case Routes.UpdateUsername:
URL_EXTENSION = "/entry/update-username";
break;
case Routes.DeleteEntry:
URL_EXTENSION = "/entry/delete";
break;
case Routes.GetPersonalEntry:
URL_EXTENSION = "/entry/get";
break;
case Routes.GetEntryCount:
URL_EXTENSION = "/entry/count";
break;
}
return SERVER_URL + URL_EXTENSION + extra;
}
Thank you for letting me know about this. I will revert the script to work with 2019.4 versions.
There are a couple other lines of code in one of the other scripts that uses the ConstantVariables, but other than that, the compatibility of this code for 2019.4 is actually really good!
Is it possible to use this to keep track of globally shared stat? Similar to the "Total Deaths Worldwide" counter in Dark Souls 2.
Hey ConaLukBro!
Currently, no. However, this is a cool idea and I will potentially work on integrating it in the future!
Hi! I'm having hard time with already taken username while uploading scores. Please Is there an errorcallback to identify this case or any way to check if username is available? I tried with IsMine in order to know if my score is already on the leaderboard but doesn't work properly.
Hello!
Alternatively, you can try receiving the error callback upon entry submission when calling the UploadNewEntry function.
internal server error is occurring
Do you have an idea of when things will get back to normal?
Should be back up now
Yeah it's working now, thanks!
Hi! is there a way to identify my score from all the entries loaded?
Hey Ljtobitz!
Yes. Each
Entry
has aIsMine()
member method with returns true if the entry belongs to the player.Thanks!
How can i delete all entries at once?
Hey ConflictusAr!
Unfortunately, you cannot delete all entries at once for classic leaderboards. This feature is only available for advanced leaderboards and it can only be done manually as of now.
Hi,
suddenly, the leaderboard started recording new lines for the same user. when I try deleting the lower record it deletes from the top.
I hope that this would be fixed
Hey GoodAUB!
This is getting worked on to be fixed.
Thanks for your feedback.
Can you please update on the progress
I think that the problem is not fixed yet
Hello Dan. I'm using your Leaderboard Creator in my game, which after the game, stores score with their name in a leaderboard. A problem I'm facing though is that after they point their information in, send entry, then go back to the main menu and play a new game, and then try to submit a new score, it overrides the previous game. Is there any way to work around this? Thanks!
Hey christopher11302!
The FAQ in the documentation contains an answer to your question. It also suggests a possible workaround for your case.
Hi Dan. I tried installing version 2.8. On the ranking I checked "Unique Username" and the game still replies "409 Username already exist". The same response happens when I try your Demo! If I uncheck "Unique Username", the game registers two identical names for me. It appears that this update did not resolve the issue of unique identifiers being lost. I tried using both "player prefs" and "persistent data path", the problem remains. Thank you so much for your possible response and for what you created.
The curious thing is that if I ask the server for my "guid", he answers correctly. Despite this, (randomly) either clone the nick name (or reply "409" if I set "Unique Username")
Hey morgan1635!
Is this issue happening specifically on your leaderboard(s)? I have tested the demo scene with the demo leaderboard and could not see this issue occur. This could be an issue that is tied to your leaderboard, so if you could reach out to me via email with its public key I could investigate more.
You mentioned that you fixed the leaderboard resetting after the update, but they still reset
Hey Eloren!
I am not sure if you saw my reply to your previous comment, but I would like you to reach out to me via Discord (@danqzq) or email at dan@danqzq.games so we could investigate this issue as it seems to be happening for a select number of users' leaderboards.
hi dan, thanks for making this! i'm using it and it works great! i'm just curious but if i use UploadEntry how does it work exactly? does it reset the score if it higher than the original or does it override it entirely? thanks in advance!
Hey DenyGamez!
It will override the previous entry if the new one exceeds by its score. It works using a unique user identifier which is assigned to the player upon initialization.
thanks!
Hey, I understand that it is completely my fault, I forgot to save the secret key of a leaderboard and now it is not showing up in the leaderboard creator.
I have the public key, if you can help me get back it back it would be really appreciated
Hey SeeOne!
Please reach out to me at dan@danqzq.games and send me the public key of your leaderboard!
Pls add ability to blacklist nicknames through this webapp
Hey Eloren!
I know you have been suggesting this feature for a while, so I have added it into advanced leaderboards! Please reach out to me via Discord (@danqzq) or email at dan@danqzq.games.
This error appears when my scenes changue to the scene with de leaderboard.¿How can i fix it?
Hey ZekySky!
Please debug your game and investigate for any errors in the console. That should give you a clue about where the error is coming from. Detailed web build errors usually show up both in the engine and in the developer console of the browser.
Hi Daniel, I submitted a question to you earlier today regarding the sorting. I feel that the sorting is working in descending order right now as long as I don't change the setting which has some intermittent issue where it doesn't actually refresh (reverse) the sorting. I have another question for you related to the GetPersonalEntry call. Right now, a player can submit their score after creating a username the first time. Subsequent personal best scores are also submitted. I call GetPersonalEntry to retrieve their Username and Score. This seems to work for awhile and at some point the Username is returned as Unknown although the user has been submitting scores. How is the user and device tracked and any idea why their info is no longer being pulled back? I checked in the leaderboard-creator management UI and their info is still listed there. It seems like it is being cached for some amount of time and then no longer correlated to their device and the public key. Any help very much appreciated.
Hey jpair!
Upon initialization of the game, the user automatically receives a unique identifier from the server, which is used for identification. This is then used to identify the player's entry among other entries in the leaderboard. I have just released a new update which should fix the issue of unique identifiers getting lost, however this behavior may reoccur if your leaderboard exceeds the limit of entries that it has (1000 for classic leaderboards and 100,000 for advanced leaderboards) as entries outside the limit get removed completely.
Hey Danial, appreciate the reply. Leaderboard is working great right now. To work around the GetPersonalEntry issue I was having, I just decided to switch to storing the player username and score locally (PlayerPrefs) instead of calling GetPersonalEntry. I am still using the Leaderboard but just focused on the UploadNewEntry and GetLeaderboard services. They are working great. I'll update to newer version soon. If I get lucky enough to exceed the free limit, I'll definitely sign up for the paid advanced leaderboard. Thanks, Jeb
Hi Daniel, I have been testing with the free version of leaderboard-creator for a couple months. Super easy to use and thank you for providing this service. I just released my app called Rocket Ripper on the Apple app store this morning and noticed that the sorting isn't working the way it did a few weeks ago when last tested. I can click to sort ascending or descending and it only sorts score by ascending now. It is causing my rankings to be reversed since I was letting leaderboard-creator handle it. Is this something that you could look at? Thanks in advance!
Update: More testing and I first thought the data I was populating in the extra field was causing the sorting to not work correctly. I removed the extra info and there still seems to be some issue. I can have the the sorting set to descending (box not checked on itch manage UI) and it might be sorting one way. If I click the edit button on a row (not change anything) and then the check box to save/confirm, the records refresh and the sorting may change.
Hey, the Leaderboard is working great. It's very beginner-friendly. I just want to ask: How can I handle errors? How can I do some operations when getting or sending something to the leaderboard fails? These are probably the basics, but it would help me a lot. Just please tell me the structure of the code. Thanks in advance!
Hi Broi, in case you're still looking for some help, just thought I'd share some code that might help you with error checking although it is very basic but might help you with how to use the callbacks that Daniel provided for return status and content. See below screenshot. Doesn't paste well with formatting. Happy to paste something you can copy-n-paste if this helps but might not be clean to look at.
Thank you very much for this. It will help me a lot. In case of getting the leaderboard scores, do any other errors than server not reachable exist?
I can't answer what all the error messages would be and it might depend on which methods you are using. I check if the server is reachable, if a post for a new score was successful (return code of 201 or 202 maybe - not sure which), and for an error message containing the word profane (return code 403 is what is returned) so I can tell the player they can't use a username with a bad word in it). But, in looking through Daniel's client side code, the StatusCode.cs file contains a bunch of return codes and you might be able to check for these. I would verify with Daniel though. You could also test some of them like a 401 maybe is a bad public key (maybe), 204 might be a submission with a required param like username missing. Here are the codes that I saw, but I have no idea which ones are returned for which methods/functions. Hope this helps some.
public enum StatusCode
{
FailedToConnect = 0,
Ok = 200,
Created = 201,
Accepted = 202,
NoContent = 204,
BadRequest = 400,
Unauthorized = 401,
Forbidden = 403,
NotFound = 404,
Conflict = 409,
TooManyRequests = 429,
InternalServerError = 500,
NotImplemented = 501,
ServiceUnavailable = 503
}
Okay, I have another question: there is a method called GetPersonalEntry. What will it return if the player hasn't uploaded any entry and how to check so?
Hi Broi, I was having an issue with GetPersonalEntry so I've stopped using it. Not sure what it would call if you haven't uploaded anything. Probably a null value or an error. I'd say just call it and see. You can always delete your test entry from the leaderboard and check. You might have to clear PlayerPrefs too but not sure on that. If you have an entry uploaded, for each Entry returned on looping through, you can call the function called IsMine() to see if it is your entry. I think a GUID is assigned on the server side and then Daniel persists this locally using PlayerPrefs, but I'm not 100% sure on that. You can see this in one of the scripts.
PlayerPrefs.SetString(GUID_KEY, guid);
Good morning Dan. I have a problem, I set the leaderboard "Unique Username" when I update the ranking, keeping the same username from the same device, randomly an error code comes out: 409 (conflict) "user name already exist?". Sometimes it updates correctly, sometimes the error comes out. Could you help me?
this is the call:
LeaderboardCreator.UploadNewEntry(_leaderboardPublicKey, Gamecontrol.namePlayer, Gamecontrol.RecordToOnLinevalue, Callback, ErrorCallback);
Thank you so much.
Hello! At its current state, the "Unique Username" toggle seems to be causing an issue for many, so I can only recommend disabling it for the time being while I work on improving its stability.
I am also running into the same trouble with unique usernames right now.
Would be really cool because else the leaderboard gets flooded really quick.
Wonder why it doesn't work. Always says 409: Username already exists.
I even tried deleting the entry before.
Oh well.
https://rubydev.itch.io/match-parade
Hey RubyDev!
Does this issue occur only within the web app, or in the engine/game?
I just wanted to mention that error 409 will show up in the web app if you try to submit an entry with the same name because it will try to create an entirely new instance of an entry with a new unique identifier. However, inside the engine/game it should allow you to change or submit an entry with the same username, without causing the 409 error, unless you have cleared the PlayerPrefs.
I have also just released a new update which allows you to store the player's unique identifier in the persistent data path, rather than PlayerPrefs.
It occurred for both web app and in engine.
I'm kinda done with the game because it was for a game jam but I'll surely try it again in the future! Thanks for answering and best success.
Thank You for the free stuff, just wanted to know why LeaderboardSearchQuery with the period set to Today is not working even in the demo scene.
Hello! Could you message me on Discord (@danqzq) so we can further investigate this issue? As far as I am aware it should be working, but it could be a problem caused by time zones.
Hello, my game has authentication, and I send the score using a unique identifier (the username provided during authentication). But it tells me that such a name is already used. But it's used by me! UpdateEntryUsername gives the same error (name is taken).
So instead of updating my entry, it tells me the name is taken. But this name was created by me just a minute ago, and now I can't update the record in the table.
Can I update an existing entry using the username?
Perhaps my question sounds like this: is it possible to assign a unique ID to an entry manually?
Hello! I have answered this question before, but TLDR yes, though it is not straightforward yet. I do plan to integrate manual identification soon, so I am sorry for the inconvenience. This tool was originally meant for creating simple leaderboards and quickly implement them into Unity games, but as time goes by, and with more users it is scaling up.
Hey deeepgames!
I just wanted to let you know that I have released an update which allows you to assign a unique ID manually to the player. Please review the update notes below:
https://github.com/danqzq/unity-leaderboard-creator/releases/tag/v2.8
Thanks a lot for great leaderboard!
But I get 0th (zero + th) for rank even though the log says success uploading score... And no score recorded on leaderboard for the 0ths.
Any clue about this bug?
Also, I got frozen for 100 entries, so I've purchased Advanced Package. Do you send it to my email?
Is the problem below means frozen leaderboard?
------
[LeaderboardCreator] Uploading entry data failed!
UnityEngine.Debug:LogError (object)
Dan.Main.LeaderboardCreator:LogError (string) (at Assets/LeaderboardCreator/Scripts/Main/LeaderboardCreator.cs:270)
Dan.Main.LeaderboardCreator/<>c:<UploadNewEntry>b__19_0 (bool) (at Assets/LeaderboardCreator/Scripts/Main/LeaderboardCreator.cs:160)
Dan.Main.LeaderboardCreatorBehaviour/<HandleRequest>d__8:MoveNext () (at Assets/LeaderboardCreator/Scripts/Main/LeaderboardCreatorBehaviour.cs:135)
UnityEngine.SetupCoroutine:InvokeMoveNext (System.Collections.IEnumerator,intptr) (at /Users/bokken/build/output/unity/unity/Runtime/Export/Scripting/Coroutines.cs:17)
Yes, thank you for the purchase, it was sent to your email.
Hello! This could be caused due to a variety of reasons, you might be using a query that is filtering out the leaderboard entry. Could you perhaps demonstrate your code through Discord and I could take a look?
I wrote 2 problems so I am not sure about which one did you reply to... but I solved both of them so here are changes...
1. Showing 0th
- Uploading a new score and get entries at the same time caused the problem.
- After changing to get entries after finishing uploading a new score fixed the problem
2. Uploading entry data failure
- Change to advanced leaderboard fixed it
Is it possible instead of updating the leaderboard by a user's unique device ID to update an entry based on their username? I am setting up Steam integration and am having issues where Steam users on the same device are overriding each other's scores and Steam users with multiple devices are having their own scores listed more than once.
Hello! Theoretically, yes. A few days ago there was a bug where entries' unique identifiers would get erased, so that issue should no longer persist. For now, to tackle this issue you would have to modify the PlayerPrefs, where the ID is being saved. But I am thinking of adding the ability to add manual unique identification later.
Hello, I want to buy the paid version and I have a few questions:
1. Will additional actions be needed with the project? for example, update the SDK or something else.
2. Will I need to create a new leaderboard or will I simply update the status of my leaderboard by key?
Hello!
1. No, the SDK stays the same.
2. It depends on your preference, I can migrate existing leaderboards to advanced leaderboards.
What happened to the leaderboard, why did some players send 5 identical highscores? This didn't happen before.
Hello!
I am not sure what you mean, could you send me the public key of your leaderboard? My email is: dan@danqzq.games
This could also be a client-side issue, so I advise you to check your scripts.
I had no problem, but suddenly some players sent multiple values even though I did not change anything
Hi, may I ask, are there any easy ways to check if a username already exists without trying to upload a new entry with that name. I tried using the following script, but it always returns 1:
Leaderboards.Highscore.GetEntries(LeaderboardSearchQuery.ByUsername("test"), (msg) => {
Debug.LogWarning(msg.Rank);
});
In this example, the "test" user is at the 2nd place, but even if I try it with any other placement, it always returns 1. I checked, and all the captions are correct.
Hello!
You could loop through every entry and compare the usernames, but why not just show a message that a different username must be used when the user tries to submit an entry?
I want to use it for a random username generator. I might try the looping, but I am scared, that it will result in a lot of lag. But thanks for the reply anyway, I might try looking into it a bit more!
Danial, thank you very much for creating this nice tool.
I am not sure if the documentation is lacking or if I need to improve my C# fluency.
Anyway, I managed to create Unity visual scripting (ex Bolt) nodes in the picture.
My problem is, once I add the Submit node the scene fails to load on Android.
I would appreciate your help.
Hello!
Sorry for the late reply, but I am not sure how to help you out with Bolt scripting, as I am not familiar with it.
Thank you for your feedback. I have solved the problem and I will share the script to create nodes in Unity Visual Scripting.
Hello, does anyone know if this package conflicts with the firebase analytics? my firebase SDK isn't initializing for some reason
Hello! The package should not conflict with any other plugins as it is wrapped in its own assembly definition.
Thanks Dan, it was a unity bug. I fixed it yesterday.
Hello Dan! First, i want to say Thank you for developing this Leaderboard.
I have a Question about how it will work, if you uninstall a game on android with your leaderboard integrated. If i uninstall my game and re-install it, i can´t use the same username as before, because the username is still in the list.
And how can i access a name in the leaderboard before i submit a new score. I want to check if the same username already exists. In Unity it gives me a console-error message, when the username already exists and the entry is not uploaded to the leaderboard. But what i want is, that a User has the chance again to entry a other Username, that doesn´t exist.
Thanks for help. If you want, we could write on Discord!?
Hello! Unfortunately, this is something I overlooked and did not take into consideration. For now, you just have the option to disable the "Unique Usernames" toggle for allowing people to have duplicate usernames. Having said that, I am working on a solution that could solve your problem.