# Essential Functions

## `~_Init(spatialDistanceScale, timestep)`

**Returns:** N/A (`undefined`)

|Argument              |Datatype|Description                                                                                                 |
|----------------------|--------|------------------------------------------------------------------------------------------------------------|
|`spatialDistanceScale`|number  |3D Volume scaling factor. Higher numbers make sounds that are further away quieter. A recommended value is `50`|
|`timestep`            |number  |Number of seconds expected to pass for each call to `FAudio_Update()`. This is usually `1/fps`              |

!> `FAudioGMS_Init()` must be called once at the very start of your game. If in doubt, place the `AUDIO` object in the first room in your game.

 

## `~_Update()`

**Returns:** N/A (`undefined`)

|Argument|Datatype|Description|
|--------|--------|-----------|
|None    |        |           |

!> `FAudioGMS_Update()` must be called once every frame, usually in the Step event of a persistent instance. Ensure that this instance doesn't get deactivated if you're using instance deactivation for e.g. a pause screen. If in doubt, place the `AUDIO` object in the first room in your game.

 

## `~_Destroy()`

**Returns:** N/A (`undefined`)

|Argument|Datatype|Description|
|--------|--------|-----------|
|None    |        |           |

This will automatically free all memory allocated by FAudioGMS. All FAudioGMS-related IDs are invalid after this function is called. Calling any FAudioGMS function after `FAudioGMS_Destroy()` is called will do nothing.