Comments

Log in with itch.io to leave a comment.

Viewing most recent comments 40 to 79 of 149 · Next page · Previous page · First page · Last page

Seems like it's not working for my Mac users

My bad it's just frozen,

What is the maximum number of requests ?

I can tip to increase it :)

Hello!

If there are more than 500 requests within a minute sent to the leaderboard, it will temporarily freeze. While frozen, leaderboard entries can be received, but no new entries would be able to be uploaded. It should automatically unfreeze after 24 hours had passed.

1. What is a request ? Is loading a leaderboard if X is the number of records ,1 request or X requests  ?

2. It hasn't unfroze it's been 48h ... I'm disappointed

Only 10 people have played my game and they each only load the leaderboard and post their score everytime they win, how can this be 500 request in one single minute ??

(2 edits)

A request is retrieving or uploading an entry to the leaderboard. I'm sorry, it's not easy to have the server manage all the leaderboards at once while working on new features. While attempting to fix the last crash that happened a few days ago, it seems the unfreezing of the leaderboards has stopped working, but I am working on fixing it. I am currently removing all leaderboards from their quarantine state right now, so let me know if your leaderboard works! Again, I apologize for the inconveniences caused. This is not a team working on this service, this is just me, providing a free utility for many. 🥲

(+1)

You are doing an incredible job Danial, sorry I was upset lately but I am very grateful you made this ❤️

The problem surely comes from elsewhere. A lot of us have had the same problem lately!

You were right.

(1 edit) (+1)

1.For the LeaderBoards: I got that froze due to many requests error log.

Does this error occur in the - 15$ version of the creator too? Are there any more advantages of that version except the ones that are listed onsite?

2. Also will it carry the same keys/ will the keys change for the premium version?

(+1)

1. The advanced leaderboards have a higher bandwidth, and they only have advantages that are specified on the website.

2. You can either request to update your existing leaderboard or get a new advanced one.

(+1)

Hi, Im making a Time Trial based Game and since the leaderboards rank is based of the highest score that somebody has, I wanted to ask how I could implement this system of making the lowest possible time the highest rank position?

(+1)

You need to check the Box at the leaderboard "Ascendig order"

@Noaxen - I tried that for a speedrun leaderboard as well, which shows the results in the correct order- HOWEVER, lower times does not update the beaten time on the leaderboards. A higher time does :D


@WerwiewasAnanas have you found a solution? If not, check out my comment (most recent comment on here) or contact me on discord: Kepsert if you need assistance :)

(+1)

Is it possible to uploud floats or strings to the leatherboard as a score?

Because I need the decimal places

(1 edit) (+1)

yes you can but im not quite sure if the ranking will be correct but try the Extra field you can use Strings there and convert them as your liking to either int or floats

to the ranking I think that I found a solution for that in the leaderboard you can activate an option called ascending order im not quite sure if this would fix it but you can try

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.Events;

using UnityEngine.UI;

using TMPro;

using Dan.Main;

using System.Runtime.CompilerServices;

using JetBrains.Annotations;

public class Leaderboard : MonoBehaviour

{

    [SerializeField] PlayerMovement playermovement_script;

    [SerializeField] private List<TextMeshProUGUI> names;

    [SerializeField] private List<TextMeshProUGUI> scores;

    private string[] badWords = new string[] { "Hurensohn", "Wixer"};

    private string publicLeaderboardKey = "89ba609eb052086681e456ec870985cb8f14a460da720298cded4a337e9ded2b";

    //Scoremanager

    [SerializeField] private TextMeshProUGUI inputScore;

    [SerializeField] private TMP_InputField inputName;

    public UnityEvent<string, int> submitScoreEvent;

    private void Start()

    {

        GetLeaderboard();

    }

    public void GetLeaderboard()

    {

        LeaderboardCreator.GetLeaderboard(publicLeaderboardKey, ((msg) =>

        {

            int loopLength = (msg.Length < names.Count) ? msg.Length : names.Count;

            for (int i = 0; i < loopLength; ++i)

            {

                names[i].text = msg[i].Username;

                scores[i].text = msg[i].Score.ToString();

            }

        }));

    }

