Search Unity

Does Remote Settings work? It has multiple one-star review on the Asset Store.

Discussion in 'Unity Analytics' started by eppz, Mar 5, 2018.

  1. eppz

    eppz

    Joined:
    Aug 2, 2014
    Posts:
    172
    It could simplify a lot, but I really don't want to break the game out on the market.

    Some review says it even CRASHES (Sometimes throws NullReferenceException exception), which prevents it being production proof. If such an issue is tracked and fixed, it should be indicated on the marketplace.

    Could someone please confirm that those issues mentioned in marketplace were tracked and fixed or not?
    @ap-unity @JeffDUnity3D
     
  2. Antony-Blackett

    Antony-Blackett

    Joined:
    Feb 15, 2011
    Posts:
    1,778
    I implemented it just now, seems to work pretty well for me in editor and on Android. I haven't tested on iOS and I haven't released it in a live app yet however.

    edit:

    I skipped over using the component they ship with it and I just implemented my own listener for RemoteSettingsUpdated.

    Make sure your strings are correct and check that settings HasKey() before you GetInt etc, just like using player prefs.

    When releasing you have to copy all the strings from development over into the release tab, which is kind of annoying... It would be nice if there was a push to release like on the google play console for alpha, beta and production versions.
     
  3. eppz

    eppz

    Joined:
    Aug 2, 2014
    Posts:
    172
    Thanks for getting back!

    The ultimate proof would be a game using the library in production without any crash / exception in its analytics records (of many sessions). Our game is currently featured in App Store, so I simply CANNOT add a library that MIGHT crash the entire game. Sounds a very bad trade for having remote settings.
     
    Last edited: Mar 5, 2018
  4. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,519
    @eppz,

    One thing I want to point out, the Asset Store package is only necessary if you want to use the RemoteSettings component. The RemoteSettings scripting API has been available in the Unity Engine since 5.5. (However, it didn't work until the Remote Settings service was set up last year.)

    The issues that were reported in the Asset Store comments have been addressed. (I'm also working on getting responses directly to those comments.)

    There should no longer be any Null Reference Exception if the RSDataStore is not found. And we have also added UWP support.

    I am not aware of any issues in the current version (0.17) that would result in a crash or exception. I do know there are games that are using Remote Settings in production, though I don't have insight into if it's causing them any issues.

    The biggest potential issue I see when customers integrate RemoteSettings is not assigning default values. Because the RemoteSettings are dependent on a network call, there may be some delay in getting the values. So it's important that your game accommodate that delay.

    Code (CSharp):
    1. using UnityEngine;
    2.  
    3. public class RemoteValuesExample : MonoBehaviour {
    4.  
    5.     //properties
    6.     public static float SpawnRate { get; private set; }
    7.  
    8.     //Default values for properties
    9.     public float DefaultSpawnRate = 1.0f;
    10.  
    11.     void Start() {
    12.         Debug.Log("App Start");
    13.         //Set properties with default values
    14.         //If no network connection, then Remote Settings will not be updated
    15.         SpawnRate = DefaultSpawnRate;
    16.         DebugInfo();
    17.  
    18.         //Sets up RemoteSettings callback
    19.         RemoteSettings.Updated += new RemoteSettings.UpdatedEventHandler(HandleRemoteUpdate);
    20.     }
    21.  
    22.     //Called when fetching of settings is completed. Fetching happens automatically after a new session
    23.     private void HandleRemoteUpdate() {
    24.         Debug.Log("Remote Settings Updated");
    25.         SpawnRate = RemoteSettings.GetFloat("SpawnRateFactor", DefaultSpawnRate);
    26.         DebugInfo();
    27.     }
    28.  
    29.     void DebugInfo() {
    30.         Debug.Log("SpawnRate: " + SpawnRate);
    31.     }
    32. }
     
    Last edited: Mar 5, 2018
  5. eppz

    eppz

    Joined:
    Aug 2, 2014
    Posts:
    172
    @ap-unity Hey thanks for the super-detailed answer!
    I'll go without the component for sake of safety.

    Yap, you should simply respond to the ratings in Asset Store, and that's it.

    ---

    Just curious: How can you (and we users) segment players by age / gender? It feels like it somehow violates IDFA usage, neverthless, it seems quite useful!
     
  6. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,519
    The only way we recommend getting that data is by asking the player (and giving them the option to opt out).

    And we have a couple of methods in the Analytics API that will allow you to associate that data to a player in our system:
    https://docs.unity3d.com/Manual/UnityAnalyticsUserAttributes.html

    And then you'll be able to use that data when you create Custom Segments.
    https://docs.unity3d.com/Manual/UnityAnalyticsSegmentBuilder.html

    For Analytics, we actually generate our own user id and use that for things like retention tracking, etc. This id does not persist when the user uninstalls the app.
     
  7. eppz

    eppz

    Joined:
    Aug 2, 2014
    Posts:
    172
    @ap-unity So these user attributed are not populated by default?
     
  8. Antony-Blackett

    Antony-Blackett

    Joined:
    Feb 15, 2011
    Posts:
    1,778
    No. you need to set them yourself. If you get them to login to facebook then they are giving you permission to whatever you requested. you can get 'gender' if they have set it public on their profile. You can also get a minimum age useful for things like restricting r rated content restrictions but not much else, it usually returns 13, 18 or 21, I think. If you want anything more than that you'll have to ask the player for that data.

    If you have a create a character feature I've always wondered if you could just use the character they make as their demographics. I'd say it'll be pretty accurate most of the time.

    Edit:

    In reality though, how important are demographics anyway. Two females are not necessarily that similar, likewise two 65 year olds aren't either. It's just some arbitrary way of splitting your population so you can optimise for very loose categories of people. I think you'd be better off splitting your users in 'power user' (someone who plays a lot), spender, skilled player, collector etc...

    The only time demographics might be useful is if you want to go and acquire your most valuable users somewhere else like on facebook. But facebook has tools that allow you to target audiences much more specifically and more effectively than just gender and age...
     
    Last edited: Mar 5, 2018
    eppz likes this.
  9. eppz

    eppz

    Joined:
    Aug 2, 2014
    Posts:
    172
    Wow, interesting piece of insight!
     
  10. Antony-Blackett

    Antony-Blackett

    Joined:
    Feb 15, 2011
    Posts:
    1,778
    Sorry, I added a bunch more to my post after you read it.
     
  11. eppz

    eppz

    Joined:
    Aug 2, 2014
    Posts:
    172
    @ap-unity @Antony-Blackett Sorry, it seems a minor misapprehension. Actually, I have no intention to segment users upon are nor gender at all. I have just seen this in Remote Settings admin:

    A.png

    Then I was just suspecting that Unity Remote Settings segmentation somehow give access to Unity Ads IDFA profiles (containing PI data a lot), which would have been weird. So I was intended to ask how the data is obtained.
     
  12. Antony-Blackett

    Antony-Blackett

    Joined:
    Feb 15, 2011
    Posts:
    1,778
    Oh right, nah all the segments and events and data are just the same ones you have in Unity Analytics
     
    eppz likes this.
  13. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,519
    That option in the segment builder will allow you to use the data sent from the User Attribute methods to build segments (since those methods aren't custom events, that's the only way to use that data).
     
    eppz likes this.