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/ambientSound - Ambient Sound Stream PlayerUI Apps ManagerUI AudioBindings LegendCamera Distance AppConsole (consoleNG)Credits MusicExternal App (WebSocket UI Server)Fade ScreenGame BlurGameplay App ContainersGrid SelectorLivery EditorMessages DebuggerMessages/Tasks App ContainersMission InfoPolice InfoTop BarUI ModsUI Navigation / MapVehicle Paint EditorVehicle Vicinity AppUI Visibility
Gameplay Selector - GeneralTile ClusteringGameplay Selector TilesTile Sorting

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 ExtensionsuigameplaySelector

Gameplay Selector Tiles

Main tile processing module - handles path-based navigation, grouping, clustering, filtering, and sorting for the gameplay grid.

Main tile processing module - handles path-based navigation, grouping, clustering, filtering, and sorting for the gameplay grid.


Overview

ui_gameplaySelector_tiles is the core tile processing engine. It routes navigation paths to handlers, groups items by mode (system/type/level), applies clustering, manages special groups (favourites/recent), and sorts results for the UI.

Extension path: lua/ge/extensions/ui/gameplaySelector/tiles.lua

Dependencies: Dynamically discovers tile generators in tileGenerators/ folder.


Exports (M)

FunctionSignatureDescription
getTiles(path, backend)Main entry - returns grouped tile data for a navigation path.
getUiData()Returns backend name, group/sort functions, and sorting module.
emptyProfiler()Returns a no-op profiler instance.

Internals

Path Routing

Path TypeHandlerDescription
allGameplayhandleAllGameplayPathFull grid with grouping + clustering
detailGameplayhandleDetailGameplayPathDrilled-in view for a specific cluster

All Gameplay Path

  1. Filters items via backend.passesFilters()
  2. Groups items by groupMode (system, type, level, none)
  3. Creates special Favourites/Recent groups if enabled
  4. Applies clustering within each group via tileClustering
  5. Sorts tiles per group using tileSorting
  6. Sorts groups by system order or alphabetically
-- Group mode determines the primary grouping key
local groupModeFunctions = {
  Type = function(item) return item.type or "Other..." end,
  System = function(item) return item.system or "Other..." end,
  -- ...
}

Special Groups (Favourites & Recent)

Display modes for special groups:

  • hidden - not shown
  • reducedClusters - items added directly to the group
  • completeClusters - cluster tiles duplicated into the group
  • unclustered - individual items without clustering

Recent groups are limited to 15 tiles and sorted by recency.

Detail Gameplay Path

Handles drill-down into a specific cluster. Path format:

detailGameplay / clusterMode / clusterKey / groupKey / groupName / metaMode

Items are filtered by cluster/group membership plus optional Favourites/Recent meta mode. A default tile is selected (default spawnpoint or first item).

Tile Generator Discovery

Generator files are auto-discovered from tileGenerators/ and registered as dependencies:

local generatorFiles = FS:findFiles('lua/ge/extensions/ui/gameplaySelector/tileGenerators/', '*.lua', 1)

How It Works

  1. UI calls getTiles({keys = {"allGameplay"}}, backend)
  2. Backend reference is set, clustering module gets backend for favourite queries
  3. Items are filtered → grouped → clustered → tiles created
  4. Each group's tiles are sorted (automatic, name, or date)
  5. Groups are sorted and empty groups removed
  6. Result is a list of {key, label, tiles, order} groups for the grid UI

Additional Exports

The following exports are available but not yet documented in detail:

  • M.dependencies
  • M.getTiles
  • M.getUiData

Tile Clustering

Groups gameplay items into clusters by level, type, or automatic system-based rules, and creates summary tiles for the grid UI.

Tile Sorting

Centralized sorting module for gameplay selector tiles - supports name, system, date, and automatic multi-criteria sorting.

On this page

OverviewExports (M)InternalsPath RoutingAll Gameplay PathSpecial Groups (Favourites & Recent)Detail Gameplay PathTile Generator DiscoveryHow It WorksAdditional Exports