    public void SetLeaderboardEntry(string username, int score)

    {

        LeaderboardCreator.UploadNewEntry(publicLeaderboardKey, username, score, ((msg) =>

        {

            if (System.Array.IndexOf(badWords, name) != -1) return;

            GetLeaderboard();

        }));

    }

    public void SubmitScore()

    {

        submitScoreEvent.Invoke(inputName.text, System.Convert.ToInt32(timer_script.lastScore));

    }

}

Thats my current script. I am very confused with the extra data. Can you help me with it?

I see your german? Wenn ja dann hier auf deutsch, was bei mir hier die lösung war das z.B. bei LeaderboardCreator.UploadNewEntry(... dort kannst du nach score eine klammer und dann damit du dieses Extra feld benutzen du kannst also: ..., score, extra, ((msg)... nutzen und damit das auch richtig funktioniert musst du bei der Method in der klammer noch "extra" als string deklarieren und je nachdem wo du es referenced auch noch einen string für hinzufügen, sry wenn du es nicht verstehen solltes

Danke, das habe ich soweit verstanden. Aber mir ging es vorallem um die Methode von SubmitScore().

    public void SubmitScore()

    {

        submitScoreEvent.Invoke(inputName.text, System.Convert.ToInt32(timer_script.lastScore));

    }


Die Methode sumbmtiScoreEvent.Invoke nimmt nur 2 Argumente (ein String für den Namen und ein Integer für den score)

How do you unfreeze a leaderboard?

Hello!

If your leaderboard is frozen, then it must be due to a high amount of requests sent on the leaderboard. Within 24 hours, your leaderboard should be automatically unfreeze and continue to work as per usual.

Ah nice, thanks!

I seem to have the same problem, after several days the leaderboard is still frozen. The last time this happened, I had to delete the players' entries manually and then they could send an entry again.

hello!, do you know how can I delete the default Scores ? ArtherDev1 ArthurDev2 etc in Unity?? Thanks!

(2 edits)

The Work is really amazing and have been a great asset to my Game!

I would like to tell you this -
When there's no network and I play the game - Inside Unity Editor
it gives me Debug.LogError and Pauses the Unity Editor-Playmode. Is there a fix for this inside the settings/the leader-board script in this case?

LeaderboardCreator] Failed To Connect

UnityEngine.Debug:LogError (object)

Dan.Main.LeaderboardCreator:LogError (string) (at Assets/LeaderboardCreator/Scripts/Main/LeaderboardCreator.cs:270)

This stops the unity editor - playmode

Also can you help with this - suppose the server is down and I want display it on screen, which method shall I call from your script that will help me return those value. ThankYou!

(+1)

Hello!

I'm pretty sure you have "Pause on Error" toggled on in the Console tab. Otherwise, if you still want to maintain that behaviour of the editor but mitigate failed connection, just replace the LogError function with Log in the LeaderboardCreator script at line 270.

(2 edits) (+2)

Please add the ability to override usernames or completely remove some highscores. Because if I rename someone and he opens the app again, his result will be updated. I need something like a blacklist for nicknames.

Hello! Thank you for the suggestion, I will consider adding this feature in the future updates.

(+1)

Woo Hooo!! A Surprise!! Thank You for this amazing tool!!


https://play.google.com/store/apps/details?id=com.twinflameinteractive.mergemese...

(2 edits) (+1)

Hey this is an really amazing tool! Can you answer these for me?
1. What information do you(you as in the creator of this tool) collect from the users and do you use it somehow?
2. Which cloud server are you using eg.Google Cloud
3. Do you sell any of the Leader board information to any third parties?
4. Also do you have a terms and conditions like some document , i cant seem to find one.

For an app on the PlayStore.
Thank You :)

(+1)

Hey, sure!

