APIs

Questions specific to particular client APIs, libraries, etc.

38 Topics 133 Posts
  • Authentication error - Unity iOS

    5
    0 Votes
    5 Posts
    293 Views

    Hello Gavin and Andreas, apologies for the late response. Could you give more information to reproduce the crash you're experiencing in iOS? I've attempted to reproduce the crash and 202 error and I wasn't able to. For these cases versions are important so if you could provide the Unity Engine version, iOS version, and what iPhone device used to test with.

  • 0 Votes
    2 Posts
    156 Views

    Hello! Thanks for your inquiry.

    The format of this response has been used for several years so to change it at this point would cause many errors for our clients. However, in situations like this, we have included the JsonFx library to help deserialize dynamic JSON objects with.

    One way to deserialize the JSON items would be to include a DeserializeItems(string) method in your Data class to be able to store them in an array using JsonFx's JsonReader.Deserialize(string) method:

    public List<Item> Items = new List<object>(); public void DeserializeItems(string jsonResponse) { var response = JsonReader.Deserialize<Dictionary<string, object>>(jsonResponse); var data = response["data"] as Dictionary<string, object>; var items = data["items"] as Dictionary<string, object>; foreach (Dictionary<string, object> item in items.Values) { var newItem = new Item(); newItem.itemId = (string)item["itemId"]; newItem.defId = (string)item["boost_rapidfire"]; newItem.quantity = (int)item["quantity"]; // etc... Items.Add(newItem); } }

    Alternatively, you can also use JsonFx's JsonWriter.Serialize(object) method in the foreach loop to then be able to use Unity's JsonUtility to automatically map it as an Item.

    Understandably, both methods have their own pros and cons. However, it should be able to get the job done in this case.

    Hope this helps! Please let us know if you have further questions or inquiries about this.

  • 0 Votes
    2 Posts
    131 Views

    Hmm, not really...

    You can get the number of sessions created in an hour with this call: https://getbraincloud.com/apidocs/apiref/#capi-globalapp-sysgetdailycounts

    But brainCloud doesn't otherwise track a concurrent session count per app.

    There are certainly 3rd party analytics packages that you could link into your client that would give you that sort of information though.

    Paul.

  • Unreal 5.1 + Online Services

    2
    0 Votes
    2 Posts
    128 Views

    Looking a little more deeply; trying to use Brain Cloud with the Lyra example code

    https://github.com/getbraincloud/braincloud-unreal-plugin-src/blob/335e9c6fe0deb6674254b30ba5edb24f9a35817c/Source/OnlineSubsystemBrainCloud/Private/OnlineSubsystemBrainCloud.cpp#L28

    The session interface isn't written (nullptr) is returned. Can I presume from this that the OnlineSubsystem is in a pretty "early access" form?

  • 0 Votes
    2 Posts
    142 Views

    Hi Kirlos, as you can see from the response's message field, there are two elements (id and name) underneath, you need to append .id to specify the first search field for id, so change the "message.from" to "messsge.from.id" should solve this problem.

  • 0 Votes
    1 Posts
    116 Views
    No one has replied
  • 0 Votes
    2 Posts
    126 Views

    Call AttachUniversalIdentity() method from client lib, the username is uniqueness enforced.

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    4 Views
    No one has replied
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    2 Views
    No one has replied
  • 0 Votes
    2 Posts
    137 Views

    Hi Dylan, actually, the argument purchaseData for StartPurchase() method takes the Steam Item ID (from Edit Price Entry pop-up) as the input field (not the Item ID from the product list)
    7e9ff7b1-1854-4a48-8e38-d219501da3fd-image.png

  • Simple S2S call via nodejs server

    Moved
    2
    0 Votes
    2 Posts
    127 Views

    This seems to be working now, the error is a wee misleading. The code was correct. The URL was incorrect and was changed to (or leave blank):

    const url = "sharedprod.braincloudservers.com"; ... brainclouds2s.request(global.s2sContext, { service: "group", operation: "SYS_CREATE_GROUP", data: groupData, }); })
  • 0 Votes
    3 Posts
    149 Views

    Thank you! I will try that out.

    Just for anyone else's future reference, I realized you can "log in" as another user using GetSessionForProfile(). So if the other user is offline, you will be able to modify their data (for example, to increment an attribute for number of matches they have).

    I believe this way, you can also do what JasonL said and TurnShieldOn() for the other user, stopping them from being able to match anymore.

    Correct me if I'm wrong.

  • How to view users online ?

    2
    0 Votes
    2 Posts
    135 Views

    Hi Jose,

    Sounds like you want to look into our Presence feature.

    Presence is designed to let users know when their friends are online. You can think of it like the old Xbox Live friends feature - where you can see which of your friends are online - and optionally what they are doing.

    And Presence uses RTT - so users will be notified in realtime when the presence information of a followed user changes.

    Presence works with Friends, Groups, and arbitrary lists of users.

    More details here - http://getbraincloud.com/apidocs/apiref/#capi-presence

    Hope that helps!

    Paul.

  • Processing Refunds?

    6
    0 Votes
    6 Posts
    191 Views

    @Paul-Winterhalder It'd be great if we can have this info. +1

  • 0 Votes
    3 Posts
    195 Views

    @Henry-Smith said in Recommended way to read Entity data? (Unity, C#):

    Sorry to bring back an old thread, but I'm just learning the platform and I thought I'd share my solution to this.

    First, define a generic class to handle the raw json response data:
    eg. my Tut1_AddTwoNumbers api returns:

    {"data":{"response":{"answer":24},"success":true},"status":200} public class Response<T> { public ResponseData<T> data; public int status; } public class ResponseData<T> { public T response; public bool success; }

    Then for each api call that you have, define a class that contains the fields that are custom to that response.

    public class Tut1_AddTwoNumbersResponse { public int answer; }

    Now, you call your function and handle the response like this:

    public void Tut1_AddTwoNumbers() { string scriptName = "Tut1_AddTwoNumbers"; // Anonymous object to supply the params. var data = new { num1 = 16, num2 = 8 }; var jsonScriptData = JsonWriter.Serialize(data); SuccessCallback successCallback = (response, userdata) => { var responseObject = JsonReader.Deserialize<Response<Tut1_AddTwoNumbersResponse>>(response); //var responseObject = JObject.Parse(response); Debug.Log($"Success The answer is '{responseObject.data.response.answer}' | raw_json={response}"); }; FailureCallback failureCallback = (status, code, error, userdata) => { Debug.Log(string.Format("Failed | {0} {1} {2}", status, code, error)); }; // Call the script _bc.ScriptService.RunScript(scriptName, jsonScriptData, successCallback, failureCallback); }

    this line is the important part:

    JsonReader.Deserialize<Response<Tut1_AddTwoNumbersResponse>>(response);

    Hope that helps someone!

  • 0 Votes
    2 Posts
    125 Views

    To limit operations like IncrementExperiencePoints() to cloud code only. This will essentially take away the ability to make these calls from the bare client API. You can see a script that enforces these restrictions here - https://getbraincloud.com/apidocs/cloud-code-central/handy-cloud-code-scripts/restrictclientcalls-script/

    Refer to another post below for more strategies you can apply to prevent cheating: https://forums.getbraincloud.com/topic/23/discussion-strategies-to-prevent-cheating-in-tournaments

  • braincloud javascript and edge

    2
    0 Votes
    2 Posts
    127 Views

    Hi Bigzer,

    We aren't aware of any issues running our javascript client lib under Edge - and haven't been able to repro your issue.

    I'm not a javascript guy - but I'm noticing other warnings / errors there - do those also happen in Chrome?

    Paul.

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    1 Views
    No one has replied
  • Unity Room Server

    Moved Solved
    20
    0 Votes
    20 Posts
    448 Views

    @David-St-Louis-0 @Paul-Winterhalder
    Hi again.
    I would like to debug my server locally, in Unity. I have the _S2S stuff all hooked up as described in the walk through.
    But then I tried to do the following (actual numbers redacted)

    #if UNITY_EDITOR var appId = "00000"; var serverName = "MyServerName"; var secret = "00000000-0000-0000-0000-000000000000"; _lobbyId = "00000:myLobbyTypeId:00"; #else // Load environment variables passed in by brainCloud to our container var appId = Environment.GetEnvironmentVariable("APP_ID"); var serverName = Environment.GetEnvironmentVariable("SERVER_NAME"); var secret = Environment.GetEnvironmentVariable("SERVER_SECRET"); _lobbyId = Environment.GetEnvironmentVariable("LOBBY_ID"); #endif

    However, I am getting a perpetual error:
    #S2S S2S Failed: {"packetId":1,"messageResponses":[{"reason_code":40613,"status_message":"Processing exception: Unrecognized lobby: 00000:myLobbyTypeId:00","status":400}]}

    I even signed up for a Dev+ subscription, just in case that was the problem, per this thread. No luck.

    How can I test my server code locally, while still planning for the full-on S2S Docker container deployment?
    Thanks

  • 0 Votes
    4 Posts
    158 Views

    Hi Chris,

    User entities are primarily indexed by profileId + entityType - so the singleton API will scale well no matter how many players you have.

    That said, if your use case gets more complicated, with say hundreds of entities of a particular type per user (say maybe you are modelling user created towns, that sort of thing) - you could consider using Owned Custom Entities instead. You can define addition, custom indexes for those... keeps those lookups fast and efficient.

    In addition, if you end up having >1000 Global Entities, you should definitely look at switching to Unowned Custom Entities. Same deal - you can define your own custom indexes...

    Hope that helps!

    Paul.