Skip to content

Configuration

All settings live in core_cinematics/config.lua. Defaults are tuned for a solid out-of-the-box feel — you rarely need to change anything except the permission name and, optionally, the recording radius.

Permissions & Locale

ACE Permission
Server-side gate for every editor action. Only players with this ACE (or the generic 'command' ACE) can open the editor.
Locale
Loads translations from locales/<name>.json. Ships with English — add your own JSON file to support another language.
lua
Config = {
    AcePerm = 'core_cinematics.use',   -- ACE permission required to open editor
    Locale  = 'en',                    -- File name in locales/ (without .json)
}

Timeline

lua
DefaultFPS  = 30,   -- Frames per second — timeline resolution
MaxDuration = 600,  -- Maximum timeline duration in seconds (10 min default)

TIP

DefaultFPS sets the timeline granularity, not the playback frame rate. Your actual in-game FPS while recording is whatever GTA renders — use OBS to capture at 60 FPS regardless of this value.

Camera Movement (Free-Fly)

Controls how the director camera moves while positioning a keyframe.

lua
MoveSpeed       = 12.0,  -- Base movement speed (units/sec)
MoveSpeedFast   = 60.0,  -- With SHIFT held (units/sec)
RotateSpeed     = 3.0,   -- Mouse look sensitivity (smooth, precise)
RotateSpeedFast = 8.0,   -- With SHIFT held (fast panning)
FovMin          = 5.0,
FovMax          = 120.0,
DefaultFov      = 50.0,
ControlAction
WASDMove horizontally
Space / CtrlUp / down
MouseLook
ShiftHold for fast movement & rotation
ScrollAdjust FOV
EnterSave camera position to keyframe
EscCancel positioning

Recording

Record Radius
Only vehicles and peds within this radius of the player at the moment of scan are captured. Anything outside is ignored.
Stop Key
Which GTA control ID ends the recording. Defaults to BACKSPACE. Full list at docs.fivem.net/docs/game-references/controls/
lua
RecordRadius      = 150.0,  -- Metres — capture every vehicle/ped within this range
PathDrawDistance  = 150.0,  -- Max distance keyframe paths are drawn in the 3D world
RecordingStopKey  = 177,    -- 177 = BACKSPACE · 191 = ENTER · 23 = F · 38 = E

Editor Behavior

lua
DisableTutorialByDefault = false,   -- true = "Enable tutorial" checkbox unchecked by default
AutosaveInterval         = 30000,   -- Autosave every N ms (30 s default)
CinematicBucket          = 69,      -- Routing bucket used for cinematic preview

INFO

The cinematic bucket isolates the director from ambient NPCs and traffic while editing — bucket lockdown is relaxed and population is disabled. If another resource on your server already owns bucket 69, change this to a free number.

Interpolation Defaults

Controls how the camera moves between keyframes. Each project remembers its own setting, but these are the defaults applied to new projects.

lua
DefaultInterpolationMode = 'eased',   -- 'native' | 'eased' | 'spline'
DefaultKeyframeEasing    = 'ease',    -- 'cut' | 'linear' | 'ease' | 'easein' | 'easeout'
ModeFeel
nativeGTA engine blending — smooth but shadows may lag behind the camera.
easedLinear path with per-keyframe ease curves. Most predictable, no overshoot.
splineCinematic. Hermite spline through all keyframes — organic, fluid arcs. Tension + Spring tune snap vs. flow.

Drift Smoke

Tire smoke automatically added to vehicles during cinematic playback when they drift or burnout. Also toggleable live on the director's current vehicle.

lua
DriftSmoke = {
    Enabled          = true,    -- Master switch — false disables all smoke
    PlayerThreadOn   = false,   -- Start the live player-vehicle smoke thread enabled?
    Density          = 7,       -- Particles spawned per bone per cycle (lower = subtler)
    Scale            = 0.12,    -- Particle size (lower = thinner haze)
    BackOnly         = true,    -- true = rear wheels · false = all 4 wheels
    -- Playback slip detection (not used by live thread)
    PlaybackMinSpeed = 3.0,     -- Below this m/s, drift case never fires
    PlaybackCosLimit = 0.94,    -- cos(slip angle) — raise toward 1.0 to require less slide
    BurnoutRpmHi     = 0.85,    -- RPM > this + low fwd speed = burnout
    BurnoutSpeed     = 12.0,    -- Burnout requires fwd speed below this (m/s)
    RedlineRpm       = 0.97,    -- Redline RPM always counts as wheel-spin
},

