Search Unity

Feedback My Cloud Save experience

Discussion in 'Cloud Save' started by GearedSun, Feb 3, 2022.

  1. GearedSun

    GearedSun

    Joined:
    Apr 17, 2014
    Posts:
    30
    Hello dear Unity developers and staff!

    I've just just finished my work on a mobile game, which is using the new Unity Cloud Save. I've decided to share my experience with you, because I believe it might help both game developers and Unity.

    Problems I did encounter:
    -
    Your documentation and interface seemed so simple and easy that it made an impression it will be a few days work at most to implement. It was not.

    - First of all, there is no simple auth (like email/password) included. Every form of authentication process requires 3rd party plugins such as Google Play Services, which brings A LOT of other issues which I'm not going to discuss here. I'll just say that I've ended up making my own native plugin for GPS authentication to get the idtoken (and some other stuff).

    - Let's say we have the idtoken. With the token, the authentication to Unity Cloud Save went well... on API 25+ devices. But GPS supports devices from API level 19. Here comes the dreaded issue with certificate failed error 51/60 depending on Unity version. This error comes from Web Request within Authentication package. The only solution right now is to copy Auth and Cloud Save packages into local packages folder (or Assets folder with some changes) and then you need to do changes to the Web Request by adding custom CertificateHandler, which could be another time consuming task depending on how secure you want it to be for API level 19-24 devices.

    - OK. So we are authenticated to Cloud, lets save something. First of all, the Cloud Save interface is simple, but also VERY limited atm. To save to cloud, the only usable method is ForceSaveAsync( Dictionary<string,object> ). Why is called "Force"? Is there a non-forced method? No, it isn't... makes no sense to me. Anyway, this method comes with an ugly and UNDOCUMENTED "batch limit" of 20 keys in single call. Which means, you will need divide your upload into multiple calls.

    - So, we finally have some data in cloud. To load data, I ended up using LoadAllAsync(). This method seems to work well, except of it using Dictionary<string,string>, which makes zero sense. The fact that you store all data as strings within your cloud shouldn't be exposed to users, especially if all save methods use Dictionary<string,object>! Btw. there is another unbelievable and weird stuff going on. All loaded strings return enclosed in quotation marks for some completely unknown reason! Sure nothing that can't be fixed in code, but why???

    What features I'm missing:
    - There is a method ForceDeleteAsync(string), which deletes one single key. Where is "DeleteAllAsync" method? There are instances when you need to delete all keys and calling DeleteAsync key after key causes rate limit exceeded errors!

    - We can view user data via your web interface, but it's not possible to edit anything! For debugging, developing, but also if something breaks for some user during production phase, there needs to be a way how to fix that save for certain player!

    - email/password authentication

    - Simple leaderboards with the ability to call GetUserRank(string userID, string leaderboardID ) which would return a position of the player in sorted leaderboard. Also other typical leaderboard functionality like getting an userID of the user directly above or below current user etc.

    There is probably more and I will update this thread if I find something important that is missing from this description.

    A little disclaimer, this info is relevant to packages:
    com.unity.services.authentication@1.0.0-pre.37
    com.unity.services.cloudsave@1.0.0-pre.3
    and their state during december21-january22
     
  2. Unity_AndyP

    Unity_AndyP

    Unity Technologies

    Joined:
    Jun 23, 2021
    Posts:
    63
    Hi GearedSun,

    Thank you for that highly detailed experience you have given us. It will be really helpful going forward as these products are still in Beta.

    We understand that having to only go through these 3rd party tools can be limiting but we are planning to remedy this by allowing users to use Email and Passwords, like you suggested, later on in the year. I will let you know as soon as this becomes available.

    Unfortunately, as you pointed out, we don't support devices using <= TLS1.1, this should generally only impact devices with Android API 21 and lower. Please reach out if you are having issues otherwise.

    The batch limitation is something we are currently looking into improving and I will make sure this is documented for future users so they can see this limitation even if it does change. My apologies if this wasn't clear at the outset.

    We are currently looking into a leaderboards feature so all feedback and use cases are welcome. If you have any other use-cases surrounding this I would love to hear about them.

    I have recorded all of this and passed it over to the appropriate teams. As I mentioned earlier, as soon as I hear any information about this I will update you so at that time if you would be willing to try them out and give more feedback it would be greatly appreciated.
     
    OberZine likes this.
  3. daisyd_unity

    daisyd_unity

    Unity Technologies

    Joined:
    May 19, 2021
    Posts:
    7
    Hi GearedSun,

    Thanks for your feedback! I am from Authentication group.

    For email/password feature that you are looking to have, it is currently in our roadmap for 2022. I will keep you posted on the progress on that! If you have any additional question or feedback for Authentication product, feel free to reach out to us anytime! Appreciate your valuable feedback again!
     
    DavidZobrist and mhshim like this.