1. No information is collected other than the player inputs (usernames, scores, and etc.)
2. A cloud-hosted server written in Go running with MongoDB
3. No data is sold to any third parties
4. No, but the developer is responsible for how they use their leaderboards.

Thank you so much for the kind reply, I shall surprise you with something amazing real soon!!

(+1)

This is incredible! You are amazing!

(+1)

Yr a life saver

(+2)

Hello, i have send a mail, i  have some many questions... I want integrated this to my apps. Can i do ? 

Thanks

Hey, sorry your email was mistakenly marked as spam for me. Yes you can integrate it anywhere.

(+1)

Thank you very much for this system, it allows me to establish a classification table without so much paperwork.

But I still have a very big question and that is how long you will keep the servers active, if by buying the premium package, that money really pays for the server and obviously also if it gives you the profit to continue with this project.

Greetings from Chile!

(+1)

Hello! Glad that it has helped you out! As long as there is demand for it, I'll keep it active!

Excellent, then at the end of the month I will buy the premium package, since it brings many more improvements, again thank you very much for everything.

I have a question, yes, in my game the score is the seconds that the game lasts, therefore, I realized that if a player's game lasts 30 and that of another too, he replaces that person and the other disappears, right? Is there a way that instead of that the new player with those 30 seconds is below the previous one, by entry date or something like that?

(+1)

You'd have to handle it through the Extra field of each entry

(+1)

Hi, I`d like to know where guid is stored if I am using webgl build and what will happen if user for example will clear browser dat

Hello! The guid is stored using PlayerPrefs as of now. So if the user clears their browser data, that guid will be lost.

(1 edit)

So it means, that if I upload new webgl build to itch.io it won`t load GUID?

Yeah

(+1)

Awesome Leaderboard! Is there a method to delete a specific entry using a username or similar?

Hello there!

For security reasons, you can only delete the entries from the web app. Players may only be able to delete their own entries.

(+1)

If I have 5000 DAU, will the free leaderboard work without restrictions? What about bandwidth?

Just remember that free leaderboards only hold up to 1000 entries and if there is an overwhelming number of requests - your leaderboard will be quarantined for a certain period.

Hi Danial, thanks for your tool! Do you know if 100 players playing simultaneously will cause any issues? (The requests happen when the player dies, and if he reaches a new personal high score)

Hey hey, it should be fine :)

Cool ! Thanks !

(+1)

Can I synchronize player guid across devices? I have an online save system to sync progress. However, if a player switches devices, the highscore will be sent again, but with a different guid.

Hello!

Technically, yes, since the GUID is saved locally, you could use an external service to handle the synchronization.

(1 edit) (+1)

Great leaderboard, but is it possible to update the score by descending it.
For example, in my game the player must complete levels while a timer is running. In the end the scoreboard appear and it needs to update the score if it's less than the current score.

(+1)

Hello!

Did you toggle on the Ascending Order toggle?

nope, but i will try. Btw thanks for your reply you are doing great man!

so, i did what you said and they sort in ascending order, but the score doesn't update when it's less than the previous scor

nevermind i turned on ascending order in the game in your site and it worked!! Thank you mate!

(+1)

Hey Danial,
Thanks so much for releasing and hosting this tool!
My friend was showing off his hacking abilities, so my leaderboard now contains an entry with a score past the integer limit :o
This makes it so that the leaderboard doesn't display in my game at all.
If you wouldn't mind DMing me so we could remove the score listing, that'd be great! 
Thanks a bunch, and sorry to be a pain in the butt!

Hello!

I'll make sure this is taken into account and caught in the server too. Message me on Discord, my username is @danqzq

(+1)

I'm just wondering why when I enter a new entry it will replace the previous entry . so always there is only one entry even if I submit several values in editor 

my code 


using System.Collections.Generic;

using UnityEngine;

using TMPro;

using Dan.Main;

public class leaderboardd : MonoBehaviour

{

    // Start is called before the first frame update

    [SerializeField]

    private List<TextMeshProUGUI> Names;

    [SerializeField]

    private List<TextMeshProUGUI> Scores;