Weather Conflict Detection

The World & Scenery panel warns you when a weather/time-sync resource is running that could fight back against your cinematic world settings. Add or remove patterns to match your server.

lua
WeatherConflictPatterns = {
    'weathersync', 'weather%-sync', 'weather_sync',
    'easytime',    'easyweather',
    'vsync',       'vsyncr',
    'cd_easytime', 'cd_easyweather',
    'wasabi_weathersync',
    'qb%-weathersync', 'qbx%-weathersync',
    'es_extended_weather', 'rprogress_weathersync',
},

WARNING

If a weather sync resource is detected, stop it before recording or it will re-apply server weather every tick and overwrite your cinematic overrides.

Camera Shake Types

Dropdown entries shown in the keyframe Camera Shake panel. Uses GTA's built-in shake natives.

lua
ShakeTypes = {
    { id = 'HAND_SHAKE',                 label = 'Hand Shake' },
    { id = 'SMALL_EXPLOSION_SHAKE',      label = 'Small Explosion' },
    { id = 'MEDIUM_EXPLOSION_SHAKE',     label = 'Medium Explosion' },
    { id = 'LARGE_EXPLOSION_SHAKE',      label = 'Large Explosion' },
    { id = 'JOLT_SHAKE',                 label = 'Jolt' },
    { id = 'VIBRATE_SHAKE',              label = 'Vibrate' },
    { id = 'DRUNK_SHAKE',                label = 'Drunk' },
    { id = 'SKY_DIVING_SHAKE',           label = 'Skydiving' },
    { id = 'FAMILY5_DRUG_TRIP_SHAKE',    label = 'Drug Trip' },
    { id = 'DEATH_FAIL_IN_EFFECT_SHAKE', label = 'Death Fail' },
    { id = 'ROAD_VIBRATION_SHAKE',       label = 'Road Vibration' },
    { id = 'MOTORBIKE_SHAKE',            label = 'Motorbike' },
},

3D Text Fonts

Fonts available in the 3D Text panel dropdown. System fonts are used as-is; Google Fonts are loaded automatically in both the UI and the world billboard. Add your own entries — any valid Google Fonts stylesheet URL works.

lua
Fonts = {
    -- System (no download)
    { label = 'Arial',         family = 'Arial' },
    { label = 'Impact',        family = 'Impact' },
    -- Google Fonts
    { label = 'Bebas Neue',    family = "'Bebas Neue'", url = 'https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap' },
    { label = 'Cinzel',        family = "'Cinzel'",     url = 'https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700;900&display=swap' },
    -- ...50+ more ship by default (display, elegant, sci-fi, stylised, sporty)
},

Scene Editor Presets

Three lists populate dropdowns inside the Scene Editor panel. Extend them with anything valid for your server.

lua
-- Animations dropdown
PredefinedAnimations = {
    { label = 'Lean Wall',  dict = 'amb@world_human_leaning@male@wall@back@hands_together@idle_a', anim = 'idle_a' },
    { label = 'Smoke',      dict = 'amb@world_human_smoking@male@male_a@idle_a',                   anim = 'idle_a' },
    { label = 'Phone Call', dict = 'cellphone@',                                                   anim = 'cellphone_call_listen_base' },
    -- ...
},

-- Give-weapon dropdown
CommonWeapons = {
    { label = 'Pistol',        hash = `WEAPON_PISTOL` },
    { label = 'Assault Rifle', hash = `WEAPON_ASSAULTRIFLE` },
    { label = 'Baseball Bat',  hash = `WEAPON_BAT` },
    -- ...
},

Color Filters

Timecycle modifiers used by the keyframe Color Filter panel. 23 ship by default — add your own by pairing any GTA timecycle modifier name with a label.

lua
ColorFilters = {
    { id = 'none',        label = 'None',          timecycle = '' },
    { id = 'cinematic',   label = 'Cinematic',     timecycle = 'cinema' },
    { id = 'sepia',       label = 'Sepia',         timecycle = 'int_lesters' },
    { id = 'bw',          label = 'Black & White', timecycle = 'NG_blackout' },
    { id = 'nightvision', label = 'Night Vision',  timecycle = 'NVG' },
    { id = 'securitycam', label = 'Security Cam',  timecycle = 'scanline_cam_cheap' },
    -- ...
},

TIP

Timecycle modifier names are case-sensitive and must exist in GTA's timecycle data. Test new filters in-game before shipping them to your directors.