> For the complete documentation index, see [llms.txt](https://documentation.rcore.cz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.rcore.cz/paid-resources/rcore_dance/configuration.md).

# Configuration

`rcore_dance\config.lua` - main configuration file, where every configurable value is properly described.

### 🛠️ Debug

If you see anything wrong and you would like to know more, for example to show in support ticket, you can set `Config.Debug = true` to see more debug info in client (F8) console ingame, or server console.

### 💬 Language

Change value `Locale` to any of the available languages listed on the same row.

To add your own language, go to `rcore_dance\locales`, copy `en.lua` and translate the values inside. Name the new file to your country code (e.g. `fr.lua` for French), save it and change it in `config.lua`.

### 🔎 Configuration preview

<details>

<summary>config.lua</summary>

```lua
Config = {
    Debug = false, -- turn this on if you are experiencing any issues and want to see more output in F8 console
    DebugLevel = {
        'INFO',
        'CRITICAL',
        'WARNING',
        'SUCCESS',
        'ERROR',
        'DEBUG',
        -- 'MENU', -- uncomment this if you want to also see debug output of the minigame menu
    },
    Locale = 'en', -- Available languages: en, de, es, it, tr

    Minigame = {
        StartCountdown = 3,         -- Countdown before starting minigame | in seconds, min 3, max 10, default = 3
        WalkBackDistance = 0.3,     -- Minimal distance player has to be away from dance mat to automatically walk back | in meters, min 0.3
        StopDistance = 3.0,         -- Distance player has to be from dance mat to stop minigame | in meters, min 0.1, default 3.0
        DanceMatCheckInterval = 2,  -- How often to check for other players' dance mats | in seconds, min 1, max 5, default = 2
        DanceMatCheckDistance = 30, -- Distance in which you will see other players' dance mats | in meters, min 5, max 300, default = 30
        DefaultVolume = 0.3,        -- Default song volume | min 0.1, max 1.0, default = 0.3
        BaseSpeed = 67,             -- Default speed of minigame | min 50, max 200, default = 67, recommended 60-90 for optimal experience
        UrlValidationTimeout = 10,  -- Timeout for validating song URL | in seconds, min 1, max 60, default = 10
        MusicBarBottomMargin = 0,   -- Indentaion of music bar from bottom of the screen (useful if you have UI covering it) | min 0, max 100, default = 0
    },

    Session = {
        MinPlayers = 2,                -- Min amount of players to start minigame | min 2, max 24; default = 2
        MaxPlayers = 8,                -- Max amount of players to start minigame | min 2, max 24; default = 8
        InviteTimeout = 30,            -- Time to cancel player's invite | in seconds, min 30; max: 300; default = 60
        InviteRadius = 10.0,           -- Radius in which other players need to be to get invited into dance battle | in meters, min 5.0; max 15.0; default = 5.0
        ShowPlayerId = true,           -- Show player's ID in session lists | default = true
        ShowPlayerInviteMarker = true, -- Show marker above player's head when they are invited | default = true
        PlayerInviteMarkerColor = {    -- Color of indicator above player when in invite menu | default = pink
            r = 209,
            g = 52,
            b = 180,
            a = 160
        },
    },

    Commands = {
        StartMinigame = 'dance',         -- Command to start minigame | default = 'dance'
        AcceptInvite = 'dance_accept',   -- Command to accept dance battle invite | default = 'dance_accept'
        DeclineInvite = 'dance_decline', -- Command to decline dance battle invite | default = 'dance_decline'
    },

    Animations = {
        EnabledAll = true, -- Enable all animations | default = true

        PutdownMat = {     -- Animation for putting down dance mat
            enabled = true,
            dict = 'pickup_object',
            name = 'pickup_low',
        },
        PickupMat = { -- Animation for picking up dance mat
            enabled = true,
            dict = 'pickup_object',
            name = 'pickup_low',
        },
    },

    Camera = {
        Shake = {                         -- Settings for shaking camera while dancing
            enabled = true,
            minShake = 0.1,               -- Minimal shake intensity | default = 0.1
            maxShake = 1.0,               -- Maximal shake intensity | default = 1.0
            increaseEffectEnabled = true, -- Enable screen effect that is shown after shake is increased
            increaseEffect = 'DefaultFlash',
            decreaseEffectEnabled = true, -- Enable screen effect that is shown after shake is decreased
            decreaseEffect = 'SwitchHUDMichaelOut',
        },
    },

    Thresholds = {
        Combo = {
            danceSpeedIncrease = 5,  -- Increase dance speed after reaching this combo | default = 5
            danceSpeedDecrease = 5,  -- Decrease dance speed after reaching this combo | default = 5
            danceMoveChange = 5,     -- Change dance move after reaching this combo | default = 5
            cameraShakeIncrease = 5, -- Increase camera shake after reaching this combo | default = 5
            cameraShakeDecrease = 3, -- Decrease camera shake after reaching this combo | default = 3
        },
    },

    Menu = {
        -- MENU POSITIONS: top-left | top-right | bottom-left | bottom-right
        -- HELPKEYS POSITIONS: top-left | top-right | bottom-left | bottom-right
        MinigameSettings = {
            menuPosition = 'top-left',     -- Minigame settings menu position
            helpKeysPosition = 'top-right' -- Help keys position for minigame settings menu
        },
        Minigame = {
            helpKeysPosition = 'bottom-left' -- Help keys position for minigame controls
        }
    },

    Keys = {
        -- ❗ All available keyNames can be found here (HTML keynames, not GTA!):
        -- https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values
        Minigame = {
            EndMinigame = {
                keyName = 'Backspace',
            },
            ChangeDanceStyle = {
                keyName = 'WheelUp',
            },
            IncreaseVolume = {
                keyName = '+',
            },
            DecreaseVolume = {
                keyName = '-',
            },
        },
        Freestyle = {
            ChangeDanceMove = {
                keyName = 'WheelDown',
            },
            ChangeDanceSpeed = {
                keyName = 'W',
            },
        }
    },

    DanceAnywhereWithDanceMat = true, -- Allow dancing anywhere with dance mat even if not in a dance zone | default = true
    DanceAllowedZones = {             -- Dance zones you can dance in (night club etc.), if empty, you can dance anywhere
        -- Example dance zone:
        -- {
        --     coords = vec3(-123.1, -123.2, 123.3),
        --     radius = 3.0,
        -- },
    },

    -- integration to statistics and achievements system https://store.rcore.cz/package/6273968
    RCoreStatsIntegration = GetResourceState('rcore_stats') ~= 'missing',
}

```

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.rcore.cz/paid-resources/rcore_dance/configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
