RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Gameplay AchievementGameplay CityDiscoverForce FieldGarage ModeMarker InteractionParking SystemGameplay Playmode MarkersGameplay PoliceGameplay RallyGameplay Rally LoopGameplay Raw POIsGameplay Skidpad TestSpeed Trap LeaderboardsSpeed Traps and CamerasGameplay StatisticsTaxi Ride SystemTraffic SystemVehicle PerformanceWalking
Locations DetectorMission ManagerMissionsMission Screen UIPOI TestProgressMission Start TriggerUnlocks
Base MissionEditor HelperFlow Mission

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 ExtensionsgameplaymissionsmissionTypes

Base Mission

Reference for the base mission type, the simplest mission class providing minimal lifecycle hooks. Returned by `gameplay_missions_missions.baseMission()`.

Reference for the base mission type, the simplest mission class providing minimal lifecycle hooks. Returned by gameplay_missions_missions.baseMission().


Module Export

Returns a constructor function (derivedClass, ...) that creates a mission instance:

return function(derivedClass, ...)
  local o = ... or {}
  setmetatable(o, C)
  C.__index = C
  o:init()
  for k, v in pairs(derivedClass) do
    o[k] = v
  end
  local init = o:init()
  return o, init
end

Class C - Instance Methods

MethodSignatureDescription
initC:init()Sets missionTypeLabel and progressKeyTranslations
getProgressKeyTranslationC:getProgressKeyTranslation(progressKey) → stringTranslates progress key to display label
onStartC:onStart()Called when mission starts (no-op)
onUpdateC:onUpdate(dtReal, dtSim, dtRaw)Called each frame (no-op)
onStopC:onStop(data)Called when mission stops (no-op)

Internals

  • Sets self.missionTypeLabel to "bigMap.missionLabels." .. self.missionType
  • Default progress key translations: {default = "missions.progressKeyLabels.default", custom = "missions.progressKeyLabels.custom"}
  • The derived class fields are merged onto the instance after init(), allowing overrides
  • init() is called twice: once before merging derived class, once after

How It Works

-- Usage in a mission type constructor:
local C = {}
-- Define custom methods...
function C:onStart()
  -- Custom start logic
end

-- Use baseMission as the foundation:
return function(...)
  return require('/lua/ge/extensions/gameplay/missions/missionTypes/baseMission')(C, ...)
end

Key Behaviors

  • This is the minimal mission type - no flowgraph, no traffic, no vehicle management
  • For flowgraph-based missions, use flowMission which extends this with FG manager support
  • All lifecycle methods are no-ops by default, designed to be overridden by derived mission types

See Also

  • missionTypes/editorHelper - Mission Editor UI Element System - Related reference
  • missionTypes/flowMission - Flowgraph-Based Mission Type - Related reference
  • Gameplay Systems Guide - Guide

Unlocks

Reference for `gameplay_missions_unlocks`, which evaluates start/visible conditions, manages unlock dependencies between missions, and computes mission ordering depth.

Editor Helper

Reference for the editor helper class that provides a rich set of UI elements for editing mission type data in the mission editor. This is the backbone of all mission editor panels.

On this page

Module ExportClass C - Instance MethodsInternalsHow It WorksKey BehaviorsSee Also