# Platform Variables

The ONE Game Hosting service has a feature called Platform Variables, which can be used for configuration of your applications. Platform variables come in two types:

* variables pre-defined by the platform
* user defined variables

These variables can be used inside the `startupParameters` property of an [ApplicationBuild](https://docs.i3d.net/game-hosting/elements/application/applicationbuild) and inside configuration files ([ApplicationBuildConfiguration](https://docs.i3d.net/game-hosting/elements/application/applicationbuildconfiguration) elements), submitted for an ApplicationBuild. Examples are provided near the end of this page.

## Platform defined variables

The platform supplies a number of predefined variables:

| Variable name                | Description                                                                                                                                       |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| VARSERVERID                  | The ID of the (physical or virtual) server an application is deployed on                                                                          |
| VARHOSTID                    | The ID of the host an application is deployed on                                                                                                  |
| VARHOSTNAME                  | The hostname of the host an application is deployed on                                                                                            |
| VARPLAYERS                   | Maximum number of players allowed on a game server                                                                                                |
| VARCONTINENT                 | The name of the continent in which the host is located                                                                                            |
| VARCOUNTRYCODE               | The ISO 3166-1 alpha-2 code of the country in which the host is located                                                                           |
| VARCOUNTRY                   | The full name of the country in which the host is located                                                                                         |
| VARDCLOCATIONID              | The ID of the data center location in which the host is located                                                                                   |
| VARDCLOCATION                | The name of the data center location in which the host is located                                                                                 |
| VARDEPLOYMENTENVIRONMENTID   | The ID of the DeploymentEnvironment of this ApplicationInstance                                                                                   |
| VARDEPLOYMENTENVIRONMENTNAME | The name of the DeploymentEnvironment of this ApplicationInstance                                                                                 |
| VARREGIONID                  | The identifier of the DeploymentRegion in which the host is located                                                                               |
| VARREGIONNAME                | The name of the DeploymentRegion in which the host is located                                                                                     |
| VARPROVIDER                  | The name of the owner of the (physical or virtual) server (e.g. i3D.net, GCP, AWS, etc.)                                                          |
| VARFLEETID                   | The identifier of the Fleet in which the host is located                                                                                          |
| VARFLEETNAME                 | The name of the Fleet in which the host is located                                                                                                |
| VARAPPLICATIONID             | The identifier of the Application element belonging to the ApplicationInstance that is being deployed                                             |
| VARAPPLICATIONBUILDID        | The identifier of the ApplicationBuild element that is being deployed                                                                             |
| VARAPPLICATIONINSTANCEID     | The ID of the ApplicationInstance that's being deployed                                                                                           |
| VARIPV4PRIVATE               | RFC-1918 IPv4 address of the host an application is deployed on                                                                                   |
| VARIPV4PUBLIC                | Public IPv4 address of the host an application is deployed on                                                                                     |
| VARIPV4BINDING               | IPv4 address that should be used by an application to bind on (e.g. a cloud VM will locally only see the host's private IP and not the public IP) |
| VARIPV6                      | IPv6 address of the host an application is deployed on                                                                                            |
| VARIPV6BINDING               | IPv6 address that should be used by an application to bind on (e.g. a cloud VM will locally only see the host's private IP and not the public IP) |

Table 1: Platform defined VARiables

## User defined variables

Alongside the platform defined VARiables, there are also custom ones that are derived from [ApplicationProperty](https://docs.i3d.net/game-hosting/elements/application/applicationproperty) elements. For each ApplicationProperty, a VARiable is generated. Some examples of this:

For a property named `game_port`, a VARiable named `VAR_GAME_PORT` is generated. For a property named `managementport`, a VARiable named `VAR_MANAGEMENTPORT` is generated. For a property named `management_password`, a VARiable named `VAR_MANAGEMENT_PASSWORD` is generated.

As you may already see, there is a visual difference between platform-defined VARiables and custom ones. The custom ones have the prefix `VAR_` (with an underscore), whereas the platform-defined ones lack the underscore.

All VARiables are in upper case.

Please note that startParameters VAR must have quotations surrounding it when using JSON:

```
{
 "startParameters": "dclocation: \\\"<YOUR PARAMETER>\\\" regionId:2434242"
}
```

## Examples

An example of VAR usage inside [ApplicationBuild](https://docs.i3d.net/game-hosting/elements/application/applicationbuild).startupParameters:

`-ip VARIPV4BINDING -port VAR_GAME_PORT -arcusport VAR_MANAGEMENTPORT -name "Bluewolf VAR_GAME_PORT" -applicationInstanceId VARAPPLICATIONINSTANCEID -maxplayers 8`

An example of VAR usage inside [ApplicationBuildConfiguration](https://docs.i3d.net/game-hosting/elements/application/applicationbuildconfiguration).configContent:

```
// Server name
hostname=Bluewolf VARAPPLICATIONINSTANCEID

// Arcus management passsword
arcus_password=VAR_MANAGEMENT_PASSWORD

// Server password
srv_password=VAR_SRVPASSWORD

// etc
```

You can concatenate VARiables if you want - they do not have to be separated by a space:

`-regionIdent VARREGIONNAME-VARAPPLICATIONINSTANCEID`

It will even work without a glue character:

`-regionIdent VARREGIONNAMEVARAPPLICATIONINSTANCEID`

!!! Warning "Underscore is not a glue character"

```
    Remember `_` is a character that can exist in a VAR name, so **this will not work**: `-regionIdent VARREGIONNAME_VARAPPLICATIONINSTANCEID`
```
