RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Ambient SoundUI Apps ManagerUI AudioBindings LegendCamera Distance AppDeveloper ConsoleCredits MusicExternal WebSocket ServerFade ScreenGame BlurGameplay App ContainersGrid SelectorLivery EditorMessages DebuggerMessages/Tasks App ContainersMission InfoPolice InfoTop BarUI ModsNavigation Map DataVehicle Paint EditorVehicle Vicinity AppUI Visibility
Gameplay SelectorTile 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

See Also

  • Gameplay Selector - General - Related reference
  • Tile Clustering - Related reference
  • Tile Sorting - Related reference
  • UI System Guide - Guide

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 ExportsSee Also