Update Remote Config Environment Names

An upcoming release of Remote Config will update Environments to improve functionality between Unity Game Services. These changes focus on the Environment Name. Environment IDs will remain unchanged and unaffected, as will all delivery of your Remote Config settings. You do not need to update the remote config package(s) in your existing projects or make changes to any existing builds after these changes have been made.

What do I need to know?

Remote Config allowed the Environment Name field to contain the UTF-8 Character set and allowed for users to choose the default environment. Going forward the Environment Name field will be restricted to only allow lower case alphanumeric characters, hyphens, and underscores.

[a-z, 0-9, -, _ ]

Additionally, there will be a requirement to have the default Environment named production. An Environment ID can be specified to access a specific environment just as it works currently.

For Legacy Package version users 1.0.x we will continue to support the Release and Development environment model; however, Release will be renamed to production.

What do I need to do?

For all Remote Config Customers that have environment names that do not meet the new constraints we will be modifying Environment Name to the limited character set after Friday, July 30 2021.

If your names are not updated, our team will adjust Environment Names that do not conform to the new standards as follows:

  1. The Environment that is marked as default will be renamed to production (all lower case characters).
  • Any existing environment named production that is not the default will have _migrated appended to the name, e.g. production_migrated
  1. Any environments with a space character in the name will have that space replaced with an underscore ‘_’.

  2. Any environments with non alphanumeric characters will be converted to migrated_env#.

  • For multiple environment names numbering will start at 1 and increment in order of EnvironmentID for the Project.
  1. Functionality for setting a default environment will be deprecated, and will utilize the environment name production as the default environment going forward. If a different environment is desired, the ability to pass an Environment ID is available and will be maintained to support this use case.

You are able to make these changes yourself to accommodate the new environment name scheme; if you would like to yourself. Please make the changes by Friday, July 30 2021.

These changes will allow for greater interoperability between Environments functionality that is already available, and planned in other Unity solutions. . We appreciate your understanding, and going forward to provide a more unified experience across our platform.

If you have any questions or require assistance please reach out through the forums to the Remote Config Team.

[UPDATE: Changed date from TBD to Friday July 30 2021]

1 Like

Hi,

Our setup is built on the assumption that the default environment is not production. This is specifically to avoid mistakes during development affecting our production environment. If I understand this right, the ability to default to a non-production environment is going away completely.
While I understand there must be a good reason for this internally, from the outside perspective this just seems like features (that we relied on) being cut, causing breaking changes, with one week’s notice during the summer vacation season no less.

I hope there was a very good reason for the rushed schedule on this.

Hi at_, thanks for your reply. We hear your concern, and I’d like to offer a bit of context for this change.

First, I should emphasize that this change will not break or alter your existing Remote Config settings delivery to your users. If you have a game build in the wild that requests settings from the default Environment, they will continue to retrieve the exact same settings after this change. If you have a game build that explicitly targets a non-default Environment ID, they will continue to retrieve the settings from that non-default Environment.

What is changing is that we are conforming Environment names so that the default environment is called “production” going forward, and also that any additional custom Environments conform to an alpha-numeric syntax naming scheme.

We are making this change so that Remote Config can take advantage of a Unity-wide Environments initiative that will be rolled out later this summer. Instead of managing Environments that only impact a single Unity cloud service, this will allow you to control Environments that span services. In order to coordinate with multiple Unity services (some of which have not yet integrated with this Environments initiative), we needed to standardize how we treat the “default”, so that all Unity services can expect the same thing for this user flow.

I hope this context helps - if you have more questions or concerns, please reply here or you can DM me and I can try and work out how we might be able to help with any particular challenges you have.

We also want to continue with our default environment not being production to avoid issues in development and staging from affecting live production.
Our environments used to be setup like:

  • dev (default)
  • staging
  • prod

Ahead of this change our workaround is to now have a true production environment called “prod” and avoid using the “production” environment.

  • production (default, don’t use this)
  • dev
  • staging
  • prod (this is real production)

Pretty confusing. Maybe “default” would be a better name for the default environment?