    private string publicleaderboaedkey = "64284967363c3ef000a80af46de3aba968e5ebfcdcc6406c57cdb0af2b4b5944";

    private void Start()

    {

        GetLeaderboard();

    }

    public void GetLeaderboard()

    {

        LeaderboardCreator.GetLeaderboard(publicleaderboaedkey, ((msg) => {

            int looplength = (msg.Length < Names.Count) ? msg.Length : Names.Count;

        for(int i =0; i< looplength; ++i)

        {

            Names[i].text = msg[i].Username;

            Scores[i].text = msg[i].Score.ToString();

            }

        }));

    }

    public void SetLeaderboard(string username,int score)

    {

        LeaderboardCreator.UploadNewEntry(publicleaderboaedkey, username,score,((msg) => {

            GetLeaderboard();

        }));

    }

}

Hello!

If you had not noticed, the FAQ contains an answer to your question:

There may only be one entry per one player. This is done to support features like name editing and deleting an entry in a safe way, such that other people don't mess around with other people's entries. If you do not want this, then disable "Unique Usernames" for your leaderboard and make use of the LeaderboardCreator.ResetPlayer() function during the callback from uploading an entry. Note that after this, a player's previous entry cannot be edited nor deleted by the player themself.

(1 edit) (+1)

I've created a hack: combining unique usernames with random hashes guarantees unique names, even if the base name is taken. For example, I send "Mike%123456" from one device and "Mike%234958" from another. In my game I can extract the nickname by splitting the string, and display "Mike" part only. 

(+1)

Is there a way that once the player has entered their initials the first time, that any subsequent higher score would update automatically? As it stands the player has to remember every time to enter their name if they want the score to register.

Hello!

The player does not have to remember their name, as a random GUID is assigned and used by every player for identification. With Unity, there are various ways you can use to save the player's name, e. g. by using PlayerPrefs or writing to a file in a persistent data storage. If you are interested in learning them, I have a tutorial on my YouTube channel which covers exactly that.

(1 edit)

Thanks Danial, I'll check it out, thanks for the awesome asset too by the way! :)


Can I ask one more question, in relation to Apple's Privacy Policy, what data do I need to declare is collected if any in relation to the leaderboard

?

No data is collected other than what the user inputs, which is the leaderboard entry. If needed, players can delete their own entries via a method called LeaderboardCreator.DeleteEntry, and I highly recommend that you implement it if you are publishing your game on mobile platforms.

(1 edit)

What's the leaderboard's domain? I'm uploading a game to a platform where I have to specify a domain to be allowed access to it. 

(3 edits)

Found this one, is that correct?
lcv2-server.danqzq.games

Hello! Yes, that is correct.

(+1)

Hi. I need to run 3 leaderboards at the same time for Diff levels speed run ranking. Al 3 setup and added. But it only seems to connect to the first one. The 2nd and 3rd is nulling out on me when posting scores. Don't think they connect. 

Hello there!

Well there must be something that you are doing incorrectly. I have set up multiple leaderboards in a game before, so feel free to reach out to me on Discord, I'll show you how I've done it.

(+1)
How do I check my ranking position?

Hello there! The demo scene demonstrates exactly how this is done, via the press of the "Get Personal Entry" button.

Thanks!

Would you help me? I don't understand what to do

Sure! What do you want help with?

All, step by step

Could you reach out to me on Discord? I'll help you through the whole process.

(1 edit) (+1)

[SOLVED]Hey hey, thank you for still replying to questions, I really appreciate it. Might you know why I don't see my leaderboard on this website but I do in my game? I wanna edit some values on this website but I don't see the leaderboard and when I press "Add existing leaderboard" and enter in my key from my script it does not work. thanks in advance

Hey there!

I replied back to you on Discord, but in case anyone else has the same concern: the credentials of newly created leaderboards are cached into your browser, but are not saved persistently. I've mentioned this before in my devlog, but when clearing your browser's cache or once a new update is launched, those credentials are cleared. That is why it's important to store your public keys and secret keys elsewhere.

