RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

server/commands - Camera & Input Commandsge_utils - Game Engine Utility Functionsmain.lua - GE Lua Entry Point & Game Loopmap.lua - Navigation Graph (AI Road Map)screenshot.lua - Screenshot Systemserver/server - Level Loading & Game ServerserverConnection - Client-Server Connection Manager`setSpawnpoint` - Default Spawn Point Persistence`simTimeAuthority` - Simulation Time & Bullet Time Control`spawn` - Vehicle Spawning & Safe Placement`suspensionFrequencyTester` - Suspension Natural Frequency Analysis

UI

Resources

BeamNG Game Engine Lua Cheat SheetGE Developer RecipesMCP Server Setup

// RLS.STUDIOS=true

Premium Mods for BeamNG.drive. Career systems, custom vehicles, and immersive gameplay experiences.

Index

HomeProjectsPatreon

Socials

DiscordPatreon (RLS)Patreon (Vehicles)

© 2026 RLS Studios. All rights reserved.

Modding since 2024

API ReferenceGE Extensions

server/commands - Camera & Input Commands

Reference for `server/commands.lua`. Provides camera management functions - switching between free/game cameras, positioning, and deprecated global camera accessors.

Reference for server/commands.lua. Provides camera management functions - switching between free/game cameras, positioning, and deprecated global camera accessors.


Exports

KeySignatureDescription
initCamera() → camInitializes the game camera, sets up render view
isFreeCamera() → boolReturns true if currently in free camera mode
setFreeCamera()Switches to free camera (also used by C++ side)
setGameCamera()Switches back to game/vehicle camera
toggleCamera(player)Toggles between free and game camera
dropCameraAtPlayer(player)Moves free camera to vehicle position
dropPlayerAtCamera(player)Teleports vehicle to camera position (with reset)
dropPlayerAtCameraNoReset(player)Teleports vehicle to camera (preserves physics state)
toggleFastSpeed(enabled)Camera fast-movement modifier (shift key)
changeCameraSpeed(val)Adjusts camera movement speed
getCameraTransformJson() → stringReturns [px,py,pz,rx,ry,rz,rw] JSON
setFreeCameraTransformJson(json)Sets free camera from JSON array
onNodegrabStart(usingPlayerVehicle)Switches to free camera for node grabbing
onNodegrabStop(usingPlayerVehicle)Restores previous camera after node grab
M.changeCameraSpeed(val)camera modifier for normal speed (typically alt+scrollwheel)
M.dropCameraAtPlayer(player)(No description available)
M.dropPlayerAtCamera(player)(No description available)
M.dropPlayerAtCameraNoReset(player)(No description available)
M.getCameraTransformJson()(No description available)
M.initCamera()(No description available)
M.isFreeCamera()(No description available)
M.onNodegrabStart(usingPlayerVehicle)(No description available)
M.onNodegrabStop(usingPlayerVehicle)(No description available)
M.setFreeCamera()function used by C++ side, if you rename or move, you need to edit C++ side too
M.setFreeCameraTransformJson(json)(No description available)
M.setGameCamera()(No description available)
M.toggleCamera(player)(No description available)
M.toggleFastSpeed(enabled)camera modifier for faster speed (typically shift key)
M.getCameravariableretrocompat
M.getGamevariableretrocompat
M.onSettingsChangedvariable(No description available)
M.setCameraFreevariableretrocompat
M.setCameraPlayervariableretrocompat

Deprecated Global Functions

These exist for backward compatibility and log deprecation warnings:

  • setCameraPosRot(), setCameraFovDeg/Rad/(), getCameraPosition(), getCameraUp(), getCameraRight(), getCameraForward(), getCameraQuat(), getCameraFovDeg/Rad/()

All redirect to core_camera.* equivalents.


Internals

  • Camera object: The game camera is scenetree.findObject("gameCamera"), a scene object managed by the render view system.
  • Free camera: Uses core_camera.setByName(0, 'free') - retains current position/rotation.
  • Vehicle drop: dropPlayerAtCamera computes rotation from camera forward vector (zeroing Z for level orientation), then uses vehicleSetPositionRotation.
  • No-reset drop: dropPlayerAtCameraNoReset uses setClusterPosRelRot to move the vehicle cluster without resetting physics, preserving damage/deformation state.

How It Works

Camera management is split between this module (high-level operations) and core_camera (low-level state). This module handles the user-facing operations like toggling cameras, placing vehicles, and providing backward-compatible global functions.

-- Toggle to free camera
commands.setFreeCamera()

-- Check mode
if commands.isFreeCamera() then
  -- Move vehicle to where camera is looking
  commands.dropPlayerAtCamera(0)
end

-- Get camera transform for serialization
local json = commands.getCameraTransformJson()
-- Returns: "[100.50, 200.30, 50.00, 0, 0, 0.707, 0.707]"

Exported Variables

  • getGame - Exported variable - initialized as getGame -- retrocompat
  • onSettingsChanged - Exported variable - initialized as onSettingsChanged
  • setCameraFree - Exported variable - initialized as setFreeCamera -- retrocompat
  • setCameraPlayer - Exported variable - initialized as setGameCamera -- retrocompat

Angular Overlay Pattern (Mod UI)

How to create a full-screen overlay UI (splash screen, popup, modal) from a mod that renders on top of everything in BeamNG's CEF UI.

ge_utils - Game Engine Utility Functions

Reference for `ge_utils.lua`. A large collection of global utility functions loaded at GE Lua startup - scenetree access, vehicle management, object creation, TorqueScript bridge, camera helpers, and

On this page

ExportsDeprecated Global FunctionsInternalsHow It WorksExported Variables