-
Notifications
You must be signed in to change notification settings - Fork 3
Gameplay and Ride Lifecycle
TaxiDriver is controlled by a phase-based state machine. UI screens, map visibility, timers, vehicle control, and accepted actions all depend on the current phase.
| Phase | Purpose | Native minimap |
|---|---|---|
inactive |
Taxi mode is offline | Hidden |
searching |
Dispatcher is building and presenting requests | Hidden |
toPickup |
Active route to the selected passenger or cargo | Visible |
boarding |
Passenger boarding or cargo loading | Hidden |
toStop |
Route to a scheduled intermediate stop | Visible |
stopWaiting |
Ten-second stationary wait | Hidden |
toDestination |
Route to final drop-off | Visible |
toFuelStation |
Priority detour to a compatible station | Visible |
passengerStopDemand |
Passenger has demanded an immediate stop | Hidden |
passengerForcedExit |
Forced early-exit sequence | Hidden |
driverAbandoning |
Confirmed cancellation with passenger onboard | Hidden |
alighting |
Passenger exit or cargo unloading | Hidden |
complete |
Fare and ride result screen | Hidden |
error |
Start or order creation failed | Hidden |
stateDiagram-v2
[*] --> inactive
inactive --> searching: Start Shift
searching --> toPickup: Accept order
toPickup --> boarding: Arrive at passenger/cargo
boarding --> toStop: Passenger + scheduled stop
boarding --> toDestination: Direct ride or cargo loaded
toStop --> stopWaiting: Arrive at stop
stopWaiting --> toStop: More stops
stopWaiting --> toDestination: Last stop complete
toDestination --> alighting: Arrive at destination
alighting --> complete: Transfer complete
complete --> searching: Continue shift
searching --> inactive: Go Offline
Arrival requires both:
- distance to the current target no greater than
14 m; - vehicle speed no greater than
4 km/h.
Boarding and alighting each use a three-second transfer timer. The extension attempts to find a passenger-side vehicle trigger, open the door, and close it at the end. Door animation is best-effort and does not block a ride on unsupported vehicles.
Pressing Start Shift creates a shift record before dispatcher search begins. The record accumulates:
- completed rides;
- gross ride income;
- realistic-mode fuel costs;
- fare lost to penalties;
- fuel-adjusted net income;
- average ride rating.
Going offline closes the shift and persists its summary in progress.json. The next start screen shows the previous shift's ride count, net income, and average rating.
Version 3.1.0 Beta also maintains shiftshistory.json. Once a shift completes its first ride, a vehicle/energy snapshot is written every 60 seconds and at lifecycle boundaries. Previous shifts can be selected from the start screen or Driver Profile to restore their BeamNG vehicle configuration and fuel/charge state. Zero-ride sessions and missing vehicle-mod configurations are not retained.
The optional AI driver follows the same phase state machine; it does not create a parallel trip. It may control toPickup, toStop, toDestination, and toFuelStation, then pauses while TaxiDriver performs boarding, waiting, loading, refueling, unloading or completion.
If AI is enabled and energy is critical before pickup/loading, TaxiDriver inserts toFuelStation as a priority detour while keeping the accepted order intact. Critical energy never interrupts a passenger or cargo already onboard. See AI Driver and Recovery for the supervisor, signal, exact-approach and collision-safety design.
Random Events are independent from Realistic Mode and are disabled by default. When enabled, a generated order may contain one event:
- the passenger cancels 12–35 seconds after acceptance but before pickup;
- the passenger changes destination after 22–48% route progress;
- the passenger requests an additional stop after 18–42% route progress;
- the passenger offers a 6–16% tip for a sufficiently careful ride or a successful rush ride;
- a delivery is marked fragile and receives a 1.25–1.65 impact-damage multiplier.
Rush and existing multi-stop rides do not receive route-changing events. Cancellation returns the driver to dispatcher search without loading a passenger.
inactive
→ searching
→ toPickup route to cargo
→ boarding loading loader
→ toDestination cargo mass active
→ alighting unloading loader
→ complete
→ searching
Cargo uses the same arrival rules but skips passenger doors, pickup lateness, chat, mood, stress, rush logic, and scheduled stops. See Cargo Deliveries for fare, physics, damage, and rating behavior.
The pickup budget is based on the route ETA:
pickup budget = ETA at 40 km/h × 1.35 + 60 seconds
It is clamped to 120–600 seconds. Once late, the fare penalty starts at 5%, grows by approximately 0.0333% per second, and is capped at 12%. Lateness also lowers passenger mood.
Multi-stop rides currently create two intermediate stops. Each stop requires the vehicle to remain within the arrival area and almost stationary for ten seconds. Leaving the area resets the wait.
The main progress bar always represents the complete passenger route. Marker positions are calculated from cumulative route distance, not from equal visual spacing.
After route progress exceeds 80%, the app may display another offer for five seconds.
- Accepting it marks it as queued; it does not replace the current trip.
- Ignoring it expires the offer completely.
- A replacement may be generated after a random 5–10 second delay.
- After drop-off or an involuntary passenger exit, an accepted queued offer becomes the next pickup when still valid.
The active-trip screen shows the projected final payout, whether the current fuel/range estimate is sufficient, and the next stop for multi-stage work. Penalty events are collapsed into one summary row by default and expand when selected.
The phone requires a two-second hold on Offline. Releasing early cancels the action.
With a passenger or cargo onboard, the first request is rejected and the phone opens a confirmation screen. Confirming abandonment:
- clears the queued request;
- pays no fare;
- applies a one-star loss plus a difficulty-scaled percentage reduction;
- freezes the car during the exit or unloading sequence;
- returns the mode to
inactiveafter the door closes.
Gameplay timers use dtSim, so a game pause freezes pickup, rush, stop, boarding, alighting, passenger-exit, offer-generation, and refueling progress. HUD refresh uses dtReal, allowing the phone to remain visually responsive without consuming gameplay time.
- Switching away from the active vehicle stops taxi mode.
- Resetting the active vehicle stops taxi mode, clears the current and queued work, and removes physical cargo mass.
- Ending a mission or unloading the extension restores minimap, navigation, vehicle control, and stock station behavior.
TaxiDriver Reloaded documentation · Version 4.0.3 · BeamNG.drive 0.39
- 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
- External Web UI
- Driver UI Design
- AI Driver Engine 0.39
- AI Driver and Recovery
- Fleet Operations
- Troubleshooting and Compatibility