Hey!, When i tried to create leaderboard, it said "internal server error".

Why is that??

Hello there!

Could you make sure that your internet connection is stable and try again?

Thanks, It's working now

(+1)

Hey!, I have troubles when building to webgl, it says there is a 'cors' problem, any clue how to solve?

(+1)

Hello there!

As you've stated in my Discord server, it may be due to your browser.

(+1)

Hello Danial,

I am testing Leaderboard Creator and so good so far !

There is a error callback parameter for Upload Delete methods... why not for GetLeaderboard ?  Ok, I could test for entries.Count == 0... but that would be true with a fresh new leaderboard...

Hello there!

Good question. I didn't really see a need to implement it, because prior to getting a leaderboard, the plugin gets initialized automatically. If it passes through the initialization with no errors, getting a leaderboard should work with a valid public key. But if you insist, I may as well add an error callback to the method in the next update.

No worries. I finally chose the long path : I made my own leaderboard on my own server so I can tweak the way I want ;-)

(2 edits) (+1)

I have this game I am making and I want an input name field panel to pop up on the GameOver screen only when the player achieves a higher score than the previous uploaded score. Of course if there is no personal entry uploaded previously I just want the score to be uploaded. I tried doing it this way to enable the input username panel:

public class UIGameOver : MonoBehaviour
{
    [SerializeField] TextMeshProUGUI scoreText;
    [SerializeField] GameObject inputPlayerPanel;
    ScoreKeeper scoreKeeper;
    private void Awake()
    {
        scoreKeeper = FindObjectOfType<ScoreKeeper>();
    }
    private void Start()
    {
        scoreText.text = "You Scored:\n" + scoreKeeper.GetScore();
        Leaderboards.Laser_Defender.GetPersonalEntry(HighScoreEntry);
    }
    void HighScoreEntry(Entry entry)
    {
        int score = scoreKeeper.GetScore();
        if (score > entry.Score)
        {
            inputPlayerPanel.SetActive(true);
        }
    }
}

And here is the submit score code:

public void SubmitScore()
{
    SetLeaderboardEntry(inputPlayerName.text, scoreKeeper.GetScore() );
    Debug.Log("Player name: " + inputPlayerName.text);
    Debug.Log("Score: " + scoreKeeper.GetScore());
}

After clearing PlayerPrefs, I tried this code got a Bad Web Request:Should I have used local variables in my code before the Personal Entry was defined or something else? 

Should I have used the Leaderboard Search query instead?

Hello David!

Are you clearing your PlayerPrefs in code before uploading an entry?

(1 edit)

No, I just cleared Player Prefs manually. The error then seemed not to appear again after playing the game a few times. Maybe it just was my internet connection? Or Maybe not.

Well then that must have been the case. The leaderboard creator probably did not get properly initialized, 'cause as far as I see from your screenshot, the userGuid parameter was empty.

(2 edits) (+1)

I am having trouble figuring out how UpdateEntryUserName is used. I don't know much about C# and it would be helpful if you could provide a example scenario and script where you might use UpdateEntryUserName and how it is different from UploadNewEntry. You don't have UpdateEntryUserName in your demo scene for some reason. 

Hello there!

As of now, the UploadNewEntry could also be used to alter the username of the player. But since you are curious, here is an example:

LeaderboardCreator.UpdateEntryUsername(YOUR_PUBLIC_KEY, "New username", callback: isSuccessful =>
{
    if (isSuccessful)
        Debug.Log("Username updated successfully");
    else
        Debug.LogError("Username update failed"); 
}, errorCallback: errorMessage =>
{
    Debug.LogError(errorMessage);
});
(+1)

Can you help me how to delete all users in the leaderboard, not in the dashboard?

Hey there!

Yes, just message me on Discord.

(+1)

Wish we could use it with godot.

(+2)

Godot support is in the works! I am working on support for other development platforms as well, as requested by some people. So stay tuned!

(+1)

