• Test post from me

    General
    8
    0 Votes
    8 Posts
    316 Views

    Check.. 1 2 3

  • 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.

  • 1 Votes
    1 Posts
    797 Views
    No one has replied
  • 0 Votes
    5 Posts
    214 Views

    Hello @Gavin-Beard!

    We've had trouble reproducing this issue on our end. After some testing with a small app on MacOS and iOS, we have not been able to see the error you are encountering using Unity 2021.3.8.

    If you could, please check out the app here and let us know if this issue is still persisting. It is a barebones authentication app and it should run on multiple devices. The Authentication.cs script has all the gory details. Just open up the Main scene under Assets > App > Misc > Main.unity to get it running. You will also need to add your brainCloud credentials, but you can copy the Authentication example template in brainCloud to test the app.

    Please let us know how this app works on your end and if any issues are encountered! You should be able to click on any error logs in the in-app console to copy the log to your device's clipboard.

    As for your specific issue, my best guess is that perhaps an external library of sorts might not be supported with brainCloud, such as the Newtonsoft Json.NET library. For JSON de/serializing, brainCloud comes with JsonFX. You can also make use of Unity's own JsonUtility for structured JSON de/serialization. Both the app I've shared and the examples on our GitHub make use of JsonFX extensively.

    If you'd like to know more and see how a more robust app can handle brainCloud authentication, as Franco suggested, you should check out our Authentication example on our Unity Examples GitHub.

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

  • 0 Votes
    1 Posts
    147 Views
    No one has replied
  • 0 Votes
    4 Posts
    190 Views

    Update 3 - okay - the networking optimization is back in place now.

    (Though we haven't turned it on for the Portals yet - just want to ensure there aren't any issues first...)

    Paul.

  • 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

    APIs
    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
    5 Posts
    199 Views

    @Paul-Winterhalder said in Async match without opponent:

    Hi,

    brainCloud currently offers two forms of matchmaking:

    Offline matchmaking - for async match (i.e. words with friends) or one-way multiplayer (i.e. class of clans) style games. Both of those multiplayer types require you to have an opponent to play against when the match starts.

    There is also online matchmaking - which uses our lobby system - which is suitable of any online / real-time sort of multiplayer.

    (That one doesn't require you to have an opponent in mind when the lobby starts... and the lobby can start a match via a relay or room server session right away...)

    That said - I get the feeling that you are talking about more of an async match scenario (i.e. not-necessarily-online multiplayer) - where the match can start before an opponent has been identified.

    Am I correct that that is the scenario you are wanting to target?

    It's an interesting approach - as there's a much lower chance of matching against another player who isn't going to respond in a timely manner.

    Let me know if I've got the scenario right and we'll give it some more thought...

    Paul.

    Hi Paul,

    Yes, you are correct. When a user starts a new game, it'd essentially see if someone has already started a game but has no opponent, If a match is found the second player will be added to the game and can then make their move. If no match is found that is awaiting a player, it'll create a new game, let player 1 make their move and then go "dormant" until a player two is ready.

    If you have ever used the turn based aspect of Apples Game Center turn based service, this is essentially how that works.

  • 0 Votes
    4 Posts
    167 Views

    FYI - this feature was added in brainCloud 4.13 - https://getbraincloud.com/apidocs/release-4-13/

  • 0 Votes
    3 Posts
    260 Views

    @Paul-Winterhalder Yes please, there are other gaming backends which only works with Open Id . I already shared one requirement with Jason. Implementing this will not just solve my edge case but open opportunities for lots of other backends to work well with BrainCloud

  • 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
    3 Posts
    224 Views

    @JasonL Thanks, I ended up with this cloudCode:

    isForceCreate = String(data.callingMessage.forceCreate) == "true"; isNewUser = String(data.message.newUser) == "true"; var response = {}; response.status = 200; response.data = data.message; if (isForceCreate && isNewUser) { var min = 10000000, max = 999999999 prefix = ["player", "user", "member"] const num = Math.floor(Math.random() * (max - min + 1)) + min; const pre = prefix[Math.floor(Math.random() * prefix.length)]; var defaultPlayerName = pre + String(num); var playerStateProxy = bridge.getPlayerStateServiceProxy(); // We are changing the player name on the server. playerStateProxy.updatePlayerName(defaultPlayerName); // And in this API Call's return data. response.data.playerName = pre + String(num); } response; //return the object

    This works just the way I need

  • 0 Votes
    2 Posts
    126 Views

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

  • 0 Votes
    1 Posts
    105 Views
    No one has replied
  • 0 Votes
    7 Posts
    227 Views

    @Ben-Morris unfortunately yes
    they promised to solve it in BC 5.0 though

  • bridge.include doesn't exists

    Cloud Code
    2
    0 Votes
    2 Posts
    128 Views

    Hey, there must be some syntax error in your script, would you be able to provide your script code here?

  • 0 Votes
    1 Posts
    118 Views
    No one has replied