BUBER adds a Career Mode taxi and ride-share service to BeamNG.drive. Go on duty, accept fares, pick up passengers, complete trips, earn Career money, and build your driver rating to unlock bigger jobs.
- Career Mode taxi jobs with pickup and drop-off routing.
- BUBER UI app with a dashboard, progression view, fare popup, and live taxi meter.
- Direct point-to-point fares for normal vehicles.
- Shared rides with multiple drop-offs after progression unlocks.
- Bus route jobs for high-capacity vehicles on maps with bus route data.
- Passenger types with different expectations, tips, and rating behavior.
- Driver rating progression from 0.0 to 5.0.
- Rating-based seat limits, payout limits, and route unlocks.
- Vehicle class pay multipliers based on vehicle performance.
- Fare streak bonuses for completing jobs back to back.
- Pickup, drop-off, boarding, and route guidance in the UI.
- Return-to-vehicle grace timer after passengers are onboard.
- Customizable UI size, opacity, popup position, meter position, and meter visibility.
- Saved UI settings and saved driver rating per Career save.
Install Buber.zip like a normal BeamNG.drive mod:
- Put the zip in your BeamNG.drive
modsfolder. - Enable the mod in BeamNG.drive.
- Start or load a Career Mode save.
- Add the
BUBERUI app to your layout.
- Enter a valid personal vehicle in Career Mode.
- Open the BUBER UI app, or press
Tto toggle the overlay. - Press the duty button to go
On Duty. - Wait for dispatch to offer a fare.
- Accept or reject the fare from the popup or dashboard.
- Follow the route to the pickup point.
- Stop in the marked zone and wait for passenger service to finish.
- Drive to the destination or next stop and complete the fare.
For shared rides and bus routes, follow each stop in order. Bus route jobs may ask you to stop, open the doors, wait for boarding or drop-off, then close the doors before continuing.
BUBER includes several passenger groups. Each one rewards a different driving style:
| Passenger type | What they care about |
|---|---|
| Standard | Balanced speed, comfort, and efficiency. |
| Commuter | Punctual, steady driving. |
| Business | Fast, efficient trips with fewer delays. |
| Executive | Smooth, premium service. |
| Family | Safe, calm driving with enough seats. |
| Luxury | Comfort and smoothness over outright speed. |
| Party Group | Larger groups that still expect safe driving. |
| Student | Budget fares with simple efficiency bonuses. |
| Thrill Seeker | Speed and excitement without getting too reckless. |
| Tourist | Slower, smoother, scenic-style driving. |
Your driver rating is saved in your Career save and controls what BUBER will offer you. Completing fares improves your rating based on passenger satisfaction. Abandoning a fare after passengers are onboard lowers it.
Progression unlocks higher seat limits, better earning potential, shared rides, and bus routes.
| Driver rating | What unlocks |
|---|---|
| 0.0 | Direct fares and up to 4 usable passenger seats. |
| 1.0 | Better direct fares and up to 8 usable passenger seats. |
| 2.0 | Shared rides, bus routes, and up to 18 usable passenger seats. |
| 3.0 | Larger route work and up to 35 usable passenger seats. |
| 4.0 | High-capacity fares and up to 65 usable passenger seats. |
| 5.0 | Full vehicle passenger capacity. |
The in-game Progression tab shows your exact current limits and next unlock.
Fare pay is based on distance, passenger count, passenger type, tips, fare streak, vehicle class, and your driver rating. Bigger or faster vehicles can earn more, but BUBER keeps rewards balanced through progression so early jobs stay reasonable.
Hardcore Mode and Career economy settings can also affect rewards.
- BUBER is made for BeamNG.drive Career Mode.
- You need to be in a valid personal vehicle to take fares.
- Loaned vehicles, walking mode, or Career challenges that disable taxi income can make BUBER unavailable.
- Your vehicle's real seat count matters, but your driver rating controls how many seats BUBER will use.
- Bus route jobs need a high-capacity vehicle and a level with usable bus stops and route data.
- If you leave the vehicle before pickup, the fare is cancelled.
- If you leave after passengers are onboard, you get a short timer to return before the fare is abandoned.
- Use the yellow
Btab to open or close the BUBER panel. - Press
Tto toggle the BUBER overlay. - Open the gear menu to adjust panel size, opacity, popup location, meter location, and meter visibility.
- Move the UI app in BeamNG.drive's UI editor to dock it near a different screen edge.
All tunable gameplay values are kept in a single file:
lua/ge/extensions/gameplay/taxiConfig.lua
No game logic lives in this file — it is purely data. Edit it to adjust timing, payouts, progression, zone sizes, and more without touching the core extension. After editing, reload the mod or restart Career Mode for changes to take effect.
- Open
taxiConfig.luain any text editor. - Find the section you want to change (each section is clearly labelled with a comment header).
- Change the value to the right of the
=. Numbers, strings, andtrue/falseare all valid depending on the field. - Save the file, then reload the mod in BeamNG.drive.
Do not rename or remove any keys. The extension reads each field by name. Removing a key will cause that feature to fall back to a hardcoded default or error silently.
Controls the display name and where the driver rating is saved inside your Career save slot.
| Key | Default | Purpose |
|---|---|---|
name |
"BUBER" |
Display name shown in UI toasts and messages. |
ratingSaveDir |
"buber" |
Subfolder inside your Career save's career/ directory. |
ratingSaveFile |
"taxiRating.json" |
Filename for the persisted driver rating data. |
All values are in seconds.
| Key | Default | Purpose |
|---|---|---|
jobOfferIntervalMin |
5 |
Minimum wait between consecutive fare offers. |
jobOfferIntervalMax |
45 |
Maximum wait between fare offers. |
jobOfferPrepareLeadTime |
3 |
How many seconds before an offer the fare is pre-generated. |
jobAcceptTimeout |
30 |
Time to accept or reject a fare before it auto-rejects. |
completedFareDisplay |
6 |
How long the fare-complete summary stays on screen. |
updateInterval |
1 |
Main loop tick rate. |
routeRestoreCooldown |
2.0 |
Minimum gap between route-restore attempts. |
returnToVehicleGrace |
20 |
Grace period to return to your vehicle after leaving it mid-dropoff. |
All values are in metres.
| Key | Default | Purpose |
|---|---|---|
stopRadius |
5 |
Arrival detection radius at pickup and dropoff points. |
stopHeight |
2.5 |
Visual cylinder height for zone markers. |
drawRadius |
1 |
Visual cylinder radius for zone markers. |
pickupSearchRadius |
500 |
How far from the player to search for pickup spots. |
minPickupDistance |
60 |
Minimum distance for a valid pickup from the player's position. |
pickupCacheRefreshDist |
125 |
Rebuild the pickup cache after driving this far. |
maxPickupSamples |
8 |
Maximum pickup candidates evaluated per fare offer. |
maxDropoffSamples |
24 |
Maximum dropoff candidates evaluated per fare offer. |
| Key | Default | Purpose |
|---|---|---|
stopServiceSeconds |
3 |
Time passengers need to board or exit at non-bus stops. |
stopSpeedThreshold |
0.75 |
Maximum speed in m/s to count as fully stopped. |
busPassengerServiceRate |
2 |
Passengers processed per second at bus stops. |
| Key | Default | Purpose |
|---|---|---|
vehicleSeatThreshold |
18 |
Minimum seat count to qualify for bus-route fares. |
emptyStopChance |
0.35 |
Probability (0–1) that a generated bus stop has no drop-offs. |
requiredRating |
2.0 |
Driver rating needed to unlock multi-stop and bus routes. |
| Key | Default | Purpose |
|---|---|---|
minSeats |
4 |
Minimum available seats before a shared ride can be offered. |
offerChance |
0.25 |
Probability (0–1) of a shared ride versus a direct fare. |
minDropoffDistance |
250 |
Minimum distance between consecutive shared-ride drop-offs. |
maxDropoffs |
3 |
Maximum number of drop-off points in a single shared ride. |
| Key | Default | Purpose |
|---|---|---|
distanceMultiplier |
3 |
Base scaling factor applied to distance when calculating a fare. |
suggestedSpeed |
18 |
Reference speed in m/s used to compute the speed bonus/penalty. |
minDropoffDistance |
600 |
Minimum pickup-to-dropoff distance for direct fares (metres). |
| Key | Default | Purpose |
|---|---|---|
sumPerLevel |
25 |
Rating points required per whole star level. |
maxRating |
5 |
Hard ceiling for driver rating. |
abandonBasePenalty |
0.10 |
Rating penalty for the first abandonment in a shift. |
abandonScalePenalty |
0.15 |
Additional penalty for each subsequent abandonment. |
abandonMaxPenalty |
1.0 |
Hard cap on a single abandonment penalty. |
seatCapCurve — A list of {rating, value} pairs that map driver rating to the maximum number of passenger seats BUBER will use. Intermediate ratings are interpolated. Use math.huge for unlimited seats.
milestones — A list of {rating, label, description} entries shown in the in-game Progression tab. Add, remove, or rename entries freely; they have no effect on game logic.
Each class entry maps a Performance Index (PI) range to a pay multiplier range. BUBER picks the class based on the current vehicle's PI and interpolates the multiplier within the range.
| Class | PI Range | Multiplier Range |
|---|---|---|
| D — Economy/Utility | 0–20 | 0.70–0.90× |
| C — Standard | 21–40 | 0.95–1.10× |
| B — Sports | 41–65 | 1.15–1.30× |
| A — High Performance | 66–85 | 1.35–1.55× |
| S — Super Sports | 86–100 | 1.65–1.90× |
| X — Modified | 101–120 | 2.00–2.20× |
seatPackRules and capsuleSeatPacks — Pattern-matched lists that tell BUBER how many seats specific vehicle part names provide. Add entries here if a modded vehicle is not being detected correctly.
Two profiles exist: direct (point-to-point fares) and multistop (bus and shared rides). Both share the same shape.
| Key | Purpose |
|---|---|
softCap |
Earnings above this are scaled down by softCapOverflowRate. |
softCapOverflowRate |
Fraction of earnings above the soft cap that is kept (e.g. 0.30 = 30 cents per dollar over cap). |
multiplierStackCap |
Maximum combined multiplier from all bonuses. |
tipSoftCaps |
Per-driver-level (0–5) soft cap on tip amounts. |
tipBasePercentCaps |
Per-driver-level maximum tip as a fraction of the base fare. |
tipSoftCapOverflowRate |
Fraction of tip earnings above the soft cap that is kept. |
ratingHardCapCurve |
Rating-keyed curve that sets the absolute maximum payout at each rating level. |
The multistop profile additionally has:
| Key | Purpose |
|---|---|
fullPassengerCount |
Passengers above this number earn at a reduced rate. |
extraPassengerRate |
Earnings rate for passengers above fullPassengerCount. |
fullDistanceMeters |
Distance above which earnings are reduced. |
extraDistanceRate |
Earnings rate for distance above fullDistanceMeters. |
Colors are {r, g, b, a} tables with values from 0 to 1.
zoneColors.pickup.active/inactive— Color of the pickup zone marker.zoneColors.dropoff.active/inactive— Color of the dropoff zone marker.debugSpotColors— Colors for the debug overlay (all,pickup,bus,reserved).
| Key | Default | Purpose |
|---|---|---|
path |
"/lua/ge/extensions/gameplay/taxiPassengers/" |
Directory BUBER scans for passenger type modules. Each .lua file in this folder is loaded as a separate passenger type. |
To add a new passenger type, drop a new .lua file into the taxiPassengers/ folder following the same structure as the existing ones. To disable a type, remove or rename its file.
BUBER is licensed under the GPL-3.0 license. See LICENSE for details.