-
Notifications
You must be signed in to change notification settings - Fork 3
Developer Guide
git clone https://github.com/noteMASTER11/TaxiDriverReloaded.git
cd TaxiDriverReloadedThe repository contains source only. dist/taxidriver.zip is intentionally distributed through GitHub Releases rather than committed.
BeamNG supports unpacked mods, but never enable the unpacked source and packaged taxidriver.zip simultaneously.
A development tree must preserve these roots:
lua/
ui/
mod_info/
CREDITS.txt
The release ZIP must contain these paths directly at archive root. Do not wrap them inside a taxidriver/ folder, and use / path separators inside the ZIP.
Update all four values for a release:
-
modVersioninlua/ge/extensions/taxiDriver/taxiDriver.lua; -
versioninui/modules/apps/TaxiDriverHUD/app.json; -
versioninmod_info/TaxiDriver/info.json; -
versioninpackage.json.
Also update externalUiRevision and the matching ?v= values in the external bootstrap and UI imports whenever browser-cached assets change.
The archive filename remains exactly taxidriver.zip.
Balance and timing constants belong in config.lua. Keep pure logic in focused modules when possible. Avoid adding more top-level locals to taxiDriver.lua because the main chunk is close to LuaJIT's 200-local limit.
Changing a difficulty preset mutates the active balanceConfig fields. Every preset must therefore define every field that can differ between presets; otherwise a value from the previously selected preset can remain active.
- Create it in
createOffer(). - Preserve it when the offer becomes
trip. - Expose it from
buildHudOffer()orbuildHudState(). - Add a default in
$scope.stateif the UI reads it before the first backend snapshot. - Add localized UI labels to all eight locales.
- Test dispatcher, floating next offer, and queued-offer transition.
- Add the ID to
config.luaphases and diagnostic labels. - Add localized
phase_*keys to all locales. - Decide whether it logically contains a passenger.
- Decide whether penalties, mood, rush timer, and forced stop may advance.
- Decide whether the native minimap can render.
- Add a dedicated
ng-ifscreen or include it in an existing screen. - Cover transition, reset, stop-mode, mission-end, and serialization cleanup.
- Add the language to
supportedLanguagesinconfig.lua. - Add it to the UI
languagesarray. - Add a complete dictionary to
locales.jsonwith the exact English key set. - Verify placeholders and plural-neutral phrasing.
- Put the renamed asset in
ui/modules/apps/TaxiDriverHUD/sounds/. - Register a pool in
appAudiowith an appropriate base volume and size. - Call
playAppSound(poolId)rather than invokingAudiodirectly. - Confirm Silent Mode,
AudioUiVol, and the TaxiDriverappVolumemultiplier all affect it. - Include the pool in the random sound-test list when appropriate.
Recommended pre-release checks:
- Parse every GE Lua module as Lua 5.1/LuaJIT syntax.
- Keep the main extension below 200 top-level locals.
- Parse
app.jsas JavaScript. - Parse
app.htmlandapp.css. - Parse
locales.jsonand compare every locale's keys with English. - Run
git diff --check. - Inspect archive entries for missing files, extra root folders, or backslashes.
- Verify the installed archive hash matches the release artifact.
- Run the Realistic Mode × Random Events combinatorics across regular, rush, multi-stop, and delivery work.
- Exercise all order-sorting buttons because native CEF selectors are intentionally not used in the scaled UI.
At minimum test:
- normal mode start and 10–12 offer fill;
- regular, rush, multi-stop, and cargo-delivery acceptance;
- pickup/door/boarding transition;
- speeding, collision, and harsh-manoeuvre event logging;
- mood increase and decrease animation;
- floating-offer expiry and queue acceptance;
- reset with queued offer;
- pause during every visible countdown;
- Realistic Mode with combustion and electric vehicles;
- station detour with and without a passenger;
- paid refueling, interruption, completion, and route restoration;
- cargo mass application, collision damage, completion, cancellation, and reset cleanup;
- full-phone and minimized-dashboard map geometry;
- vehicle switch, level reload, odometer continuity, and native selector opening;
- Magic Fuel, quick presets, projections, and active-order sufficiency;
- settings/profile/progress/vehicle-history reload after restarting the session.
- Commit and push source changes.
- Build
dist/taxidriver.zipfrom the committed source. - Create a version tag such as
v2.25.0on the release commit. - Upload the asset as
taxidriver.zipwithout version text in the filename. - Verify metadata version, asset digest, and download URL.
- Mark Beta builds as GitHub prereleases and use a SemVer prerelease tag such as
v3.0.0-beta.
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