Skip to content

Gameplay and Ride Lifecycle

noteMASTER11 edited this page Jul 20, 2026 · 6 revisions

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 overview

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

Normal ride sequence

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
Loading

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.

Shift lifecycle

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.

AI driver participation

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.

AI does not insert fuel stops automatically. The player may press Refuel to insert toFuelStation while keeping the accepted order intact, then explicitly enable AI on that route. See AI Driver and Recovery for the supervisor, signal, exact-approach and collision-safety design.

Optional Random Events

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.

Cargo delivery sequence

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.

Pickup deadline

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.

Scheduled stops

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.

Continuous work and queued offers

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.

Trip information

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.

Going offline

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 inactive after the door closes.

Pause behavior

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.

Reset and vehicle switch behavior

  • 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.

Clone this wiki locally