Hi dan_unity30

We are locked in with using production as the default environment name going forward.

Based on the environments you listed this is what the migration would look like:

Your Current Environments   | Environments Post Migration
dev (default) ->   production (default)
staging ->   staging
prod ->   prod

If you would like to keep the name dev, and have builds point to that environment you can reference it by the EnvironmentID, as it would not be the “default” environment served to builds that do not specify an EnvironmentID.

Hi again,

Thank you for the response, I see now that while the environments certainly get renamed in a potentially confusing manner, this shouldn’t break anything. However, I’d like to ask a question about a different affected use case.

Previously, the EnvironmentID-less configuration fetch call directed you to the current default. This enabled changing the entire environment of the built and released application simply by moving the default environment tag to a different environment.

This no longer seems possible, so what is the suggested replacement workflow? My first idea was applying a rule that changes all of these parameters based on a condition, but that condition would have to be a remote config setting in itself and that doesn’t seem to be possible. Is there an alternative workaround I’ve missed?

Can you share your current code? You mentioned, based on a condition. Couldn’t that “condition” be an EnvironmentID?

1 Like

Hi at_

I see a potential solution:

  1. Copy config settings from a non-default environment to the default production environment. This can be done manually, or we also support an API to automate the transfer of config settings between environments.

  2. Re-create any rules needed in that new environment manually - or using our APIs to automate the creation of these rules in the default production environment.

Our near term roadmap includes adding functionality to copy the contents of Environments between each other which will make transferring Settings, Rules, Campaigns to and from the default much easier.

EDIT: Added Links to the Docs

Hi,

@JeffDUnity3D , there’s no code to refer to other than a basic FetchConfigs call without an environmentID set. The “condition” in the previous workflow would’ve been the default tag, switching which config the game fetches with no environmentID set.
I suppose it could be possible to fetch a new environmentID as a setting from the default config and then refetch with the new environmentID. This would certainly allow retargeting a published game to different environments in production.

As for @tagh 's suggestion, If I understood this right, your idea would be to build tooling around the API to, rather than switch the environment the game points to, instead keep the environment static but replace all of its settings with the configs from other environments acting as templates.

This definitely sounds like it would work but does add management and tooling overhead compared to simply being able to point a live game at a different environment with a single click. It’s comforting to hear that functionality to improve this process is on the roadmap.

I understand that this is probably not a common use case so thank you for your patience in discussing these concerns.

Hello All.

We will be doing some work on our services today that will result in some downtime for CRUD operations. Delivery of settings will not be impacted.

When can I create the environment? It is still unavailable.

We expect environment creation be restored tomorrow, or this Friday at the latest. We apologize for the inconvenience - we will update this thread when service is fully restored.

The environment creation has been restored. Thank you.

Doesn’t work in dashboard or editor

Still not Work

Currently, even our old configs seem to be down.

On Pull action within Unity Remote Config tab:
Failed to fetch remote configurations: HTTP/1.1 500 Internal Server Error

Remote Config Environments tab within Unity Dashboard is also down:
Error Loading Environments
Please try again

Update:
The servers seem to be back up again! Thanks

Hello All,

The updates to the new Unity Environments Services have been completed for Remote Config.

Full environments functionality is available via the WebUI (Dashboard)

  • Create and Delete via the Dashboard

  • Only Owners and Manager of an Org can Create and Delete the Environments

  • Default is always production

  • Environments in your Runtime can be requested via the EnvironmentID

  • ConfigManager.SetEnvironmentID

  • Can get the Parameters such as EnvironmentID via the URL on the Dashboard

In this example screenshot.

EnvironmentID (Green Highlight) for the environment named development is: c116434e-fec3-11eb-9a03-0242ac130003

We are working to enable API access, and will be making updates to the Remote Config package.

Hello All,

When API access is restored and the Remote Config package is updated?

Are you using the API? Sorry I didn’t understand your question.

When Remote Config package is updated and issue with
Failed to fetch remote config: HTTP/1.1 502 Bad Gateway
HTTP/1.1 502 Bad Gateway
wiil be solved?