Repository navigation
Configuration Reference
Static configuration lives in lua/ge/extensions/taxiDriver/config.lua. Values are loaded once by the main GE extension. Runtime state does not belong in this module.
en, de, fr, es, it, pl, pt-BR, uk, ru, zh-CN
| Key | Value | Unit / meaning |
|---|---|---|
minRideDistance |
1,000 | metres |
maxRideDistance |
25,000 | metres |
minPickupDistance |
400 | metres |
maxPickupDistance |
3,500 | metres |
arrivalRadius |
14 | metres |
passengerPickupRadius |
10 | metres; logical passenger pickup only |
maxArrivalSpeedKmh |
0.5 | km/h wheel-speed sensor tolerance; AI targets zero |
averageCitySpeedKmh |
40 | ETA reference speed |
minimumDrivability |
0.7 | route/road cutoff |
hudUpdateInterval |
0.2 | real seconds |
boardingDuration |
3 | simulation seconds |
alightingDuration |
3 | simulation seconds |
completedDuration |
4 | simulation seconds |
stopWaitingDuration |
10 | simulation seconds |
forcedExitDuration |
5 | simulation seconds |
AI Driver also stores a master enabled flag. It defaults to false; the UI requires an experimental-feature confirmation before writing true.
| Setting | Default | Range |
|---|---|---|
uiScalePercent |
100% | 80–180% in 10% steps |
appVolume |
0.65 | 0–1 |
initialFuelPercent |
5% | 5–30%, integer; new combustion-fuel records only |
dynamicZoomIntensity |
100% | 0–200% |
overspeedWarningKmh |
10 km/h | 0–30 km/h |
economyMultiplier |
1.00× | 0.25–5.00× |
deliveryOrderSharePercent |
50% | 0–100% |
unlimitedRouteDistance |
false | Boolean; removes the 25 km upper bound |
aiDriver.aggressionPercent |
40% | 30–100% |
aiDriver.followingTimeGap |
2.3 s | 1–4 s |
aiDriver.minimumFollowingDistance |
4 m | 2–10 m |
aiDriver.brakingDeceleration |
3.5 m/s² | 2–8 m/s² |
aiDriver.trafficWaitSeconds |
3 s | 1–10 s |
aiDriver.preset |
balanced |
novice, cautious, balanced, assertive, racer, custom
|
aiDriver.obeySpeedLimits |
true | Boolean |
aiDriver.laneDiscipline |
true | Boolean |
aiDriver.strictGpsRoute |
false | Boolean; independent from the preset |
aiDebugLogging |
false | Boolean; streams dedicated AI JSONL diagnostics |
randomEvents.<event>.enabled |
Event-specific | Boolean |
randomEvents.<event>.chancePercent |
Event-specific | 0–100% |
randomEvents.policeCheck.preloadConfirmed |
false | Must be true before police preload is allowed |
fleet.enabled |
true | Boolean |
fleet.aiPreset |
standard |
careful, standard, or fast
|
fleet.ownerSharePercent |
35% | 10–90% |
fleet.hiringFee |
$75 | $0–1,000 |
fleet.wagePerTenMinutes |
$12 | $0–250 |
fleet.maxDrivers |
6 | 1–12 |
fleet.worldLabelDistance |
400 m | 50–1,000 m in 50 m steps |
fleet.minimumJobDistanceKm |
1.5 km | 0.5–20 km |
fleet.maximumJobDistanceKm |
8 km | minimum–50 km |
fleet.passengerJobs / deliveryJobs
|
true / true | At least one remains enabled |
lanManualAddress |
Empty | Optional private LAN IPv4 address; normalized and bind-tested before use |
externalMapEnabled |
true | Boolean |
externalTerrainEnabled |
true | Boolean |
externalMapQuality |
balanced |
eco, balanced, or smooth
|
godMode |
false | Boolean |
debugLogging |
true | Boolean |
routePlanner.isDistanceAllowed() receives no maximum when unlimited routes are enabled. Minimum passenger/delivery distances and drivability checks are unchanged.
The native adapter has a small set of fixed safety rules:
| Value | Current behavior |
|---|---|
| Player observer interval | 100 ms |
| Curved-path samples | 12 |
| Observer jerk limit | 2.5 m/s³ |
| Emergency threshold | TTC below 0.55 s or required deceleration at least 8.5 m/s² |
| Pickup radius | 7 m plus complete stop |
Premature Route Done retries |
3 |
| Horn sequence | 600 ms on, 200 ms off, 600 ms on |
The old predictive planner, local spatial graph, custom bypass, reverse escape and world visualization constants are retained only in historical release notes and are not part of the active 5.0.2 runtime. See AI Driver Engine 0.39 and AI Driver and Recovery.
Fleet workers use fixed profiles rather than the player's six-profile/Custom editor. They apply only native aggression/legal-speed values and the following/braking values used by the reduced-rate traffic guard.
| Preset | Native aggression | Native speed mode | Effective no-progress window | Replans |
|---|---|---|---|---|
careful |
20% | Legal | 45 s minimum | 3 |
standard |
30% | Legal | 45 s minimum | 3 |
fast |
52% | Unrestricted | 45 s minimum | 3 |
All Fleet workers use native avoidCars="on", driveInLane="on", recover-on-crash, and enabled electrics. Traffic observation runs every 200 ms with six curved-path samples. Route monitoring runs every 250 ms with per-worker phase offsets. A retry starts from the current closest road segment, and an assignment is abandoned after the bounded retry budget.
See Fleet Operations for hiring, wages, assignments, persistence, and worker lifetime.
| Key | Value | Meaning |
|---|---|---|
initialDelay |
0.15 s | Delay before first generation job |
intervalMin / intervalMax
|
0.25 / 0.5 s | Delay between completed offers |
generationStepInterval |
0 s | No additional resume cooldown |
generationMaxResumes |
16 | Maximum coroutine resumes per scheduler step |
generationTimeBudgetSeconds |
0.001 s | Cooperative work budget; cannot interrupt native calls |
generationMaxJobSeconds |
8 s | Offer-job timeout; planner cache warmup survives it |
graphCandidateAttempts |
64 | Bounded graph candidate search |
semanticScanBatchSize |
6 | Objects processed before yielding |
semanticCandidateAttempts |
40 | Bounded semantic candidates per stop search |
randomRouteAttempts |
24 | Bounded graph-derived fallback attempts |
semanticLongitudinalJitterMax |
70 m | Maximum variation along a semantic road segment |
randomDistanceExponent |
1.15 | Random route-distance distribution |
recentStopLimit |
48 | Remembered roadside points |
recentStopSeparation |
150 m | Preferred separation from recent points |
routeDiversityMinimumShare |
0.65 | Pool share requiring strict endpoint diversity |
routeDiversityAttempts |
3 | Candidate routes checked per normal offer |
routeDiversityCellSize |
400 m | Spatial route-history cell size |
routeDiversityEndpointSeparation |
280 m | Minimum endpoint separation under strict checks |
recentRouteLimit |
20 | Remembered accepted/generated route pairs |
minVisible / maxVisible
|
10 / 12 | Dispatcher pool target |
nextOfferDuration |
5 s | Floating offer lifetime |
nextOfferRetryMin / Max
|
5 / 10 s | Retry after expiry/failure |
nextOfferProgressThreshold |
0.80 | Route progress required for floating offers |
pickupTimeMultiplier |
1.35 | Pickup ETA multiplier |
pickupTimeGraceSeconds |
60 s | Added pickup grace |
pickupTimeMinSeconds / Max
|
120 / 600 s | Pickup budget clamp |
multiStopChance |
0.24 | Random unplanned type chance |
multiStopVisibleMin / Max
|
2 / 3 | Requested pool composition |
rushVisibleMin / Max
|
2 / 4 | Requested pool composition |
multiStopCountMin / Max
|
2 / 2 | Intermediate stop count |
multiStopMinimumCandidates |
20 | Semantic candidates required |
multiStopSegmentMin / Max
|
3,000 / 7,000 m | Normal leg range |
multiStopRouteAttempts |
18 | Attempts per special leg |
generationFailureBackoffMin / Max
|
4 / 7 s | Backoff after repeated failures |
rushChance |
0.28 | Random unplanned type chance |
rushBonusMin / Max
|
0.22 / 0.42 | 22–42% bonus |
rushTimeRatioMin / Max
|
0.72 / 0.86 | Normal ETA fraction |
| Key | Value |
|---|---|
baseFare |
$3.25 |
farePerKm |
$1.55 |
farePerMinute |
$0.20 |
ratingBonusThreshold |
3.99 |
maxRatingBonus |
0.15 |
maxTotalPenalty |
0.50 |
ratingPenaltyScale |
8 |
collisionRatingPenalty |
0.15 |
minimumRideRating |
1 |
| Key | Value |
|---|---|
pickupLateBasePenalty |
0.05 |
pickupLatePenaltyPerSecond |
0.000333 |
maxPickupLatePenalty |
0.12 |
| Key | Value |
|---|---|
calmPenaltyIgnoreMaximum |
0.70 |
calmPenaltyMultiplierThreshold |
50 |
passengerStressThresholdMinimum |
72 |
passengerStressThresholdCalmBonus |
23 |
passengerMoodMaximumGain |
40 |
passengerMoodPerfectRideGain |
40 |
passengerMoodStressRecovery |
0.8 |
passengerMoodPickupLateLoss |
4 |
passengerMoodPickupLateStepLoss |
2 |
passengerMoodSpeedingBaseLoss |
2 |
passengerMoodCollisionBaseLoss |
10 |
passengerMoodAggressionBaseLoss |
4 |
passengerMoodRushExpiredLoss |
6 |
Home labels map to existing IDs: Relaxed = elementary, Easy = easy, Standard = standard, Hardcore = professional; custom remains supported. Relaxed bypasses monetary, rating and cargo-damage penalties and retains the rush bonus after expiry. Its component thresholds below are retained configuration values, not effective charges. Easy shares a 10% estimated-fare budget across direct fines and fare reductions, rounded to cents, and clamps completed-ride ratings to at least 4.75.
| Preset | Fixed tolerance | Ratio tolerance | Grace | Rate | Configured max |
|---|---|---|---|---|---|
| Elementary | 15 km/h | 25% | 6 s | 0.00025 | 6% |
| Easy | 11 km/h | 20% | 4.5 s | 0.00015 | 2.5% |
| Standard | 8 km/h | 15% | 3 s | 0.0008 | 15% |
| Professional | 4 km/h | 8% | 1.5 s | 0.0018 | 25% |
| Preset | Damage threshold | Damage scale | Damage factor | Event add | Configured max |
|---|---|---|---|---|---|
| Elementary | 60 | 22,000 | 0.10 | 0.004 | 10% |
| Easy | 35 | 17,000 | 0.04 | 0.002 | 4% |
| Standard | 20 | 12,000 | 0.18 | 0.010 | 20% |
| Professional | 10 | 8,000 | 0.24 | 0.020 | 30% |
Collision events use a three-second cooldown in every preset.
| Preset | Longitudinal trigger/release | Lateral trigger/release | Event add | Extra rate / cap | Configured max |
|---|---|---|---|---|---|
| Elementary | 0.88 / 0.55 g | 0.78 / 0.48 g | 0.002 | 0.006 / 0.004 | 5% |
| Easy | 0.74 / 0.48 g | 0.66 / 0.42 g | 0.001 | 0.003 / 0.002 | 2% |
| Standard | 0.62 / 0.40 g | 0.55 / 0.35 g | 0.005 | 0.015 / 0.010 | 12% |
| Professional | 0.48 / 0.32 g | 0.42 / 0.28 g | 0.010 | 0.025 / 0.018 | 20% |
Aggression events use a three-second cooldown in every preset.
Internally, individual component accumulators allow up to twice the configured component max so a low-mood sensitivity multiplier can be represented. The final combined passenger-fare penalty is capped at 50% for Standard/Hardcore, zero for Relaxed, and by the remaining shared 10% monetary budget for Easy.
Both passenger-triggered early exit and the extra percentage portion of driver abandonment use:
| Preset | Reduction |
|---|---|
Relaxed (elementary) |
0% |
| Easy | 5% |
| Standard | 30% |
| Professional | 45% |
Standard, Hardcore and Custom abandonment additionally subtract one full rating star before clamping to 0–5. Relaxed and Easy do not subtract that star. Paid fuel and repair are service costs and do not use the fine budget.
Easy late-pickup values are 1% base, 0.00005 per second and 3% component maximum; other preset values remain as above.
| Key | Value |
|---|---|
fuelInitialLevel |
5% |
electricInitialLevel |
30% |
fallbackPricePerUnit |
$1.00 |
fuelRatePerSecond |
2 readable units/s |
electricPercentRatePerSecond |
4 percentage points/s |
| Gasoline fixed price | $0.93/L |
| Electric fixed price | $0.50/kWh |
dashboardRefreshInterval |
1 s |
Estimated range uses 10 L/100 km for gasoline, 8.5 L/100 km for diesel, 12.5 L/100 km for kerosene, and 22 kWh/100 km for electric energy.
| Key | Value | Meaning |
|---|---|---|
visibleMin / visibleMax
|
5 / 7 | Requested delivery count in a full pool |
minimumWeightKg / maximumWeightKg
|
2 / 250 kg | Generated cargo range |
weightDistributionExponent |
1.55 | Bias toward lighter cargo |
minimumDistance / maximumDistance
|
2,000 / 25,000 m | Delivery route range |
routeAttempts |
28 | Route attempts per delivery candidate |
diversityAttempts |
3 | Spatially distinct candidates checked |
fareMultiplier |
0.82 | Pre-weight rate relative to passenger work |
weightFareBonusThresholdKg |
15 kg | Weight premium threshold |
maximumWeightFareBonus |
1.50 | Maximum +150% premium at 250 kg |
collisionDamageThreshold |
20 | Minimum telemetry damage delta |
minimumImpactDamagePercent / maximumImpactDamagePercent
|
1 / 35% | Package damage per impact |
impactDamageScale |
4,500 | Exponential impact-severity scale |
ratingDamageThresholdPercent |
5% | Damage threshold before rating loss |
inactive, searching, toFuelStation, toPickup, boarding,
toStop, stopWaiting, toDestination,
passengerStopDemand, passengerForcedExit, driverAbandoning,
alighting, complete, error
Earth preferences are stored separately in settings/TaxiDriver/earth_routes.json, with schemaVersion 1. The principal fields are mode (vehicle or points), selected a/b geographic places, bounded history, maxRandomKm (1–600) and withoutPassenger (boolean). Use the Earth UI commands to persist them; they are not additional difficulty sliders or ordinary local-map route-cache fields.
Random Earth routes are checked against returned road distance. Unlimited order generation uses maxRandomKm; otherwise Earth orders retain the usual 25 km maximum. Explicit A → B routes do not use the 600 km random cap. See Earth Integration and Lua API and UI Events.
TaxiDriver Reloaded documentation · Version 5.0.2 · BeamNG.drive 0.40.5
- Installation and Quick Start
- Gameplay and Ride Lifecycle
- Order Generation and Routing
- Passengers, Fares and Ratings
- Cargo Deliveries
- Realistic Refueling
- Driver Profile and Persistence
- Settings, Localization and Audio
- Navigation and Map Controls
- Earth Integration
- External Web UI
- Driver UI Design
- AI Driver Engine 0.39
- AI Driver and Recovery
- Fleet Operations
- Troubleshooting and Compatibility