<3 Thanks, Let us know if we can contribute to codebase. I moved my project to godot for reasons, I was experimenting with leaderboards, and this project is awesome.

I like how easy this is to use, however I need some help. I am working on a pinball game and getting ready to launch it. I love the idea of using your leader-board. My issue is that when the game is running the player has the option of changing who is playing. When the leader-board is sent an updated score and name the name previously on the leader-board is changed to the new name entered. I assume that there is something set up when the game starts that it only effects updates in that session. Is there a work around?

    public void SetLeaderboardEntry(string userName, int score)    {       

        LeaderboardCreator.UploadNewEntry(leaderBoardKey,userName, score,((msg) =>
        {            GetLeaderboard();

        }));

    }

(+1)

Hello there!

Luckily the FAQ contains an answer to your question:

There may only be one entry per one player. This is done to support features like name editing and deleting an entry in a safe way, such that other people don't mess around with other people's entries. If you do not want this, then disable "Unique Usernames" for your leaderboard and make use of the LeaderboardCreator.ResetPlayer() function during the callback from uploading an entry. Note that after this, a player's previous entry cannot be edited nor deleted by the player themself.

Sorry, I missed that. Works like a charm! One other question, when I decide to upgrade to the Advanced Leaderboard will it keep the same public key and just increase the capacity or will I have to create a new Leaderboard and key?

Usually I give out a new leaderboard with advanced privileges. But I can upgrade existing leaderboards as well, so it is up to you.

(1 edit) (+1)

Hello Dan, the Unique Usernames is a great addition to the leaderboard. 

I noticed now that when you have Unique names enabled and I try to call GetLeaderbord with SearchQuery-> Username("Test"), if there is another similar username, lets say ("MyTest" or "Te" or "est") it will return them too. 

Would it be possible to make GetLeaderboard(SearchQuery) return the exact UserName (If Unique Username is enabled) instead of all the ones that contain it?


EDIT: This is just a feedback that could be useful for future versions. Not an issue with the leaderboard or hotfix. On my side I could get my intended behaviour with one line of code, but would be nice to get just the unique entry in the future

Hello Carlos! I may add this in the future, but I don't think it is a big concern at the moment 😅

(+1)

Hello Dan, Im so happy with this leaderboard youve created. Its so simple to integrate and works perfectly. I just noticed something today: 

When using the UpdateEntryUsername() method, the profanity filter does not catch bad words. They are only catched when creating a new entry. Is this intended behaviour? 

Hello there!

This was not intended and I am sorry for that. On a good note, this was just fixed. Thanks for your feedback!

thank you very much! Working now.

On another note, I have a question:

Currently I have a game that asks the player to input a name for it to be used to update the scores. Im trying to remove this and link the name to the Apple game center nickname. Is there a way to link a GUID to an Apple nickname/gamecenter account so when the user re-installs the game gets the same GUID to update their own entry? (without having to use another DB to save nickname/GUID)

Saving to JSON persistent store doesn't work as Apple removes all files when uninstalling a game. Im also looking for players to connect with the same account from different devices.

Unfortunately, I am not sure if there is a straightforward approach to linking a player's GUID to Apple's services. You would have to handle this through an external server with a database.

(+1)

Dan my man! Thank you Kindly!

(+1)

Hi Dan! Fantastic tool - thanks so much for making it! =)

Quick question: How would I go about obtaining the rank int of just the newly uploaded entry? I've been racking my brain trying to figure it out and downloaded the demo, but haven't been able to come up with a solution.

(+1)

Think I finally got it actually! Posting below in case anyone else wants to know! (Or in case I goofed and someone wants to correct me lol)

public void RequestRank(string userName)

{

    var query = LeaderboardSearchQuery.ByUsername(userName);

    LeaderboardCreator.GetLeaderboard(publicLeaderboardKey, false, query, (rankData) =>

    {

        rank = rankData.Rank;

    });

}

(+1)

Hello! I used your tool in my game, works like a charm!

Viewing most recent comments 40 to 79 of 149 · Next page · Previous page · First page · Last page