• 0 Votes
    15 Posts
    671 Views

    Hi @noah ,

    This support has already been added to the Builder API. The new options can be specified when importing app configuration data OR when deploying an app.

    When importing app configuration data, there is a new optional 'preserveDivisionSetConfigsOverride' parameter that can be specified. If not specified, it will default to whatever the value is for 'preserveLeaderboardTournamentConfigs'.

    When deploying from one app to another, there is a new optional 'divisionSetConfigOverrides' parameter that can be specified in the 'options.meta.excludes' section. If not specified, it will default to whatever the value is for 'leaderboardsTournaments'.

    I will endeavour to get our Builder API docs updated with these new parameters. Let us know if you encounter any issues using them.

    Thanks!
    Greg

  • 0 Votes
    6 Posts
    223 Views

    Q1: The removed player is completely excluded from reward calculation, so if the deletion happens before the job runs, that player is never iterated over and receives no rank or rewards.
    Q2: Yes, the modified score will be used. The job always reads live state. Note that whether the score actually gets modified depends on the leaderboard type (e.g., for the LOW_VALUE type, only updates if the new score is less than the existing)
    Q3: No backfilling, the next joiner goes to the latest instance, not the freed spot in ^2. No loop over earlier instances (^1, ^2) ever happens. The next joiner goes to ^3 (or ^4 if ^3 is full). The freed spot in ^2 stays empty permanently.

  • NewUser detection issue

    Solved General
    2
    0 Votes
    2 Posts
    95 Views

    The aggregation that counts new users is not real time, it runs at hourly granularity, so there can be a delay before the stats reflect the actual number of users. At the time of checking again, the numbers had updated as follows
    image.png

  • 0 Votes
    5 Posts
    201 Views

    The structure is such that the certificate and template are distributed simultaneously.
    What I need is to distribute only the template, excluding the certificate.

  • 0 Votes
    5 Posts
    280 Views

    @moondory77 - why would you need/want to update a tournament in progress?

    We consider the tournament to be a contract between the player and the game dev. You enter this tournament. You have <X> hours to compete. And you can win <Y> in prizes.

    Changing the rules half-way through the tournament seems unfair? You are changing the duration? The prizes? These are both things that the player did not agree to.

    Anyway - that was the assumption of the system - and it's why once a tournament is started any changes you make to the tournament get queued up for the NEXT tournament cycle, not the current one.

    That said - divisions are even more complicated - as even if we wanted to there would be potentially thousands of records to update to make the change.

    I need to better understand your use case to consider this request.

    Paul.

  • 0 Votes
    6 Posts
    592 Views

    Yes, the link provided in that article is automatically updated. For your reference, here is the actual embedded link behind it:
    https://portalx.braincloudservers.com/dts/cloudcode_dts_files.zip

  • Unknown Country, Language

    Solved General
    2
    0 Votes
    2 Posts
    138 Views

    Have you checked the logs to see what those users are sending in for the country code during authentication? And can you see any commonality amongst those users?

    From your stats it looks like we are correctly detecting US, Korea and Argentina... What code are we reading in wrong?

    If you send us your appId (via the chat widget) we can take a better look at your users.

  • live conversion inquiry

    Solved General
    2
    0 Votes
    2 Posts
    236 Views

    Hi Noah,

    I don't quite understand your question.

    Development Plus provides access to some features (hosting, deep data, etc.) that we can't otherwise provide access to in a free development plan...

    I suppose it IS accessed via the [Go Live!] button - which can be a bit confusing - since your app isn't really "live" under Dev+. That's a UI inconsistency that we haven't addressed yet.

    The full details of the various plans can be found here: https://getbraincloud.com/pricing/

    I hope that helps!

    Paul.

  • 0 Votes
    4 Posts
    549 Views

    Ok, I found it. It wasn't a global setting, it was a filter on the reports. Thanks!

  • 0 Votes
    7 Posts
    1k Views

    Cool - good to hear it. And once again: thanks for reporting it!

  • 0 Votes
    3 Posts
    551 Views

    Apologies for the late reply, but thank you! This really clears up the flow for me. 🙂

    The only thing regarding FindOrCreateLobby instead of CreateLobby is that the request to CreateLobby is deliberate. While I do intend to integrate FindOrCreateLobby as a "just throw me into a running game" option (which probably is the desired flow in most cases), I also want a player to be able to say "I want to start a game for my friends, and I also want to be the host and set the rules of the room".

    I'm just clarifying that in case I'm misunderstanding the intent between the two calls, and that FindOrCreateLobby can indeed be used for either flow that I just described.

  • 0 Votes
    9 Posts
    1k Views

    Sorry for the confusion, I was under the impression a publisher key gave you certain read-only permissions on a user given they own your game (this was silly in hindsight)

    While the users in question had public profiles, their privacy settings for friends lists were set to private.

    Thank you for your help! I now understand what you meant by "as long as users grant your app permission".

  • Pre-Game Lobby: Groups vs Lobby?

    Solved General
    6
    0 Votes
    6 Posts
    900 Views

    Please refer to the article -- Implementing Continuous Lobbies in the brainCloud Help Center for details.

  • 0 Votes
    7 Posts
    2k Views

    No problem! glad to hear that.

  • 0 Votes
    4 Posts
    1k Views

    Ah - perfect. Yeah - that sounds like a better option given the full requirements.

    Glad you found it... and welcome to brainCloud!

  • 0 Votes
    2 Posts
    766 Views

    Hi @PJ ,

    Your usage of lobbies is exactly why we added the concept of long-lived lobbies. (Admittedly it wasn't part of the original use case - which is probably why some of the documentation doesn't seem to properly reflect that usage <-- we'll review that).

    So - needless to say - keep going as you are - and reach out if you hit issues!

    Happy coding!

    Paul.

  • 0 Votes
    4 Posts
    1k Views

    Awesome! Still a few things to clean up but I appear to be right back to testing within the editor, but against brainCloud's actual lobby system. The key was setting debug to true in the config.js and following the instructions at the end of the GitHub page. Thanks again!

  • Webhook routes

    Solved Cloud Code
    12
    0 Votes
    12 Posts
    3k Views

    Cool. Thanks for sharing the solution here @devsleeper !

  • 0 Votes
    2 Posts
    852 Views

    Hi @francesco-lenolli ,

    The ProductService has actually been deprecated.

    You should use the AppStore service instead.

    I hope that helps!

    Paul.

    2024-09-17_19-55-15.png

  • Max number of keys on a user statistic?

    Solved General
    3
    0 Votes
    3 Posts
    936 Views

    Update - we discussed it and we think you are good to go.

    A test of 1000 stats revealed that the resulting statistics object (that contains all values) was only about 64KB - which is smaller than I had feared. So it looks like 2000-2500 stats will come in less than 200KB.

    Note - that IS 200KB more data that will be returned during an Authenticate call - and during readUserState() - but it should work okay.

    I assume you'll be creating these stats dynamically. That is controlled via the setting on this page (you've probably already discovered it).

    2024-08-27_09-37-51.png

    One warning is that stats are case sensitive - so we'd definitely recommend that you standardize the creation/accessing of the stats - maybe do an uppercase() or lowercase() cast before creating / accessing them.

    I hope that helps. Good luck!

    Paul.