Showing posts with label Documentation. Show all posts
Showing posts with label Documentation. Show all posts

Monday, July 21, 2025

How to make add-on parts for cars

    Introduction

    Since the advent of Binary, its associated Speedreflect library and Unlimiter with Extra/Extended Customization support, Black Box NFS games modding possibilites went up exponentially, amongst them there's the possibility of adding new car parts - and even make them car-specific or even without modifying the original game's geometry files. To this day, there is no concise documentation on the subject; hence I'm doing this write up to at least cover the basics with regards to NFS Underground 2 and NFS Most Wanted

    How parts work?

    For most Black Box games, part data is stored in GLOBAL\GlobalB.lzc; in Binary it's located in DBModelParts section. Each vehicle and part type (wheels, spoilers, paint, vinyls, etc.) has it's own DBModelParts node, which can be imported, exported, added, copied or deleted; to open a node, simply double-click on it. To rename a node, change its CollectionName value.

     



    Each node has the vehicles or parts set's part list, each part has the following basic editable properties (which are shown in bold in Binary):
    • CarPartGroupID (dropdown): what part slot (type of part) does the part use. For example, a hood uses the HOOD CarPartGroupID. Check the SlotTypes section in Binary to see what part slots are available.
    • DebugName (string): debug name of the part, shown only in debug menu or when there's no LANGUAGES\<language>.bin file string associated to it in the part attributes (more on that later). For example: STYLE02_HOOD.
    • LodStruct: a set of properties that sets up what parts from the car or part set GEOMETRY.BIN file uses, if the part has geometry associated with it, like body kits and so.
      • Concatenator (string): part of the name after the XNAME (e.g. FOCUS) and before the last part of the part name (e.g. _FRONT_BUMPER). For example _KIT00
        • ConcatenatorExists (boolean): enables/disables usage of concatenator
      • Exists (boolean): enables/disables geometry for the part
      • Geometry0Lod(A/B/C/D/E) (string): part name for the corresponding LOD of primary geometry for the part. If it uses concatenator,it's the last part of the part name without the LOD letter (e.g. _REAR_BUMPER), otherwise use the full part name (e.g. COROLLA_STYLE01_WHEEL)
        • Geometry0Lod(A/B/C/D/E)Exists (boolean): enables/disables corresponding LOD
      • Geometry1Lod(A/B/C/D/E) (string): part name for the corresponding LOD of secondary geometry for the part (e.g. body fixed parts of a 2-piece spoiler). Same naming convention as Geometry0Lod
        • Geometry1Lod(A/B/C/D/E)Exists (boolean): enables/disables corresponding LOD
      • Templated (boolean)
    • PartLabel (string): internal name of the part, must be unique.
    • UpgradeGroupID (integer): determines several properties of the part in-game (what kind of part is, when it unlocks, cost of part in Career Mode, etc.), for reference here you can check the UpgradeGroupID lists for NFSU2 and here are the NFSMW ones.
    Part naming conventions aren't very strict in most cases, only requirements is to match to whatever geometry file part name has and it has to be unique.

    Parts can be added, copied, deleted and sorted via the Car Parts menu. Keep on mind the part order you see in the DBModelParts node will determine the part order in-game.

    Parts also can have a set of attributes, which can be managed via the Attributes menu; you can add, remove, sort and even add custom attributes (which Extra/Extended Customization makes use of; check here for NFSU2 custom attributes or here for NFSMW custom attributes). Standard attributes are too many to list and describe for now, but the most relevant for part types will be described later on.

    How to add parts

    To add a part, open the DBModelParts node of your vehicle or parts set and go to Car Parts > Add Part or Car Parts > Copy Part. The latter is recommended if you're adding a part with geometry since Binary currently has a bug with added parts through the Add Part command that prevents from using geometry. Then you can adjust the properties and add the attributes you need for your part.

    Making geometry for new parts

    Making geometry for new parts is very similar to making new geometry for cars, which is detailed in the tutorial sections of the NFSU2/MW modding pages; however there are some caveats:
    • If your geometry belongs to a separate part set, you should include their entire part names (e.g. SPOILER_STYLE50_A) in the Data\<game>\GenericParts.txt file and leave the XNAME field blank in CarToolkit. If it's included with a car geometry, you should put the part names (e.g. STYLE50_SPOILER_A, so it will be SENTRA_STYLE50_SPOILER_A when compiled) in the Data\<game>\Parts_Racer.txt file.
    • Parts like spoilers, roof scoops (and for some games, mirrors -NFSU2- and exhausts) should be placed at origin (XYZ 0,0,0), since their mountpoints will put them in place.


       


    • For NFSMW and prior: paintable spoilers, roof scoops, calipers, exhausts, mirrors and audio components should be mapped to certain regions of the SKIN texture (seen in the DUMMY_SKIN textures)
    • Wheels and brake discs should be also placed at origin but with the face/disc (or hub in case of brakes for NFSMW onwards) sitting at Y origin 0.


    Part Slot Overrides

    Sometimes it's needed to tell the game to use a certain part set for certain vehicle types (like hatchbacks) or make the game use only certain parts in your car (like a set of roof scoops) for a slot; that's where the SlotOverrides section comes in. SlotOverrides nodes can be added, deleted, copied, imported and exported.

    To add a new SlotOverride node, click on the SlotOverrides section and click on Add Node. Name the slot <XNAME>_PART_<slot to be overriden> (e.g. IMPREZAWRX_PART_SPOILER) and click OK. Change the InfoMainOverride value to the part set you want to use or set it to some non-existent name (e.g. NULL) to restrict the parts availabity to whatever you provide with your car's parts.

    For NFSU2 some instances of car-specific parts like vinyls and decals need a SlotOverride to function, though another way is to apply this script to set SlotType overrides to SlotMainOverride (so it can be used without an SlotOverride node). NFSMW Unlimiter v4 already has this kind of feature built-in.

    Keep on mind some slots (like ROOF -roof scoops-) might put your custom parts above the stock parts in the parts browser in-game if there's no InfoMainOverride part defined.

    Most commonly used attributes

    For most parts

    • LANGUAGEHASH (key): Specifies what language string stored in LANGUAGES\<language>.bin uses the part (e.g. KIT00_FRONT_WHEEL)
    • CARBONFIBRE (boolean): Specifies if this part is a carbonfiber part

    Headlights/taillights

    • TEXTURE_NAME (key): Specifies what texture the part uses (e.g. PEUGOT_STYLE01_BRAKELIGHT)

    Wheels

    • TEXTURE_NAME (key): Specifies what texture the part uses the wheel (e.g. BBS_STYLE09)
      • Texture should be in ARGB format, name ending with _WHEEL (e.g. BBS_STYLE10_WHEEL)
      • Texture must have an accompanying _WHEEL_INNER_MASK (e.g. BBS_STYLE10_WHEEL_INNER_MASK) black and white texture to define colorable sections
      • Texture should match resolution of DUMMY_WHEEL textures in CARS\TEXTURES.BIN
      • Texture should have the following properties:
        • AlphaBlendType: TEXBLEND_SRCCOPY
        • AlphaUsageType: TEXUSAGE_PUNCHTHRU (for WHEEL/OUTER textures) / TEXUSAGE_NONE (for MASK textures)
    • SPINNER_NAME (key) -used only in NFSU2-: Specifies what texture the part uses the spinner attached to the wheel (e.g. DAVIN_STYLE09_OUTER)
      • Same properties as wheels, texture must match resolution of DUMMY_SPINNER textures and must have an accompanying _OUTER_MASK texture (e.g. DAVIN_STYLE09_OUTER_MASK) black and white texture
      • Can also be used in regular wheels thus making two-color wheels possible
    • OUTER_RADIUS (integer): overall wheel size in inches (ranges from 23 to 26)
    • INNER_RADIUS (integer): rim size in inches (ranges from 15 to 20)
    • BRAND_NAME (key): specifies what manufacturer the wheel uses as defined in WHEEL_MANUFACTURERSDBModelParts and scripts\UnlimiterData\_RimBrands.ini file. If you're making a car-specific custom wheel, leave it blank.

    Most visual parts (paint/neons/etc)

    • RED/GREEN/BLUE -and any variation therefore- (integer): red/green/blue color values (range from 0 to 255)

    Paint (body/rim/hoses/vinyl)

    • GLOSS (integer): how glossy is the paint (ranges from 0 to 255)
    • LIGHT_MATERIAL_NAME (key): what material will the paint use (e.g. REGPAINTGREY). Check Materials section for material availability.
    • BRAND_NAME (key): what kind of paint will the paint be. Usual values are GLOSS, METAL, PEARL, RIM, MUFFLER, HOSE and VINYL

    Vinyls

    • REMAP (boolean): determines if vinyl is colorable
    • TEXTURE_NAME (key): specifies what texture does the vinyl use (e.g. TEAR_012A)
      • Vinyl textures should be ARGB or 8-bit (256-color) with alpha channel without mipmaps; red and blue channels should be swapped; alpha channel determines blending with car paint.
      • Texture name is usually <XNAME>_<vinyl name> (e.g. 350Z_MODERN_056C).
      • A black and white _MASK texture is needed (e.g. 350Z_MODERN_056C_MASK) for transparency.
      • Colorable vinyls should have pure red, blue and green colors.
      • Textures should have the following properties:
        • AlphaBlendType: TEXBLEND_SRCCOPY
        • AlphaUsageType: TEXUSAGE_NONE
    • NUMCOLORS (integer): how many colors are present in the texture. Usually it's 16 for colorable vinyls and 64 for non-colorable vinyls
    • NUMREMAPCOLORS (integer): how many colorable colors does the vinyl have (range from 1 to 3)
    • BRAND_NAME (key): not sure what is for, but it's always NFSU for NFSU1/2 or MW for NFSMW
    • TEXTURE (string): usually the same as TEXTURE_NAME. Has a boolean property named ValueExists that enables/disables it.

    Decals

    • NAME (key): specifies what texture is being used for the decal (e.g. 5ZIGEN_WHITE)
      • Texture for decals should be DXT3 format
      • Set ApplyAlphaSort to 1 in the texture properties
      • Decal textures should be named <brand>_RECT/<brand>_WIDE/<brand>_WHITE_RECT/<brand>_WHITE_RECT (e.g. GREDDY_RECT)
    • BRAND_NAME (key): what brand is your decal, usually it matches what's in NAME (e.g. 5ZIGEN)
    • NUM_DECALS (integer): number of decals the decal part can hold (ranges from 1 to 8)

    Creating custom part sets

    A not so widely publicized feature of the Speedreflect library is the ability to load parts from any geometry file linked with an Universal type CarTypeInfos. That means you can make a custom part set that contains several types of parts (spoilers, wheels, etc.) without having to modify the vanilla game's geometry files. In order to use this feature make sure to do the following:
    • First make sure you have the Speedreflect library installed in your game. Binary can install it via Tools > Install Speedreflect menu; you can also incorporate the speedreflect auto command in your mod installation script
    • Go to the CarTypeInfos section and create a new CarTypeInfos, set its type to Universal
    • Create a folder in your CARS folder with the same name as your parts set's CarTypeInfos
    • Make the geometry file for your parts set.
    • Copy the geometry file to the parts set folder you've made.
    • Edit the relevant DBModelParts for your parts (be it specific cars, spoilers, wheels, etc.), and add their relevant textures to their respective places.

    Some things to consider

    • Remember that if you want to put parts in it that will be car-specific, put their full names in CarToolkit's Data\<game>\GenericParts.txt since part sets do use an XNAME in CarToolkit.
    • Even tho the game isn't usually very strict with part naming, try to stick to a simple to handle naming convention. For example, you could name your part set CarTypeInfo MYCOOLPARTS and a front bumper for the 350Z could be named 350Z_COOLPART00_FRONT_BUMPER
    • If you are editing a car's DBModelParts node with car-specific custom part: before exporting, try as far as possible to delete all parts except your custom parts and a copy of the stock part of its part slot so it can be imported later with the Synchronize type to minimize chances of duplicating parts when merging nodes.

    Thursday, September 8, 2022

    Quick NFSU2 Car Sound Tuner INI Values Reference

    (download spreadsheet version of the tables here)

    Here's a quick reference on CarSoundTuner's folder structure and the sound files used in each ini file

    Folder structure

    CarSoundData | +---AccelFromIdle | 00.ini | 01.ini | ... | +---CarDataMapping | 00.ini | 01.ini | ... | +---CarTypeMapping | 240SX.ini | 3000GT.ini | ... | +---DualGinsu | 00.ini | 01.ini | ... | +---EngineData | 00.ini | 01.ini | ... | +---ShiftPatterns | 00.ini | 01.ini | ... | +---SweetnerDataSet | 00.ini | 01.ini | ... | \---TurboDataSet 00.ini 01.ini ...


    CarTypeMapping.ini Numbers

    CarTypeMapping.ini CarDataMapping ini #
    240SX 0
    3000GT 1
    350Z 2
    4DR_SEDAN 18
    4DR_SEDAN02 18
    A3 3
    AMBULANCE 18
    BUS 18
    CELICA 4
    CIVIC 5
    COROLLA 6
    CORSA 7
    COUPE 18
    ECLIPSE 8
    ESCALADE 9
    FIRETRUCK 18
    FOCUS 10
    G35 11
    GOLF 12
    GTO 13
    HATCHBACK 18
    HATCHBACK02 18
    HUMMER 14
    IMPREZAWRX 15
    IS300 17
    LANCEREVO8 18
    MIATA 19
    MINIVAN 18
    MUSTANGGT 20
    NAVIGATOR 21
    PANELVAN 18
    PARCELVAN 18
    PEUGOT 22
    PEUGOT106 23
    PICKUP 18
    RSX 24
    RX7 25
    RX8 26
    SENTRA 28
    SKYLINE 29
    SUPRA 30
    SUV 18
    TAXI 18
    TAXI02 18
    TIBURON 31
    TT 32
     

    Sound file table

    ini # EngineData (accel) DualGinsu (decel) ShiftPatterns (gearbox) TurboDataSet (turbo) SweetenerDataSet (ABKs)
    0 GIN_HondaS2000_Church.gin GIN_Mustang_Drag_DCL.gin GEAR_SML_Base.abk TURBO_SML1_0_MB.abk SWTN_CAR_00_MB.abk
    1 GIN_Ferrari_360.gin GIN_Mazda_RX8_DCL.gin GEAR_SML_Lev1.abk TURBO_SML1_1_MB.abk SWTN_CAR_01_MB.abk
    2 GIN_Trueno_AE86.gin GIN_WRX2F2F_DCL.gin GEAR_SML_Lev2.abk TURBO_SML1_2_MB.abk SWTN_CAR_02_MB.abk
    3 GIN_Honda_S2000_5zigen.gin GIN_S2000_Church_DCL.gin GEAR_SML_Lev3.abk TURBO_SML2_0_MB.abk SWTN_CAR_03_MB.abk
    4 GIN_Honda_S2000_Spugen.gin GIN_Mits_5zigen_DCL.gin GEAR_MED_Base.abk TURBO_SML2_1_MB.abk SWTN_CAR_04_MB.abk
    5 GIN_Honda_S2000_spliced.gin GIN_240SX_Decel.gin GEAR_MED_Lev1.abk TURBO_SML2_2_MB.abk SWTN_CAR_05_MB.abk
    6 GIN_MitsEclipse_2000.gin GIN_Infinit_G35_DCL.gin GEAR_MED_Lev2.abk TURBO_MED_0_MB.abk SWTN_CAR_06_MB.abk
    7 GIN_Nissan_300ZX_Street.gin GIN_Honda_Prelude_DCL.gin GEAR_MED_Lev3.abk TURBO_MED_1_MB.abk SWTN_CAR_07_MB.abk
    8 GIN_Eclipse_5zigen.gin GIN_Ford_Focus2_DCL.gin GEAR_LRG_Base.abk TURBO_MED_2_MB.abk SWTN_CAR_08_MB.abk
    9 GIN_Nissan_Skyline.gin GIN_Cavel_DCL.gin GEAR_LRG_Lev1.abk TURBO_BIG_0_MB.abk SWTN_CAR_09_MB.abk
    10 GIN_Mazda_RX7.gin GIN_Mazda_Miata_DCL.gin GEAR_LRG_Lev2.abk TURBO_BIG_1_MB.abk SWTN_CAR_10_MB.abk
    11 GIN_RX8_Ramp_v1_CD.gin GIN_Bronco_DCL.gin GEAR_LRG_Lev3.abk TURBO_BIG_2_MB.abk SWTN_CAR_11_MB.abk
    12 GIN_Mustang_Drag.gin GIN_Mazda_RX7_DCL.gin GEAR_TK_Base.abk TURBO_TRUCK_0_MB.abk SWTN_CAR_12_MB.abk
    13 GIN_Bronco_Comp.gin GIN_Nascar_DCL.gin GEAR_TK_Lev1.abk TURBO_TRUCK_1_MB.abk SWTN_CAR_13_MB.abk
    14 GIN_MustSal_Ramp_V2_CD.gin GIN_VW_Cab_DCL.gin GEAR_TK_Lev2.abk TURBO_TRUCK_2_MB.abk SWTN_CAR_14_MB.abk
    15 GIN_WRXSTi_Pull_09.gin GIN_Acura_ITR_DCL.gin GEAR_TK_Lev3.abk
    SWTN_CAR_15_MB.abk
    16 GIN_WRX_Street.gin GIN_WRX_Street_DCL.gin GEAR_SML_Base.abk
    SWTN_CAR_16_MB.abk
    17 GIN_WRX_2F2F.gin GIN_Trueno_DCL.gin GEAR_SML_Base.abk
    SWTN_CAR_17_MB.abk
    18 GIN_Nissan_240SX.gin GIN_Toyota_GTS_DCL.gin

    SWTN_CAR_18_MB.abk
    19 GIN_Toyota_GTS.gin GIN_300ZX_DCL.gin

    SWTN_CAR_19_MB.abk
    20 GIN_Honda_Prelude.gin GIN_WRX_STi_DCL.gin

    SWTN_CAR_20_MB.abk
    21 GIN_VW_Scirocco.gin GIN_Eclipse_2000_DCL.gin

    SWTN_CAR_21_MB.abk
    22 GIN_Honda_S2000_APEX.gin GIN_Protege_Lev2_DCL.gin

    SWTN_CAR_22_MB.abk
    23 GIN_Mazda_Miata.gin GIN_Protege_Lev2_DCL.gin

    SWTN_CAR_23_MB.abk
    24 GIN_VW_Drag_GTi.gin GIN_VW_Drag_GTi_DCL.gin

    SWTN_CAR_24_MB.abk
    25 GIN_G35_350ZX_Comp_v2_AB.gin GIN_Honda_S2000_2f2f_DCL.gin

    SWTN_CAR_25_MB.abk
    26 GIN_350Z_01d_shrt2.gin GIN_VW_Scirocco_DCL.gin

    SWTN_CAR_26_MB.abk
    27 GIN_350Z_Jason_shrt2.gin GIN_VW_Jetta_M3_DCL.gin

    SWTN_CAR_27_MB.abk
    28 GIN_VR6_Jetta_M3.gin GIN_VW_Jetta_M4_DCL.gin

    SWTN_CAR_28_MB.abk
    29 GIN_VW_Cabriolet.gin GIN_Mustang_Saleen_DCL.gin

    SWTN_CAR_29_MB.abk
    30 GIN_VR6_Jetta_M4.gin GIN_Nissan_350ZX_Jason_DCL.gin

    SWTN_CAR_30_MB.abk
    31 GIN_FordFocus_Road.gin GIN_Porsche_Cayenne_DCL.gin

    SWTN_CAR_31_MB.abk
    32 GIN_FordFocus_comp2.gin GIN_Ferrari_360_DCL.gin

    SWTN_CAR_32_MB.abk
    33 GIN_Protege_Ramp_V2_CD.gin GIN_Honda_S2000_5zigen_DCL.gin

    SWTN_CAR_33_MB.abk
    34 GIN_Protege_Ramp_Lev2_CD.gin GIN_Honda_S2000_Spugen_DCL.gin

    SWTN_CAR_34_MB.abk
    35 GIN_Mustang_Nscr_COMP.gin GIN_Ford_Focus2_DCL.gin

    SWTN_CAR_35_MB.abk
    36 GIN_Cavel_v1_Base.gin GIN_HONDA_S2000_Apex_DCL.gin

    SWTN_CAR_36_MB.abk
    37 GIN_Cavel_v1_Lev1.gin


    SWTN_CAR_37_MB.abk
    38 GIN_Hummer.gin


    SWTN_CAR_38_MB.abk
    39 GIN_Porsche_Cayenne.gin


    SWTN_CAR_39_MB.abk
    40 GIN_Acura_ITR.gin


    SWTN_CAR_40_MB.abk
    41 GIN_MustSal_Ramp_V2_CD.gin


    SWTN_CAR_14_MB.abk
    42 GIN_Mustang_Drag.gin


    SWTN_CAR_12_MB.abk

    Friday, February 19, 2021

    NFSMW Car VLT Values Documentation

    This document is based on the MWPS templates by FOX (a.k.a Lexal), with some changes and additions. It might not be 100% accurate as well.

    Node: frontend/vehicles/<region>/<brand>/<model>

    Cost: car's in-game cost in Career Mode

    IsCustomizable: determines whether the car can be added to Career garage/My Cars; if set to false, it will appear in Bonus category only.

    manufacturer: sets the manufacturer logo, check list of manufacturers in NFSMW Unlimiter's UnlimiterData\_CarManufacturers ini file.

    region: car's region
    values: 0=north_america; 1=japan; 2=europe

    UnlockedAt: determines at what BL position of player in career mode the car gets unlocked.


    Node: pvehicle/default/<class>/<section>/<name>

    To change the amount of stuff like TurboSND, brake_updates, etc., right click on the pvehicle node of the car, select Edit Fields and change the array size of the element you want.

    TurboSND: sound used for the turbo/supercharger

    VerbalType: copspeech related: code determines what cops will call your car

    MASS: self-explanatory: mass of car expressed in kilograms

    MODEL: sets up the collision (Collision64/Collision) from GLOBALB and the model (Visual)

    engineaudio: sound used for the engine

    TENSOR_SCALE: seems to be overall handling speed scale balancing
    the bigger 2nd value is the slower the car will respond to steering input
    countered by increasing of 1st and 3rd value

    HandlingRating: used to set min and max handling bars length: doesn't take effect from base or end grip values but its increase is dependent on chassis and tires values
    values range from 37-98 for 1st set and 90-100 for 2nd set

    brakes: sets up brake nodes to use

    chassis: sets up chassis nodes to use

    engine: sets up engine nodes to use

    tires: sets up tires nodes to use

    transmission: sets up transmission nodes to use

    induction: sets up induction nodes to use

    brakes_upgrades: amount of brake upgrades the car has.

    induction_upgrades: amount of turbo/supercharger upgrades the car has.

    tires_upgrades: amount of tires upgrades the car has.

    engine_upgrades: amount of tire upgrades the car has.

    transmission_upgrades: amount of transmission upgrades the car has.

    nos_upgrades: amount of nitrous upgrades the car has.

    chassis_upgrades: amount of chassis upgrades the car has.



    Node: ecar/default/<class>/<name>

    BodyDive: maximum vector-based movement of front of car body
    1st value - Degrees/G
    2nd value - Max G
    3rd value - Degrees/sec

    RideHeight: (in-race only) visible body height

    TireOffsets
    in format x, y, z, w
    x axis: car front = +, car rear = -
    y axis: left side = +, right = -
    z axis: up = +, down = - note: will move WHEELS [up or down] regarding CAR BODY, during race body will be on normal level
    unlike wheels that might be BELOW ground
    w - wheel diameter scaling: measured in (overall wheel size in mm/2)/1000; you can measure overall tire size in https://tiresize.com/calculator/ or you can calculate the game wheel diameter directly using this formula: (((tire width in mm*sidewall number divided by 100)*2+rim size in mm)/1000)/2
    NOTE: CAR BODY height will be changed to match wheel size
    all axles have point 0 in center of line between front left and rear right wheel or between front right and rear left

    BodySquat: maximum vector-based movement of rear of car body
    1st value - Degrees/G
    2nd value - Max G
    3rd value - Degrees/sec

    CamberRear: angle between the vertical axis of the wheel and the vertical axis of the vehicle
    positive values for bottom of wheel being further out than top, negative for opposite effect
    common value is 0.18

    CamberFront: angle between the vertical axis of the wheel and the vertical axis of the vehicle
    positive values for bottom of wheel being further out than top, negative for opposite effect
    common value is 0.22

    FECompressions: used to adjust height of car body regarding wheels in frontend menus
    common value range is 2x0.10-2x0.20

    TireSkidWidth: aka tire width
    values are 2x0.(tire width in mm)

    TireSkidWidthKitScale: tire width per kit
    default values are 2x1; values are a multiplier of TireSkidWidth

    WheelSpokeCount: number of spokes in rims
    common value range N/A since it differs per car

    KitWheelOffsetRear: used to move wheels along axis Y when bodykits are used
    values range from 0 to 128: applies to REAR axle

    KitWheelOffsetFront: used to move wheels along axis Y when bodykits are used
    values range from 0 to 128: applies to FRONT axle

    ReflectionOffset: distance of floor reflection from car model in frontend.
    values range from -0.15 to 0.05

    BodyRoll: maximum vector-based movement of entire car body towards left or right
    simply put - car body leaning sideways
    1st value - Degrees/G
    2nd value - Max G
    3rd value - Degrees/sec


    Node: brakes/default/<name>

    BRAKES: overall braking power per axle
    common value range is 300/400-650/700: mass dependent

    EBRAKE: handbrake power: should be larger than BRAKES value by at least 10% and larger than overall car horsepower
    common value range is 400-800: mass dependent

    BRAKE_LOCK: BRAKES field values multiplier and braking force distribution ratio
    common value range is 1.00 for front axle and 3.20-3.60 for rear axle


    Node: chassis/default/<name>

    WHEEL_BASE: distance between the centers of the front and rear wheels
    common value range N/A since it differs per car

    DRAG_COEFFICIENT: air resistance of object travelling in a non-vacuum environment such as air
    common value range is 0.25-0.42

    SHOCK_VALVING: shock absorber oil flow restriction
    common value range is 2x15-2x24

    RIDE_HEIGHT: aka ground clearance
    common value range is 2x6-2x9

    SHOCK_STIFFNESS: minimum pressure inside shock absorber in pounds per square inch
    common value range is 2x30-2x80: acceleration and mass-dependent

    SHOCK_BLOWOUT: maximum size by which a dampener can compress in inches: stock same as upgraded
    common value range is 5-8

    SHOCK_EXT_STIFFNESS: maximum shock absorber rebound force
    common value range is 2x40-2x80: acceleration-, downforce- and mass-dependent

    SWAYBAR_STIFFNESS: self-explanatory: probably expressed in pounds per square inch
    common value range is 2x200-2x450: acceleration and mass dependent

    ROLL_CENTER: vertical center of gravity [probably in inches]
    common value range is 8-10

    TRAVEL: maximum length by which a shock can be extended if car wheels don't have contact with road surface: stock commonly higher than upgraded
    common value range is 2x6-2x8: acceleration and mass dependent

    SPRING_STIFFNESS: overall coilover pressure in pounds square inch
    common value range is 2x400-2x700

    AERO_CG: overall distribution of aerodynamic force on the car body: values between 0 and 100: 0 for max in rear, 100 for max in front
    common value range is 47-51

    SPRING_PROGRESSION: maximum compression speed/rate for spring to achieve maximum stiffness: stock smaller than upgraded higher values will make springs stiffer faster so car won't shove ground on slopes but will also increase bouncing on curbs
    common value range is 2x5-2x8

    TRACK_WIDTH: axle length: distance between wheels on a single axle: measured in metres
    common value range N/A since it differs per car

    SHOCK_DIGRESSION: digressive shocks provide smoother ride at higher speeds and absorb body roll also improving cornering: smaller value for smoother ride
    common value range is 2x0.1-2x0.5

    RENDER_MOTION: dependent on ecar node settings in body roll, dive and squat: used as a multiplier of the mentioned values to calculate car body movement
    common value range is 0.50-1.00

    AERO_COEFFICIENT: used to define car aerodynamics factor and overall downforce: value too small will make it slow and too high will push it down to ground too hard making it difficult to drive and car will be constantly hitting road due to excessive amount of downforce
    common value range is 0.15-0.30

    FRONT_AXLE: front axle diameter in inches
    common value range is 1.2-1.5

    FRONT_WEIGHT_BIAS: overall mass distribution: values from 0 to 100: 0 for max rear bias: 100 for max front bias
    common value range is 51-55


    Node: engine/default/<name>

    ENGINE_BRAKING: multiplies maximum torque at current gear and uses it to calculate speed loss with no throttle used
    common value range is 0.70-0.90

    IDLE: minimum operating speed of engine necessary to sustain its work but not enough to move drivetrain components
    common value range is 800-950

    TORQUE: self-explanatory: up to 15 torque values can be used but element count needs to be declared first
    common value range N/A since it differs per car

    MAX_RPM: maximum operating speed of engine before its destruction [drag racing only]
    common value range N/A since it differs per car

    FLYWHEEL_MASS: the higher the mass, the higher the maximum inertia moment and therefore larger amounts of kinetic energy can be stored also the lower the mass, the faster the top speed can be achieved and maintained
    common value range is 9-15

    RED_LINE: maximum safe operating speed of engine
    common value range N/A since it differs per car


    Node: induction/default/<name>_base/<name>_top | induction/default/<name>/<name>_top

    AIR_PRESSURE*: commonly 0.25

    HIGH_BOOST

    LOW_BOOST

    PSI_ARROW_MOVE_SPEED*: always higher value for stock

    PSI: maximum pressure of air taken into the turbine
    common value range is 12-15

    SPOOL: turbine lag: 0 for 'supercharger': anything higher will give 'turbo' upgrade
    common value range is 0.00-0.20

    BOOST_VARIANCE*: pressure drop/rise in chamber


    Node: tires/default/<name>

    SECTION_WIDTH: self-explanatory: measured in milimetres
    common value range N/A since it differs per car

    YAW_CONTROL: equivalent of section-based traction and stability control system: values 1 and 2 for front: values 3 and 4 for rear
    effect similar to dynamic mass bias shifting: highly dependent on WEIGHT_BIAS, AERO_CG, TORQUE_SPLIT and DYNAMIC/STATIC_GRIP values
    common value range N/A since it differs per car: mass and acceleration dependent

    DYNAMIC_GRIP: amount of friction the tires produce when traction is broken, ie when the car is sliding or in a burnout
    common value range N/A since it differs per car: mass and acceleration dependent

    RIM_SIZE: self-explanatory: measured in inches
    common value range is 2x16-2x19

    YAW_SPEED: self-explanatory: rate at which car enters yaw state
    common value range is 0.30-0.70

    ASPECT_RATIO: self-explanatory: ratio of section height to section width
    common value range is 2x30-2x55

    STATIC_GRIP: static grip is the amount of friction the tires are able to produce when they are not spinning, though they can be rolling
    common value range N/A since it differs per car: mass and acceleration dependent

    GRIP_SCALE: tire grip scaling per axle
    common value range is 2x1.00-2x1.10

    STEERING: steering ratio: value of 1.00 means that turning steering wheel by 360 degrees will turn wheels by 36 degrees
    common value range is 0.90-1.10


    Node: transmission/default/<name>

    To change the amount of gears, right click on the transmission node of the car, select Edit Fields and change the array size of GEAR_RATIO (amount of forward gears+neutral+reverse; 9 gears maximum)

    GEAR_RATIO: drivetrain power transfer ratios
    common value range N/A since it differs per car

    DIFFERENTIAL: self-explanatory: differential bias: 0.00 for rear, 0.50 for mid and 1.00 for front
    setting towards front will lock the front wheels more, causing the car to be prone to oversteer: inverse effect if bias set towards rear
    common value range is 2x0.60-2x0.80: 3x0.60-3x0.80 if car is AWD

    GEAR_EFFICIENCY: overall power multiplier on current gear and rpm used to quickly change speed at each gear without any major reconfigurations
    common value set is 9x1.00

    TORQUE_CONVERTER: percentage ratio of torque converter efficiency with automatic transmission usage
    common value range is 0.20-0.80

    TORQUE_SPLIT: torque-to-axle transfer ratio: 0 for RWD, 0.5 for AWD and 1 for FWD
    common value range N/A since it differs per car

    CLUTCH_SLIP: self-explanatory: manual gearbox efficiency ratio
    common value range is 0.70-0.90

    SHIFT_SPEED: shifting interval: stock [should be] higher than upgraded
    common value range is 0.10-0.25

    FINAL_GEAR: final gear ratio determining top speed
    common value range N/A since it differs per car