• 0 Votes
    2 Posts
    7 Views

    Hi @gyutaelee ,

    Based on the current brainCloud's implementation, here are the answers to your questions:

    Q1: Does the Pre-hook count as a separate CloudCode execution / API count?**

    Yes. The Pre-hook counts as both a separate API call and a separate CloudCode script invocation. After running, the server publishes its own analytics event with operation "RUN_HOOK-Pre_VersionGate" that increments both counts.

    Q2: Does bridge.getGlobalProperty() count as an API call?**

    No. bridge.getGlobalProperty() is completely free. It reads directly from the cached Game object in memory and bypasses the API call tracking pipeline entirely.

    Q3: Does the "first 3 free, then 0.5 each" rule apply to hook CloudCode scripts?**

    Yes, the discount applies to internal calls from any script or hook within the session.

    Q4: Pass-through case: usage count breakdown

    Client calls script.RUN: +1 API call Pre-hook executes: +1 API call bridge.getGlobalProperty() inside hook: free Original CloudCode script: +0 (covered by the original script.RUN request)

    Total external API count: 2

    Q5: Blocked case: usage count breakdown

    Client calls script.RUN: +1 API call Pre-hook executes: +1 API call bridge.getGlobalProperty() inside hook: 0 (free) Original script: +0 (does not run, server throws before invoking it when hook returns non-200)

    Total external API count: 2

    The blocked case costs the same as pass-through from an API-count perspective. The only savings is that the original script's internal bridge.callAPI() calls are avoided.

    Q6: Could reading a Global Property on every script.RUN become a performance or cost concern?

    Performance: No. getGlobalProperty() reads from an in-memory cached Game object (ConcurrentHashMap per node) with no DB query or network call.

    Cost: The hook itself adds +1 API count to every script.RUN call that has the hook attached.

    Q7: Recommended caching approach for frequently-read, rarely-changed property?

    The cache is already in place, no additional caching needed. brainCloud stores the Game object (including all global properties) in an in-memory cache for each server node. Cross-node invalidation is handled automatically when a global property is updated in the portal. Using bridge.getGlobalProperty() is already the optimal pattern.

    Q8: Portal metrics: what can be broken down separately?

    API Hook execution count: Partially available. Hooks appear within the CC script invocation counter; no hook-only counter exists. CloudCode script execution count: Available as CC Script Invocations, but includes hooks in the same counter. CloudCode internal API call count: Available as CC API Calls in the Monitoring dashboard. Global Property read count: Not tracked. No metric exists for this.
  • 0 Votes
    5 Posts
    115 Views

    Yes, that is the right question. The 10K number is not the expected case for every regular player. It is more of a worst-case upper bound for high-degree / influencer-like accounts in our social graph.

    For regular players, we expect the friend count to be much smaller, likely under 100, and most users would probably be under 20. For those users, using brainCloud Friends with GetSocialLeaderboard / GetMultiSocialLeaderboard should be fine.

    For the exceptional high-degree accounts, we expect the number to be limited at first, probably under 50. Your shadow leaderboard suggestion makes sense to us.

    To confirm, would the recommended architecture be:

    Keep posting every player’s score to the main leaderboard. Tag high-degree / influencer-like accounts separately. For each tagged account, maintain a separate shadow leaderboard containing only that account’s friend scores. When a friend’s score changes, mirror that score into the relevant shadow leaderboard through Cloud Code. Use the normal global leaderboard paging APIs on the shadow leaderboard to support rank 1-50, 51-100, 101-150, etc.

    A few details we would like to confirm:

    Is GetGlobalLeaderboardPage on the per-influencer shadow leaderboard the intended way to support paging for these large friend lists? For rotated leaderboards, should each shadow leaderboard use the same rotation settings as the main leaderboard? Is there a practical recommended maximum number of shadow leaderboards or mirrored score writes we should design around? Would increasing maxMultipleLeaderboardScoreLimit still only be needed for the regular top-N social leaderboard path, and should that be requested through brainCloud Support?

    If this is the preferred pattern, we will design the normal-player path and high-degree-player path separately instead of trying to page through up to 10K friends with GetSocialLeaderboard.

    Thanks!

  • 0 Votes
    1 Posts
    23 Views
    No one has replied
  • Segment Code Bug Report

    Unsolved General
    3
    0 Votes
    3 Posts
    45 Views

    Hi @LEE-JONG-GUN,

    Good news: the fix for the Segment code field clone bug has been deployed.

    What changed

    When you clone a Segment now, the code field is automatically appended with _copy (e.g., myCode becomes myCode_copy). The cloned segment's code field is editable, so you can change it to any unique value and save the clone successfully.

    This resolves the duplicate-code issue that was preventing clones from being saved. Thanks again for the report.

  • Integration with .NET server

    Unsolved General
    2
    0 Votes
    2 Posts
    41 Views

    The SDK is just a plain C# source library you can drop into any .NET project (not Unity-only). You can find usage examples and the source in our GitHub repositories at https://github.com/getbraincloud.

  • missing features

    Feature Suggestions
    5
    0 Votes
    5 Posts
    257 Views

    @johnh
    I apologize for the late reply. I have reviewed the details you mentioned.
    If the item purchase matches the mockup photo above, it appears to be quite useful.
    'Helmet Equipment Enhancement Ticket'

    Requires a specific item, consumes currency
    These needs can be fully resolved with a single transaction.
    I expect that if this feature is included for paid products as well, their utility will increase in the future.

  • 0 Votes
    8 Posts
    133 Views

    Hi,

    Thank you for guiding me on how to check it.

    I verified the indexes for the FOLLOW entity using CustomEntity > SysListIndexes in the API Explorer, and confirmed that unique: true is correctly applied to the followerId_followingId index.

    The confirmed response is as follows:

    { "name": "followerId_followingId", "key": { "data.followerId": 1, "data.followingId": 1 }, "background": true, "unique": true }

    Thank you for your help!

  • 0 Votes
    6 Posts
    135 Views

    @moondory77 brainCloud 6.0 is releasing this month (June 2026). I am really excited about the headline features for it, hope you love it!

  • 0 Votes
    7 Posts
    167 Views

    Ah - great to hear @jongdae-won . Thanks for the update!

  • Admin Billing API request

    Unsolved APIs
    7
    0 Votes
    7 Posts
    176 Views

    Added the additional details to 13660

  • 0 Votes
    3 Posts
    98 Views

    Thank you for your kind response.

  • 0 Votes
    4 Posts
    155 Views

    @gyutaelee I will investigate the Per Promotion Deployment option you requested.

    As I was working on this I thought there may be a workaround for you that you would like. This could work for your team with minimal effort and on your current version of brainCloud portal.

    My solution hides the promotion so that only users you flag as TESTERS will see it.

    This would let your PROD testers gain the benefit of the no-ads promotion without disrupting your monetization.

    Within Automatic Promotions, there is the option to Target members of any of these segments.

    cb1f4861-16f8-432a-bb22-4b71dc0b0ce1-image.png

    Within Scheduled Promotions, there is the option to Offer this promo to: Only users in:

    2a5f3a28-91ba-4f2c-bb1c-5a2c04ead1e5-image.png

    Advancing to App > Design > Segmentation > Segments we can create a segment that filters to players that are flagged as Testers.

    59f8d7bc-3640-450f-ab67-086af9b8acdd-image.png

    Now, segments need to have at least one more criteria, so let's choose something like has logged in at least 1 time.

    d86e5f6d-ded8-4c7e-ab26-1c07f9813f0e-image.png

    Save this Segment

    IMPORTANT! Add the segment to your Promotion
    This will limit the promo to only eligible users. Noone else sees it!
    7aca6582-cff3-4469-ae98-6339b341ba06-image.png

    Next we will need to flag some users as Testers. For a DEV app, the easiest way to do this is to go to the User Browser, RECENTLY ACTIVE and pick players (your testers) with recent activity.

    ec366981-f641-4833-87f2-64798766555c-image.png

    GO TO USER to bring up their user summary and check the IsTester checkbox.
    d1094afd-ca63-4ce6-8070-477c879fb1d4-image.png

    Testers get a special icon
    e02b71bc-db5b-4127-a6a7-1528697aee6f-image.png

    Next, we will return to Segments.

    Segments are automatically processed overnight, but you can Refresh Segments immediately with the REFRESH SEGMENTS button. Please note: refreshing segments processes every player so this process can take a while and preferably left to low-traffic times of day.

    e306d8e0-553d-475c-a780-43fbed29a271-image.png

    After processing completes, we can check the cohort of testers by returning to the User Browser choosing BROWSE, and Browse Within A Segment.

    43a330f6-e572-4b0b-a8ca-c0d631e63240-image.png

    These are my Testers, so everything worked.
    a8b56bbb-536c-447b-9e7d-a8d8236ff165-image.png

    Since only testers are eligible for the promotion, you are free to deploy it to PROD without affecting your monetization. And the PROD Testers you select will be able to gain the workflow benefit of no ads.

    Could you let me know if this solution solves your problem?

    Let me know if you have any questions,
    Regards
    John
    -Design

  • 0 Votes
    3 Posts
    93 Views

    Case 13633 - [implementing]

  • 0 Votes
    7 Posts
    267 Views

    @Paul-Winterhalder , could you please respond to @noah 's inquiry?

  • 0 Votes
    5 Posts
    143 Views

    Hi @gyutaelee I am bringing this to the dev team for further discussion. thank you for suggesting it.

  • 0 Votes
    6 Posts
    349 Views

    Thanks @Brad-Hester !

  • 0 Votes
    10 Posts
    380 Views

    Thank you for your helpful response. I will proceed as you suggested.

  • 0 Votes
    3 Posts
    143 Views

    It's been resolved. Thank you for your response!

  • Matchmaking To An Edgegap Hosted Server Instance

    Unsolved General
    4
    0 Votes
    4 Posts
    157 Views

    Hey, thanks for reaching out. To answer your main question directly: yes, brainCloud's lobby and matchmaking system can trigger an Edgegap server deployment automatically. You do not need to build a custom C++ room server to make this work.

    https://github.com/getbraincloud/examples-cpp/tree/develop/relaytestapp

    The relaytestapp example on the develop branch of examples-cpp is a working client example that does exactly what you are describing. It uses brainCloud lobbies and matchmaking to find a match, and once the lobby is ready to launch, brainCloud handles spinning up the Edgegap server and passes the connection details back to all players through RTT.
    The server configuration you see in the screenshot is what ties everything together on the brainCloud side. That entry defines which Edgegap application to deploy, which regions to consider based on the selected beacons, and the credentials needed to make the deployment call. Once that server is linked to a lobby type, the entire launch sequence is handled for you.
    The relaytestapp is a solid starting point to see this end to end.
    Screenshot 2026-05-07 at 12.13.17 PM.png

  • 0 Votes
    3 Posts
    153 Views

    @Paul-Winterhalder Hello! Here is my app Id "15675