# Compiler Defines

realvirtual.io uses some compiler defines (also called Scripting Define Symbols) for managing different configurations. Compiler defines are switches which can be set to define which part of the C# source code are compiled or not. Sometimes it is necessary to use compiler defines to prevent unwanted compiler error messages.\
Which compiler defines needs to be set is depended on the Assets you purchased (realvirtual.io Starter, realvirtual.io Professional).

Most compiler defines are usually created automatically once you install the realvirtual.io Asset. You can reset the realvirtual.io settings, including the compiler defines, by selecting `Tools > realvirtual > Apply standard settings`:

![](https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-7705e4882cb9caee9c61a58b709d2c732656335b%2FrvStandardSetting.png?alt=media)

You can find the current compiler defines under *`File > Build Settings > Player Settings > Other Settings > Scripting Define Symbols:`*

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-b094cb835af56baa9b94a51ab6db654a7fce5364%2FrvPlayerSettings.png?alt=media" alt=""><figcaption><p><em><code>Compiler Defines (example setup - only use what is needed in your installation)</code></em></p></figcaption></figure>

{% hint style="info" %}
Some interfaces are needing special Complier Defines - this is mentioned on the Interface documentation page.
{% endhint %}

Here is a list and description of the used compiler defines. (before 2022 - GAME4AUTOMATION)

| Compiler Define                | Description                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `REALVIRTUAL`                  | Standard compiler define which needs to be set to enable realvirtual.io Standard and professional                                                                                                                                                                                                                                                                                                                   |
| `REALVIRTUAL_PROFESSIONAL`     | Compiler define which needs to be set only for realvirtual.io Professional. The standard setting of the compiler defines for realvirtual.io Professional is GAME4AUTOMATION; GAME4AUTOMATION\_PROFESSIONAL                                                                                                                                                                                                          |
| `REALVIRTUAL_PLAYMAKER`        | This compiler define needs to be set to be able to use the realvirtual.io Playmaker nodes. These nodes are only included in Professional version. You should set this define only if Playmaker is installed. See [https://github.com/game4automation/doc/blob/doc/advanced-topics/broken-reference/README.md](https://github.com/game4automation/doc/blob/doc/advanced-topics/broken-reference/README.md "mention") |
| `OPCUA4UNITY`                  | Compiler Define for [opcua](https://doc.realvirtual.io/components-and-scripts/interfaces/opcua "mention")                                                                                                                                                                                                                                                                                                           |
| `REALVIRTUAL_VISCUALSCRIPTING` | Compiler Define if Unity Visual Scripting package is installed and should be used by realvirtual.io. See [unity-visual-scripting](https://doc.realvirtual.io/components-and-scripts/defining-logic/unity-visual-scripting "mention")                                                                                                                                                                                |
| `CINEMACHINE`                  | Compiler Define if Unitys Cinemachine is installed and should be used.                                                                                                                                                                                                                                                                                                                                              |
| `REALVIRTUAL_AGX`              | Turns on AGX Phyisics simulation capabilites in realvirtual.io if AGX Unity Plugin is installed                                                                                                                                                                                                                                                                                                                     |
| `REALVIRTUAL_BESTHTTP`         | Needed for BestHTTPV2 based interfaces like [twincat-hmi](https://doc.realvirtual.io/components-and-scripts/interfaces/twincat-hmi "mention") or [mqtt](https://doc.realvirtual.io/components-and-scripts/interfaces/mqtt "mention")                                                                                                                                                                                |
| `REALVIRTUAL_BESTMQTT`         | Needed for BESTMQTT v1 base interfaces like [mqtt](https://doc.realvirtual.io/components-and-scripts/interfaces/mqtt "mention")                                                                                                                                                                                                                                                                                     |
| `REALVIRTUAL_JSON`             | Needed for JSON based interfaces like [twincat-hmi](https://doc.realvirtual.io/components-and-scripts/interfaces/twincat-hmi "mention")                                                                                                                                                                                                                                                                             |
| `REALVIRTUAL_BESTHTTP3`        | Needed for BestHTTP V3 based interfaces like [twincat-hmi](https://doc.realvirtual.io/components-and-scripts/interfaces/twincat-hmi "mention") or [mqtt](https://doc.realvirtual.io/components-and-scripts/interfaces/mqtt "mention")                                                                                                                                                                               |
| `REALVIRTUAL_BESTMQTT3`        | Needed for BESTMQT V3 based interfaces like [mqtt](https://doc.realvirtual.io/components-and-scripts/interfaces/mqtt "mention")                                                                                                                                                                                                                                                                                     |
| REALVIRTUAL\_CUTTER            | For the use of [Cutter ](https://doc.realvirtual.io/components-and-scripts/changing-mus/cutter)component                                                                                                                                                                                                                                                                                                            |
| REALVIRTUAL\_TEST              | Needs to be set if [Test automation](https://doc.realvirtual.io/advanced-topics/for-developers/testing) should be used and Unity Test Framework is installed.                                                                                                                                                                                                                                                       |
| REALVIRTUAL\_BURST             | Needs to be set if Contact Detection should be used in the [Kinematic Tool](https://doc.realvirtual.io/basics/user-interface/kinematic-tool-pro) and if Unity Burst Compiler package is installed.                                                                                                                                                                                                                  |

\\
