· 10 years ago · Sep 28, 2016, 03:56 PM
1<Config DebugMode="false"
2 WireframeMode="false"
3 >
4 <BugFixes
5 DPIIndependentCursorSize="-1"
6 FixSunkenMud="true"
7 HandleCursorWithoutDirectX="false"
8 >
9 <WheelmassBug
10 SuspensionFix="true"
11 TireDeformationFix="true"
12 MudSinkingFix="true"
13 MaxDeformationPressure="25e6"
14 />
15 </BugFixes>
16 <Camera
17 CabinCameraMaxAngle="-1"
18 DetachCameraFromSteering="true"
19 NoCabinCameraReset="true"
20 NoAutoZoom="true"
21 NoAdvancedAutoZoom="true"
22 NoAutoZoomOnStations="true"
23 RightSideCameraKey="160"
24 UncapZoom="true"
25 UncapX360Zoom="false"
26 />
27 <ExternalMinimap
28 EnableMinimap="false"
29 MinimapPositionX="-1280"
30 MinimapPositionY="0"
31 MinimapWidth="1280"
32 MinimapHeight="1024"
33 MinimapMarkerSize="32"
34 />
35 <Gameplay
36 AlternateDifflockDamage="false"
37 AlwaysShowDevMenu="true"
38 AlwaysAllowSpawnLocators="false"
39 HardcoreAutoLogs="true"
40 LegacyCloaks="false"
41 LoadPointsPerObjective="-1"
42 NoDamage="false"
43 UnlimitedFuel="false"
44 />
45 <Graphics
46 DisableDOF="true"
47 IncreaseTerrainLOD="false"
48 NoVisualDamage="true"
49 RenderDistanceIncrease="158"
50
51 AspectRatio="-1"
52 FOV="-1"
53 />
54 <HUD
55 HideHUD_SteamInfo="false"
56 HideHUD_3dUI="false"
57 />
58 <Misc
59 AllowCustomObjectsInMP="true"
60 DisableSuspensionDamage="false"
61 FasterFileAccess="true"
62 HavokBufferSize="5000000"
63 ShifterReleaseFix="true"
64 TrailerLoadFix="true"
65 />
66 <Modding
67 CustomizableTrailerBreakoffForce="true"
68 ExtraAddonProperties="true"
69 MapsCanOverrideCloakMesh="true"
70 OrientableShafts="true"
71 STPControlledConstraints="true"
72 SupportCustomShafts="true"
73 SupportSkidSteering="true"
74 SupportAdditionalConstraints="true"
75 SupportSilentLinkedSteering="true"
76 SuspensionTunableInWheelsSets="true"
77 UnclampedXML="true"
78 UnclampedManualLoads="true"
79 UnpresetWheels="true"
80 WheelsetsCanRequireAddons="true"
81 >
82 <ConstraintController IncreaseKey="97" DecreaseKey="99" ResetKey="101"/>
83 <ConstraintController IncreaseKey="100" DecreaseKey="102" ResetKey="101"/>
84 <ConstraintController IncreaseKey="103" DecreaseKey="105" ResetKey="101"/>
85 </Modding>
86 <NewGameOptions
87 AlternateTruckMenu="true"
88 AlternateMapMenu="true"
89 DisableCloaks="true"
90 ShowLockedTrucksAtSelectionScreen="false"
91 >
92 <TruckGroup Name="Tractors"
93 Keyword="Type K-700"
94 Keyword="K-710"
95 Keyword="K701"
96 />
97 <TruckGroup Name="Large vehicles"
98 Keyword="12x12"
99 Keyword="16x16"
100 Keyword="Maz 7410"
101 Keyword="Locomotive_M62"
102 />
103 <TruckGroup Name="4 Axle"
104 Keyword="8x8"
105 Keyword="T813"
106 Keyword="M1070"
107 Keyword="Type D-535"
108 Keyword="Type D-537"
109 Keyword="Type E-7310"
110 />
111 <TruckGroup Name="3 Axle"
112 Keyword="6x6"
113 Keyword="KPA3-214"
114 Keyword="Type B-131"
115 Keyword="Type C-255"
116 Keyword="Type C-4310 (White)"
117 Keyword="Type C-4310"
118 Keyword="Type C-4320"
119 Keyword="Type C-432010 (blue)"
120 Keyword="Type C-432010"
121 Keyword="Type C-65111"
122 Keyword="Type C-65115"
123 Keyword="Type C-6520"
124 Keyword="Type C-6522"
125 />
126 <TruckGroup Name="2 Axle"
127 Keyword="4x4"
128 Keyword="Type A-469"
129 Keyword="Type B-130"
130 Keyword="Type B-66"
131 Keyword="Type K-700"
132 />
133 <TruckGroup Name="Default trucks"
134 Keyword="Type A-469"
135 Keyword="Type B-130"
136 Keyword="Type B-131"
137 Keyword="Type B-66"
138 Keyword="Type C-255"
139 Keyword="Type C-4310 (White)"
140 Keyword="Type C-4310"
141 Keyword="Type C-4320"
142 Keyword="Type C-432010 (blue)"
143 Keyword="Type C-432010"
144 Keyword="Type C-65111"
145 Keyword="Type C-65115"
146 Keyword="Type C-6520"
147 Keyword="Type C-6522"
148 Keyword="Type D-535"
149 Keyword="Type D-537"
150 Keyword="Type E-7310"
151 Keyword="Type K-700"
152 />
153 <TruckGroup Name="1 Star"
154 Keyword="(*)"
155 />
156 <TruckGroup Name="2 Stars"
157 Keyword="(**)"
158 />
159 <TruckGroup Name="3 Stars"
160 Keyword="(***)"
161 />
162 <TruckGroup Name="4 Stars"
163 Keyword="(****)"
164 />
165 <TruckGroup Name="5+ Stars"
166 Keyword="(*****)"
167 Keyword="(******)"
168 Keyword="(*******)"
169 />
170
171 <MapGroup Name="Default maps"
172 Keyword="coast"
173 Keyword="flood"
174 Keyword="hill"
175 Keyword="plains"
176 Keyword="river"
177 Keyword="volcano"
178 />
179 </NewGameOptions>
180 <TimeCycle
181 FreezeTimeOfDayAt="-1"
182 GameDayDurationInRealSeconds="-1"
183 />
184 <Winch
185 BatteryPoweredWinch="false"
186 ReleaseWinchKey="88"
187 WinchRange="-1"
188 />
189 <OtherDlls
190 LoadDll="SpintiresPlusPlugin.dll"
191 LoadDll="Plugin2.dll"
192 d3d9DllOverride=""
193 />
194</Config>
195
196<!--
197DebugMode: creates an additional window and displays some mod-related information including per-tire
198
199ground pressure.
200 It is recommended to play the game in windowed mode when using this option.
201 TWoW means Total Weight on Wheel, it doe not include the wheel's own weight.
202
203WireframeMode: displays 3d objects in wireframe mode. Objects with less than 3 polygons are still
204
205displayed in textured mode
206 or you wouldn't see anything (the game you see is a texture drawn on 2 triangles in front of
207
208your screen).
209 When this is enabled use F3 to switch to wireframe mode, and F2 to switch back to normal view.
210
211///////////////////////////////////////////////////////
212//////////////////// BUGFIXES SECTION////////////////////
213///////////////////////////////////////////////////////
214DPIIndependentCursorSize: prevents mouse cursor from disappearing when setting windows DPI to more than
215
216100%.
217 You MUST set DPIIndependentCursorSize to a power of 2 ( 8, 16, 32, 64, 128, or 256... pixels).
218 At 100% DPI the game uses a 32 x 32 pixel cursor.
219 0 or negative values disable the feature.
220 Other values will make the cursor invisible.
221
222FixSunkenMud: fixes a bug where the mud randomly becomes invisible and your vehicle appear to float
223
224over the ground. If your enable
225 wireframe mode you'll notice that the visual representation the mud is below the ground.
226 WARNING: if you have saved your game while the mud was below ground the bugfix cannot restore
227
228it.
229
230HandleCursorWithoutDirectX: Use Windows itself to display the cursor ingame instead of DirectX. Try
231
232this if your cursor still
233 disappears with DPIIndependentCursorSize. HandleCursorWithoutDirectX only has an effect when
234
235you play in fullscreen mode (in
236 windowed mode the game already uses Windows' basic functions to displays the cursor).
237
238///////////////////////////////////////////////////////
239////////////// WHEELMASS BUG SECTION //////////////////
240///////////////////////////////////////////////////////
241
242SuspensionFix: supports 2 new truck xml tokens: SuspensionStrength_Normalized and
243
244SuspensionDamping_Normalized.
245 If present they override SuspensionStrength and SuspensionDamping in a manner that makes
246
247suspension behavior
248 independent from wheel mass.
249 Typical order of magnitude: 5.0 for strength, 50 for damping.
250 To port an existing suspension use the formula: Normalized value=old value/(1/wheelmass +
251
2521/parent frame mass)
253 If SuspensionFix is enabled but the truck does not have the *_Normalized tokens then your
254
255suspension still varies with wheelmass.
256 First component of the wheelmass bug fix.
257
258TireDeformationFix: make tire softness independent from wheel mass. Can also prevent light soft wheels
259
260under heavy load from
261 clipping through the ground.
262 Second component of the wheelmass bug fix.
263
264MudSinkingFix: completely changes the condition that determines whether you sink into the mud or not.
265 The old one made light wheels sink more than heavy ones, the new one is ground pressure based.
266 This affects how you sink under your own weight, not how fast your tires dig the ground when
267
268spinning/slipping.
269 Third component of the wheelmass bug fix.
270
271MaxDeformationPressure: defines what ground pressure would give the (presumed) highest possible mud
272
273deformation when using
274 the MudSinkingFix feature. Surface is not deformed if you apply less than
275
276MaxDeformationPressure/255 so you could also
277 see this as a difficulty setting.
278 Has no effect if MudSinkingFix is turned off.
279 Defaults to 25MPa (25e6)
280
281///////////////////////////////////////////////////////
282//////////////////// CAMERA SECTION////////////////////
283///////////////////////////////////////////////////////
284
285CabinCameraMaxAngle: how far you can turn the cabin camera left and right, by default the game allows
286
287for +/- 90 deg
288 Only applies to cabin camera for which IsHood="true" (if it's false you already have +/-180
289
290angle)
291 Negative values disable the feature.
292
293DetachCameraFromSteering: prevents the camera from turning to point where your wheels are steering.
294
295NoCabinCameraReset: prevents cabin camera from automatically resetting forward when the truck is
296
297moving.
298
299NoAutoZoom: prevents automatic zoom reset after 64s.
300
301NoAdvancedAutoZoom: prevents autozooming when entering/leaving advanced mode
302
303NoAutoZoomOnStations: prevents automatic camera adjustments when stopping at a gas station, lumber
304
305yard, garage or objective.
306
307RightSideCameraKey: hold this key while pressing the 1 or 2 keys to see your truck from
308 the right side instead of the left.
309 You must enter the "decimal virtual key code" of the desired key.
310 Google "decimal virtual key code" if you don't know what it is. When you find a table where 88
311
312corresponds to X and 160 to left shift you're at the right place.
313 Negative values disable the feature.
314
315UncapZoom: allows unlimited zooming/unzooming.
316 WARNING: zooming too much will make the camera flip and move away.
317
318UncapX360Zoom: identical to UncapZoom, but for $#!%@ X360 controller users.
319
320///////////////////////////////////////////////////////
321/////////////// EXTERNAL MINIMAP SECTION///////////////
322///////////////////////////////////////////////////////
323
324EnableMinimap: Enables a separate window that display a simple map of the current level along with
325
326nearby trucks.
327 This feature REQUIRES to have more monitors that what the game uses in fullscreen mode.
328
329MinimapPositionX, MinimapPositionY: coordinates of the minimap window on your desktop.
330 negative X are to the left of your main monitor.
331 Y=0 corresponds tot he top of your main monitor.
332
333MinimapWidth,MinimapHeight: size in pixels of the minimap window
334
335MinimapMarkerSize: size of the markers on the minimap.
336
337///////////////////////////////////////////////////////
338///////////////// GAMEPLAY SECTION ////////////////////
339///////////////////////////////////////////////////////
340
341AlternateDifflockDamage: use an alternate method to calculate difflock stress.
342 Slightly more realistic that the default one since it's based on the difference of angular
343
344speed of your wheels, and a lot less forgiving.
345
346AlwaysShowDevMenu: shows the developer's menu (with options to spawn, reload, refill, vehicles) in all
347
348game modes.
349
350AlwaysAllowSpawnLocators: allows using spawn locators outside the proving grounds
351
352LegacyCloaks: changes what parts of the F1 minimap are revealed what several cloaks overlap.
353 With default cloaks everything around a cloak is revealed when you remove it, even it part are
354
355within the radius of action
356 of another cloak.
357 With legacy cloaks you have to remove ALL cloaks covering a spot to see it on the minimap.
358
359HardcoreAutoLogs: allow automatically loading logs at lumber yards in hardcore mode.
360
361LoadPointsPerObjective: the number of loadpoints needed to complete an objective.
362 Valid range: 0-127. Values 128 to 255 should also be possible but will cause glitches in the
363
364map.
365 Values past 255 are not supported.
366 -1 disables the feature
367
368NoDamage: self explanatory.
369
370UnlimitedFuel: self explanatory.
371
372///////////////////////////////////////////////////////
373////////////////// GRAPHICS SECTION ///////////////////
374///////////////////////////////////////////////////////
375
376DisableDOF: disables the depth of field feature (DoF blurs what is very close and very far from the
377
378camera).
379
380IncreaseTerrainLOD: slightly increase terrain LOD, particularly visible inside rivers.
381 But uses a lot of CPU power.
382
383NoVisualDamage: prevents visual representation of damage such as bumps and cracks on the chassis of the
384
385truck.
386 Your damage bar will still fill up and effects such as sparks, oil leak, smoke still trigger
387
388when your truck is damaged enough.
389
390RenderDistanceIncrease: increase mud rendering distance by this amount, also affect some other objects,
391
392causes severe LOD popping.
393 Default value: 0, Max 255, 0 disables the feature, values past 18 are pretty much meaningless
394
395due to an additional engine limitation.
396 FYI the default rendering distance is 6 units, it becomes 6+RenderDistanceIncrease.
397
398Aspect ratio: the ratio of your screen's width divided by its height. You've got to enter values like
399
4001.33333 or 1.25, not 4:3 or 5:4.
401 default value: -1. Negative values disable the feature.
402
403FOV: the width in degrees of the field of view of the camera.
404 Valid range 1-359, default value: -1. Negative values disable the feature
405
406///////////////////////////////////////////////////////
407//////////////////// HUD SECTION //////////////////////
408///////////////////////////////////////////////////////
409
410HideHUD_SteamInfo: removes your steam account and avatar from the HUD.
411 WARNING: it also hides speed and AngVel from the Dev tools.
412
413HideHUD_3dUI: removes compass, shifter, and truckdata from the HUD.
414
415///////////////////////////////////////////////////////
416//////////////////// MISC SECTION /////////////////////
417///////////////////////////////////////////////////////
418
419AllowCustomObjectsInMP: prevents the "Game files differ from original package..." error when playing MP
420
421maps witch custom objects.
422
423DisableSuspensionDamage: disables damage received when driving at medium speed over rough terrain
424 and disables speed damage (damage received when driving very fast over any terrain, even
425
426perfectly flat).
427
428FasterFileAccess: Reduces the time it takes the game to read files. Most visible consequence is faster
429
430menus (for those that need
431 to read many files), notably the garage menu, the truck selection, the map menu, and the new
432
433game menu.
434 This option should also reduce load times.
435 How it works? It tells PHYSFS not to check if each component if a path is a symbolic link.
436
437HavokBufferSize: The size in bytes of the buffer havok uses to store temporary data (such as
438
439collisions). Try increasing this if the game crashes
440 when spawning too many objects or when 2 vehicles approaches each other.
441 By default the game uses 500000.
442 0 disables the feature.
443
444ShifterReleaseFix: prevent the game from turning off cruise controls when you engage the auto gearbox.
445
446TrailerLoadFix: allows forcefully loading logs onto a trailer even if your truck is "incorrectly
447
448positioned".
449 The further you are from the correct position, the more likely you are to trigger an Havok
450
451explosion.
452
453///////////////////////////////////////////////////////
454////////////////// MODDING SECTION// //////////////////
455///////////////////////////////////////////////////////
456tldr: additional features that mods using SpintiresPlus may need/use.
457
458ConstraintController: see STPControlledConstraints
459
460CustomizableTrailerBreakoffForce: Allows the modders to define the force needed for their trailers to
461
462break off trucks.
463 Modders, please keep in mind that an unbreakable trailer link is unrealistic, but it can be
464
465though.
466 An example is available in the example section.
467
468ExtraAddonProperties: Allows addons to modify more properties of your turck:
469 Damage sensation (snorkels):
470 Damage sensation defined in addons overwrites the one defined in the truck, coordinates
471
472are relative to the truck's frame (not the addon's).
473 WARNING for modders: only one snorkel can be active per truck at a given time. If you
474
475mount 2 snorkel addons on a truck, only the damage sensation
476 from the first one is taken in account. Please make your snorkels mutually exclusive.
477
478 Engine torque (turbocharger, secondary engines...):
479 Torque modifiers are expressed as a multiplier to engine torque. You can have several
480
481addons that modify torque, they are
482 multiplicatively combined.
483 Since any_value/0.0 = infinity, multiplying your engine torque by 0 cannot be undone
484
485when removing the addon.
486 An example is available in the example section.
487
488 Gearbox (gearbox addons):
489 Gearbox addons work like snorkels, with the same restriction of being unable to have 2
490
491gearbox addons installed at
492 the same time.
493
494MapsCanOverrideCloakMesh: map makers can now include an additional xml file with their maps to change
495
496how cloaks will look like
497 on their maps
498 An example is available in the example section.
499
500OrientableShafts: Allows forcing the endpoints of shafts (BoneStart and BoneEnd) to be along a specific
501
502axis relative to the truck
503 rathen than being along truck X.
504 In the base game, shaft endpoints are automatically rotated so that they face each other. This
505
506is disabled for shafts that use
507 a custom orientation.
508 An example is available in the example section.
509
510STPControlledConstraints: Adds a new form of controlled constraints that can be moved without going
511
512into the advanced menu.
513 Each STPControlledConstraint in the mod(s) specifies what ConstraintController drives it, and
514
515you, the reader
516 have to create <ConstraintController/> in SpintiresPlus_config.xml to assign keys to constraint
517
518controllers and
519 those keys will drive the associated articulation(s) on your truck.
520 Several constraints can use the same controller.
521 ConstraintController have 3 properties:
522 -IncreaseKey: they key used to move the articulation(s) in one direction.
523 -DecreaseKey: they key used to move the articulation(s) in the other direction.
524 -ResetKey: they key used to reset the articulation(s) to its/their default position.
525 The default 3 ConstraintController use numpad keys 1,4,7 to move in one direction and 3,6,9 for
526
527the other.
528 They all use numpad 5 to reset, but it is not required to use the same reset key for all.
529 Once again, you define keys by giving their virtual key code. Google "decimal virtual key code"
530
531if you don't
532 know what it is. When you find a table where 88 corresponds to X and 160 to left shift you're
533
534at the right place.
535 There is no limit to the number of constraint controllers you can define.
536 An example showing how to create an STPControlledConstraint is available in the example
537
538section, along with additional
539 information for modders.
540 For an example of ConstraintController, look up.
541
542 PS: constraint controllers have nothing to do with xbox controllers or gamepads.
543
544
545SupportCustomShafts: Allows specifying custom models fro driveshafts in the <Shaft> nodes.
546 An example is available in the example section.
547
548SupportSkidSteering: supports the SkidSteeringMode XML token in Truck/Wheels/Wheel, which allows for
549
550tank-like steering.
551 SkidSteeringMode has 2 possible values:
552 -ForwardReverse, which makes wheels/tracks on one side go forward, and those on the other side
553
554go backward when you steer.
555 -ForwardBrake is like ForwardReverse but wheels/tracks are braked instead of going backward.
556 Both modes only differ when steering in 1st gear or reverse. At higher gears, brakes are used
557
558to steer anyway.
559
560 Information for DRIVERS:
561 -ForwardReverse only engages reverse mode in 1st and reverse gears, when you are steering as
562
563sharp as possible. In all other cases (small
564 deviations at any speed, sharp turns at high speed...) only the brakes are used for steering.
565 -All wheels of a side are "locked" at the same speed, always. This will not cause difflock
566
567damage. Admittedly, my locking system still has room for improvement...
568 -Difflocking obviously disables steering.
569 -AWD mode has no effect.
570 -Skid steering vehicles can stall an any gear if they don't have enough power to pull your
571
572stuff.
573
574 Information for MODDERS:
575 -All wheels using SkidSteeringMode are powered.
576 -Skid steering wheels are put in 2 groups: left-side group or right-side goup depending on if
577
578they have RightSide="true".
579 -If a vehicle has at least one wheel using SkidSteeringMode, then wheels not using skid
580
581steering are NOT powered.
582 -All wheels on a side are locked at the same PERIPHERAL speed, meaning that wheels of different
583
584sizes rolling on the same track are supported.
585 -Your vehicle will not work if all skid steering wheels are on the same side.
586 -Skid steering requires using a gearbox in STP format, which basically means that:
587 -you supply maximum ENGINE torque instead of wheel torque in the <Motor> section
588 -you supply total transmission ratio for each gear in the <Gear> section. Give a
589
590positive ratio for reverse gear.
591 -obviously this is not compatible with the base game's gearbox, so all non-skid
592
593steering wheels are not powered.
594 -STP uses the an engine map inspired by a Caterpillar C15, that means:
595 50% to full torque from 0 to 1000 RPM
596 full torque from 1000 to 1500RPM
597 full to 0 torque from 1500 to 3500RPM.
598 -MaxDeltaAngVel is repurposed as a fuel consumption multiplier.
599 -it is strongly recommended to set SteeringAngle to 0 on all wheels using SkidSteeringMode, or
600
601your wheels will use both steering modes at once.
602 Tip : keep in mind that skid steering requires a lot of torque! If you run into cases where
603
604your vehicle refuses to steer at high gears even on flat hard ground, add torque.
605 An example is available in the example section.
606
607SuspensionTunableInWheelsSets: supports tuning suspension and hardpoint offsets from inside the
608
609WheelsSets section
610 Consult the Example section for a list of available tokens.
611
612SupportAdditionalConstraints: supports 2 new constraints between physical bodies: PointToPlane,
613
614PointToPath.
615 PointToPlane:
616 Point to plane allows all rotations and blocks one translation.
617 Picture yourself a ball on a table: it can roll in any direction, you can push it
618
619parallely to the table but you
620 cannot ram it through the table (and in this case, you cannot lift it either).
621 You define a PointToPlane constraint by giving a vector perpendicular to the table
622
623(AxisLocal) and one point that belongs to the table (PivotOffset)
624 PointToPlane does NOT support motors, but should be breakable or malleable (not
625
626tested).
627 PointToPlane will trigger the error "Unsupported constraint type '14'". Ignore it.
628
629 PointToPath:
630 Locks the position of the child object on a path and allows all rotations. Typically
631
632used to keep track segments on a path looping
633 around the wheels.
634 PointToPath does NOT support motors, but should be breakable or malleable (not tested).
635 PointToPath will trigger the error "Unsupported constraint type '3'". Ignore it.
636 PointToPath has 3 modes:
637 -PositionOnly where the child body's origin is locked onto the path
638 -AlignXToPath where additionally the child object's X vector is forced to be
639
640along the path
641 -FullyConstrained to path, like X aligned but the child's Z vector also points
642
643in a direction of your choosing.
644 Upon creation, ST+ will display the coordinates of the child body relative to its
645
646parent in the debug console. You can use that
647 to build up your path.
648
649 Chain:
650 Allows all rotations and blocks all translations between a long chain of bodies (20+).
651
652While you could achieve a similar result by putting ragdoll
653 constraints between each element of the chain, the point of the Chain constaint is
654
655increased stability (ie: less Havokslposions and twitching).
656 For technical reasons (ex: the chain requires many bodies, but typical constrains only
657
658have 2) the Chain is build as a parasite inside
659 the PointToPlane and PointToPath constraints. Chain-specific attributes all start with
660
661"Chain_" .
662 Basically you create your PointTo*** constraint as usual, then add
663
664Chain_Mode="StartChain" to make its (child) body the first of the chain.
665 Same thing for the next body, but you add Chain_Mode="ContinueChain" inside the
666
667constraint.
668 For the last body, add Chain_Mode="EndChain", but there is a catch: when ending a
669
670chain, the chain constraint get created instead of
671 the PointTo*** one, so you have the create the last PointTo*** constraint again
672
673(but without Chain_Mode this time).
674 You cannot add bodies to 2 chains at the same time, you must start one chain, fill it
675
676up, end it, and THEN you can start another.
677 One body cannot be put twice in chain (ie: no looping chains).
678 Chains do not support BreakOffThreshold and MalleableStrength (use Chain_Stiffness
679
680instead).
681
682 Tip 1: if you're making tracks, don't forget that you need to constraint at least every other
683
684(1 out of 2) track element if you
685 use point to plane, or likely all elements if you use point to path.
686 Tip 2: if you're making tracks, the use of _templates is HIGHLY recommended.
687 Examples are available in the example section.
688
689 Additionally each STP constraint allows to override the "quality" of its bodies. Quality
690
691reflects the amount of CPU time havok will spend
692 in trying to prevent those objects from clipping through others.
693 You override quality by defining SetChildQuality or SetParentQuality in a constraint.
694
695Use those if you can't prevent clipping by increasing
696 the size of your cdt mesh.
697 Valid values are 0 to 8, where 8 is the most CPU expensive. Telekinesys's
698
699recommendations are:
700 0: for fixed bodies.
701 1: for moving objects with infinite mass
702 2: for debris objects
703 3: for debris objects with simplified collisions with fixed/landscape objects.
704
705Spintires uses this by default.
706 4: for moving bodies, which should not leave the world, but you rather prefer those
707
708objects to tunnel through the world than dropping frames because the engine.
709 5: for objects which you cannot afford to tunnel through the world at all.
710 6: for very fast objects (bullets).
711 7: custom, don't use.
712 8: for rigid body character controllers.
713
714SupportSilentLinkedSteering: allows using IsLinkedSteering=true without revving up the engine when
715
716steering.
717 An example is available in the example section.
718
719UnclampedXML: prevents the "Clamping node XXX value YYY (min/max is ZZZ)" error and allows any value
720
721for those settings.
722
723UnclampedManualLoads: prevents the "Clamping node XXX value YYY (min/max is ZZZ)" error on the
724
725ManualLoads paremeter.
726 Seperated from UnclampedXML because UnclampedManualLoads does NOT work on the editor, but
727
728UnclampedXML does.
729
730UnpresetWheels: supports 5 new wheel xml tokens:
731 - Mass_Numeric is the wheel's mass in kg
732 - Friction_Numeric is its friction coefficient, typically in the 0.0 to 2.0 range.
733 - SubstanceFriction_Numeric same as Friction_Numeric, but used when in the mud. Chained wheels
734
735have it at 1.8.
736 - Softness_Numeric ranges from 0.0 to 1.0, where 1 means hard tires.
737 - Havok_AllowedPenetrationDepth determines how deep a wheel can clip through other objects for
738
739the sake of resolving "impossible" constraints.
740 It has nothing to do with mud/water.
741 This setting should only be used by people familiar with Havok's inner workings. The
742
743game defaults this to radius/2, Havok recommends 5-20%
744 of the smallest length of the object.
745 If present the _Numeric tokens override the mass/softness/friction presets.
746 Keep in mind that the softness preset also sets RadiusDelta (difference between wheel radius
747
748and collision cylinder radius)
749 which is not overwritten by this mod.
750 An example is available in the example section.
751
752WheelsetsCanRequireAddons: Hides some wheelsets in the garage menu if you don't have the addons they
753
754require.
755 Removing an addon that is required for your current wheelset changes your wheels to default
756
757wheelset.
758 You cannot put RequiredAddons for the default wheelset.
759 WARNING: when exporting your mode to the workshop, RequiredAddons are NOT automatically
760
761converted to modstring codes. You'll
762 have to do the replacement manually.
763 An example is available in the example section.
764
765///////////////////////////////////////////////////////
766///////////////// NEW GAME SECTION ////////////////////
767///////////////////////////////////////////////////////
768
769AlternateMapMenu: replaces the map selection menu by a scrollable, sortable, and searchable one. Like
770
771with the AlternateTruckMenu,
772 you have to define your own sorting categories if you want any sorting.
773 Map categories are defined like truck categories, just with "MapGroup" instead of "TruckGroup".
774 FasterFileAccess="true" is recommended when using this option.
775
776AlternateTruckMenu: Replaces the truck selection menu with one that is faster, allows searching,
777
778configuring addons/wheelsets, and
779 where trucks are sorted by categories. You must define your own categories if you want trucks
780
781to be sorted.
782 Enabling AlternateTruckMenu also enables AlternateMapMenu (I need it to reset addon selection
783
784when you change maps).
785 FasterFileAccess="true" is recommended when using this option.
786 Catergories are defined like this:
787 <NewGameOptions/>
788 ...
789 <TruckGroup Name="Tractors" //name of the 1st category
790 Keyword="Type K-700" //case sensitive keyword to match
791 Keyword="K-710"
792 Keyword="K701"
793 />
794 <TruckGroup Name="Large trucks" //name of the 2nd category
795 Keyword="12x12" //case sensitive keyword to match
796 Keyword="16x16"
797 Keyword="Maz 7410"
798 />
799 </NewGameOptions>
800 Truck names that match match at least one keyword are added to the category.
801 Trucks can appear in several categories.
802 There is no limit to the number of categories (except RAM amount :) ).
803 TIp: searching for "*" on the addon/trailer menu shows addons/trailers currently selected.
804
805DisableCloaks: self explanatory. Takes effect when starting a new map.
806
807ShowLockedTrucksAtSelectionScreen: Locked trucks also appear in the startup truck selection list and
808
809can be customized.
810 Warning: there is no way to tell if a truck is locked or not at this screen.
811
812MapGroup: see AlternateMapMenu
813
814TruckGroup: see AlternateTruckMenu
815
816///////////////////////////////////////////////////////
817///////////////// TIME CYCLE SECTION //////////////////
818///////////////////////////////////////////////////////
819
820FreezeTimeOfDayAt: locks time of day at a specific hour.
821 Valid range: 0-24. For example 14.5 would lock time at 2h30 PM.
822 Negative values disable the feature.
823
824GameDayDurationInRealSeconds: the duration of a game day in real life seconds. This does NOT affect
825
826fuel consumption even
827 if it is expressed in liters per real life minute.
828 The original game uses 1 day = 2700s.
829 Negative values or 0 disable the feature.
830
831///////////////////////////////////////////////////////
832///////////////// WINCH SECTION ////////////////////
833///////////////////////////////////////////////////////
834BatteryPoweredWinch: replaces Power Take Off winches with battery powered winches.
835 It allows winching when the engine is not running (even if your car went belly up).
836
837ReleaseWinchKey: press this key to release the winch if one is currently attached.
838 You must enter the decimal virtual key code of the desired key.
839 Google "decimal virtual key code" if you don't know what it is. When you find a table where 88
840
841corresponds to X and 160 to left shift you're at the right place.
842 Negative values disable the feature.
843
844WinchRange: the length in meters of your winch cable. Due to engine limitations you cannot go past 40m.
845 Default value is 14m.
846 Any negative value disables the feature.
847
848///////////////////////////////////////////////////////
849////////////// 3RD PARTY DLL SECTION //////////////////
850///////////////////////////////////////////////////////
851LoadDll: allows loading other 3rd party dlls/plugins at startup
852 Those dll's DllMain() will be executed before the game's code executes (at this stage it is
853
854still encrypted by steam)
855 They may additionally export an __stdcall void OnD3DCreate9(void) function that will be called
856
857before the game creates its
858 direct3d context (hint: it's a good time to patch the game's code).
859
860d3d9DllOverride: full path to a dll to load instead of windows\system32\d3d9.dll .
861 Try it if you are using an overlay/graphic enhancer/other hacks that do not work as a plugin.
862
863//////////////////////////////////////////////////////////////////////////
864////////////// XML Examples (this section is for modders) ////////////////
865//////////////////////////////////////////////////////////////////////////
866
867All new XML tokens are mentioned in at least one example.
868They are marked with a "//". Same goes for repurposed tokens.
869If it's not in the examples, it does not exist.
870All new tokens can be used in _templates and are compatible with inheritance (_parent files).
871
872----
873SuspensionFix:
874 example in classes/trucks/kraz255.xml
875 section _templates/Wheel/RearWheel
876 <RearWheel
877 ConnectedToHandbrake="true"
878 DefaultWheelType="kraz_rear"
879 HardpointOffsetY="-0.244"
880 SuspensionMin="-0.4"
881 SuspensionStrength="0.02"
882 SuspensionStrength_Normalized="5" //Wheelmass independent suspension stiffness
883 SuspensionDamping_Normalized="50" //Wheelmass independent suspension damping
884 Torque="default"
885 />
886
887 Those tokens can also be added directly in Truck/Wheels/Wheel that way:
888 <Wheel _template="FrontWheel" HardpointX="3.8"
889 SuspensionStrength_Normalized="5" //Wheelmass independent suspension stiffness
890 SuspensionDamping_Normalized="50" //Wheelmass independent suspension damping
891 />
892----
893CustomizableTrailerBreakoffForce:
894 example in classes/trucks/trailer_tent.xml
895 section Truck/TruckData
896 <TruckData
897 TrailerCanDetach="true" --TrailerBreakOffThreshold is
898
899not read if the trailer can't detach
900 TrailerBreakOffThreshold="30000.0" //How hard you must crash your truck
901
902before the trailer detaches.
903 //The
904
905default value in the base game is 16000.
906 >
907 ...
908 </TruckData>
909----
910ExtraAddonProperties:
911 example in classes/trucks/kraz_protector.xml
912 <TruckAddon>
913 <TruckData>
914 ------------- damage sensation -----------
915 <Damage //New section, added for the sole purpose of containing
916
917sensation data.
918
919
920
921//Those 2 will replace what is defined
922 SensationMin="(1.77; 3.00; -0.77)" //in
923
924truck.xml/Truck/TruckData/Damage/SensationMin or SensationMax
925 SensationMax="(2.72; 3.00; 0.77)" //You specify the absolute
926
927coordinates in the truck's referential
928
929
930//of the water-damage sensing box.
931 />
932 --------------- Torque part --------------
933 <TruckMotorOverrides TorqueFactor="1.05" > //this addon will add
934
9355% engine torque.
936
937 --------------- Gearbox part -------------
938 <ReverseGear
939 AngVel="0.2" //This addon
940
941will REPLACE the truck's gearbox
942 GearRatio="0.001" //Please
943
944provide both AngVel and GearRatio for compatibility with normal and
945
946
947//skid steering vehicles.
948
949
950//(if you don't, a default conversion factor of 157 will be used)
951 />
952 <HighGear AngVel="6.0" GearRatio="0.04" />
953 <Gear_1 AngVel="0.2" GearRatio="0.001" />
954 <Gear_2 AngVel="1" GearRatio="0.006"/>
955 <Gear_3 AngVel="2" GearRatio="0.013"/>
956
957 <Gear_5 AngVel="3" GearRatio="0.02"/> //Note that Gear_5 here
958
959will have NO EFFECT because Gear_4 is missing.
960
961
962 //Even if the base truck has a 5th gear.
963 </TruckMotorOverrides>
964 </TruckData>
965 ...
966 </TruckAddon>
967----
968OrientableShafts
969 example in classes/trucks/kraz_255.xml
970 section Truck/TruckData/
971
972 <Shafts>
973 ...
974 <Shaft
975 SocketPointA="Shaft4a"
976 SocketPointB="Shaft4b"
977 SocketAOrientation="(0;0;1)" //the shaft's endpoint on SocketPointA
978
979will point toward truck Z
980 SocketBOrientation="(0;1;0)" //the shaft's endpoint on SocketPointB
981
982will point toward truck Y
983 />
984 </Shafts>
985----
986SupportCustomShafts:
987 example in classes/trucks/kraz_255.xml
988 section Truck/TruckData/
989 <Shafts>
990 <Shaft SocketPointA="Shaft1a" SocketPointB="Shaft1b"
991 Mesh="env/My_shaft1" //custom shaft mesh
992 />
993 <Shaft SocketPointA="Shaft2a" SocketPointB="Shaft2b"
994 Mesh="env/My_shaft2" //another custom shaft mesh
995 />
996 <Shaft SocketPointA="Shaft3a" SocketPointB="Shaft3b"
997 Mesh="env/Invalid_mesh_*##%" //will use default shaft and log an
998
999error
1000 />
1001 <Shaft SocketPointA="Shaft4a" SocketPointB="Shaft4b" /> <-will use
1002
1003default shaft, no error displayed
1004 </Shafts>
1005----
1006SuspensionTunableInWheelsSets:
1007 example in classes/truck/kraz255.xml
1008 section Truck/TruckData/WheelsSets
1009 <WheelsSets>
1010 <WheelsSet Title="TunedWheelSet">
1011 <WheelType
1012 Type="kraz_front_highway"
1013 Wheels="0,1"
1014
1015 SuspensionStrength_Normalized="5.0" //Overwrites suspension
1016
1017stiffness and damping when
1018 SuspensionDamping_Normalized="50.0" //using TunedWheelSet.
1019
1020
1021//This modification only applies to wheels 0 and 1 as defined in the Wheels token.
1022
1023 SuspensionMin_Offset="-.5" //This is ADDED to the
1024
1025default wheels' SuspensionMin
1026
1027 HardpointOffsetX="0" //X/Y/Z offsets are
1028
1029ADDED to offsets defined for the default
1030 HardpointOffsetY="-.5" //wheels in
1031
1032Truck/Wheels/Wheel.
1033 HardpointOffsetZ="-.5" //Z offset is also
1034
1035additively combined with Z offset from the wheel.xml.
1036 />
1037 <WheelType
1038 Type="kraz_double_highway"
1039 Wheels="2,3"
1040
1041 SuspensionStrength_Normalized=".05" //Same idea as above, but for
1042
1043wheels 2 and 3 this time...
1044 SuspensionDamping_Normalized=".005" //
1045 SuspensionMin_Offset="0" //
1046 HardpointOffsetX="1.5" //
1047 HardpointOffsetY="1" //
1048 HardpointOffsetZ="0" //
1049 />
1050
1051 Etc...
1052
1053 </WheelsSet>
1054 </WheelsSets>
1055----
1056UnpresetWheels:
1057 example in classes/wheels/kraz_front.xml
1058 <TruckWheel
1059 Friction="Offroad"
1060 Friction_Numeric="2.0" //Gives excellent traction on road (ie: highway
1061
1062wheels)
1063 SubstanceFriction_Numeric="0.1" //Gives very poor traction in the mud.
1064 //Those 2 overwrite
1065
1066what Friction="Offroad" defined
1067
1068 Mass="Heavy"
1069 Mass_Numeric="75.5" //Overwrites what Mass="Heavy" defined
1070
1071 Softness="Average"
1072 Softness_Numeric="1.0" //Stiffest possible tire
1073
1074 Mesh="wheels/kraz_front"
1075 Radius="0.6"
1076 Tracks="offroad"
1077 Width="0.52"
1078
1079 Havok_AllowedPenetrationDepth="0.06" //allow up to 6cm of clipping.
1080 />
1081----
1082WheelsetsCanRequireAddons:
1083 example in classes/truck/kraz255.xml
1084 section Truck/TruckData/WheelsSets
1085 <WheelsSets>
1086 <WheelsSet
1087 Title="highway_wheels"
1088 RequiredAddons="kraz_protector,kraz_carriage" //The highway_wheels
1089
1090set will only appear in the garage menu if
1091
1092
1093 //you have mounted kraz_protector and kraz_carriage on your truck.
1094
1095
1096 //Note:" MyAddon" is a valid addon name that is different from "MyAddon"
1097 >
1098 <WheelType Type="kraz_front_highway" Wheels="0,1" />
1099 <WheelType Type="kraz_double_highway" Wheels="2,3,4,5" />
1100 </WheelsSet>
1101 </WheelsSets>
1102----
1103SupportAdditionalConstraints
1104 example in any classes/trucks/whatever.xml
1105 section Truck/PhysicsModel (or actually any PhysicsModel section)
1106
1107 *** PointToPlane
1108
1109 <Constraint
1110 ModelFrameParent="Chassis_cdt"
1111 ModelFrameChild="TrackSegment_cdt"
1112
1113 Type="PointToPlane" //we want a
1114
1115PointToPlane constraint
1116 AxisLocal="(0;0;1)" //we want to block
1117
1118translation along the chassis' z axis
1119 PivotOffset="(0;0;-0.7)" //we want TrackSegment_cdt to
1120
1121stay at z=-0.7
1122 />
1123
1124 *** PointToPath
1125 <Constraint
1126 ModelFrameParent="Chassis_cdt"
1127 ModelFrameChild="TrackSegment_cdt"
1128
1129 Type="PointToPath" //we want a PointToPath
1130
1131constraint
1132 Path_Mode="FullyConstrained" //PointToPath has 3 modes:
1133 //1-
1134
1135PositionOnly: where it only makes sure the origin of the child body stays on the path.
1136 //2-
1137
1138AlignXToPath: PositionOnly + the X vector of the child points along the path.
1139 //3-
1140
1141FullyConstrained: AlignXToPath + the Z vector of the child points along NeverParallelDir
1142
1143 Loop="true" //specify that
1144
1145this path is looping, a line will link the first node
1146 //and
1147
1148the last to close. DO NOT manually close the path
1149 //by
1150
1151adding duplicate nodes (this is done automatically)
1152
1153 Node0="(-1.509;0.342;0)" //The coordinates of the first
1154
1155point of the path, relative to the parent's frame.
1156 Node1="(1.572;0.301;0)" //Nodes are linked in a
1157
1158straight line from the previous node.
1159 Node2="(1.701;0.155;0)" //There is NO LIMIT TO THE
1160
1161NUMBER OF NODES, the parser will just keep looking
1162 Node3="(1.75;-0.09;0)" //for nodes until it doesn't
1163
1164find one.
1165 Node4="(1.668;-0.299;0)" //PointToPath constrained
1166
1167bodies will start/spawn atttached to their closest position on
1168 Node5="(0.681;-0.6;0)" //the path.(ie: no need to
1169
1170adjust the path's start position for every track segment)
1171 Node6="(-1.136;-0.6;0)"
1172 Node7="(-1.785;-0.183;0)"
1173 Node8="(-1.757;0.174;0)"
1174 Node8_Tolerance="0.1" //How far (in meters) we can
1175
1176deviate from the path between node 8 and the next (node 0).
1177 //If
1178
1179NeverParallelDir is all 0 then the tolerance applies in any direction (ie: child elements must
1180 //stay
1181
1182within a tube arround each path segment).
1183 //If
1184
1185NeverParallelDir is set, then only deviations perpendicular to NeverParallelDir are allowed.
1186 //For
1187
1188tracks, with NeverParallelDir along Z axis, child element will be able to deviate from path along
1189 //X and
1190
1191Y (suspension dir...).
1192 //The
1193
1194actual tolerance is linearily interpolated with the tolerance at the previous or next segment.
1195
1196 PivotOffset="(0;0;0)" //Convenience, same as adding
1197
1198those 3 values to each path node.
1199 SmoothFactor="0.2" //Smooths the edges at
1200
1201each node. Valid range: 0 to 0.5. Smoothing creates a quadratic bezier curve
1202
1203
1204//starting at SmoothFactor ratio of the segment, and using one end as control point.
1205
1206 NeverParallelDir="(0;0;1)" //A vector that is never
1207
1208parallel to the path.
1209 //This
1210
1211is used when Path_Mode="FullyConstrained" or when you use Node*_Tolerance.
1212 //For
1213
1214tracks you typically want to use the truck's Z vector.
1215 //Try
1216
1217to put a negative value if your tracks are upside down.
1218
1219 FrictionForceAlongPath="10" //Friction force, in Newtons,
1220
1221that resists movement along the path.
1222 //This
1223
1224has nothing to do with a tank's grip on the ground.
1225
1226 SetChildQuality="4" //Raises the child
1227
1228body's quality. Depending on the size of your cdt it might be enough
1229 //to
1230
1231prevent track segment from clipping through large rocks, other vehicles, woodpiles, etc...
1232
1233 SetParentQuality="3" //Same as SetChildQuality, but
1234
1235for the parent.
1236
1237
1238//Usually the chassis, being large and heavy it doesn't need a raise though.
1239
1240
1241 />
1242
1243 *** Chain
1244 <Constraint
1245 ModelFrameParent="Chassis_cdt"
1246 ModelFrameChild="TrackSegment1_cdt"
1247
1248 Type="PointToPlane"
1249 AxisLocal="(0;0;1)" ------ until there we are just defining a
1250
1251typical PointToPlane constraint
1252
1253 Chain_Mode="StartChain"
1254
1255//create a new chain and add TrackSegment1_cdt as the first element
1256 Chain_PreviousLinkToJointOffset="(-0.25;0;0)" //the distance between
1257
1258TrackSegment1_cdt's origin and the articulation between the
1259
1260
1261 //next link and this one. Expressed in TrackSegment1_cdt's frame.
1262 Chain_NextLinkToJointOffset="(0;0;0)" //the distance between the next link's
1263
1264origin and the articulation with this body.
1265
1266
1267//Expressed in next link's frame.
1268
1269 ------------------------- optonal parameters for advanced use only
1270
1271-------------------------
1272 Chain_MaxErrorDistance="0.05" //If a body of a chain is further than
1273
1274that from where it should be, then havok will
1275
1276
1277//trigger a special anti-havoksplosion algorithm. Disabled by default. Expressed in meters.
1278
1279 Chain_CFM="0" //Not too sure about
1280
1281this one myself, so I'll just quote Telekinesys in this:
1282
1283
1284//"Constraint force mixing parameter. Value added to the diagonal of the constraint matrix.
1285
1286
1287//Should be zero or tiny, e.g. a fraction of HK_REAL_EPSILON. When this value is zero, then
1288 //some
1289
1290chain configurations may result in a division by zero when solving."
1291
1292
1293//HK_REAL_EPSILON = 0.0000001192092896
1294
1295
1296
1297 Chain_Stiffness="0.1" //DO NOT use them unless you
1298
1299understand "Havok has a main solver, chains have their own solver,
1300 Chain_Damping="0.1" //those are its tau and
1301
1302damping parameters".
1303 />
1304 <Constraint
1305 ModelFrameParent="Chassis_cdt"
1306 ModelFrameChild="TrackSegment2_cdt"
1307
1308 Type="PointToPlane"
1309 AxisLocal="(0;0;1)" ------ until there we are just defining a
1310
1311typical PointToPlane constraint
1312
1313 Chain_Mode="ContinueChain" //adds
1314
1315TrackSegment2_cdt to the previous chain
1316 Chain_PreviousLinkToJointOffset="(-0.25;0;0)" //
1317 Chain_NextLinkToJointOffset="(0;0;0)" //
1318 />
1319 ... a couple ContinueChain later ...
1320
1321 <Constraint
1322 ModelFrameParent="Chassis_cdt" -- in EndChain mode, ModelFrameParent
1323
1324is irrelevant, just make sure it exists to keep the game happy.
1325 ModelFrameChild="TrackSegment99_cdt"
1326
1327 Type="PointToPlane" -- in EndChain mode,
1328
1329the base constraint's parameters are not even read
1330
1331 Chain_Mode="EndChain" //adds
1332
1333TrackSegment99_cdt to the previous chain, and terminate the chain
1334 Chain_PreviousLinkToJointOffset="(-0.25;0;0)" //
1335 Chain_NextLinkToJointOffset="(0;0;0)" //
1336 />
1337
1338 <Constraint --and now you create the PointToPlane that wasn't created when
1339
1340we ended the chain above
1341 ModelFrameParent="Chassis_cdt"
1342 ModelFrameChild="TrackSegment99_cdt"
1343
1344 Type="PointToPlane"
1345 AxisLocal="(0;0;1)"
1346 />
1347----
1348SupportSilentLinkedSteering:
1349 example in classes/trucks/kirovets700.xml
1350 section Truck/ControlledConstraints
1351 <ControlledConstraints>
1352 <Constraint
1353 Id="chassis_steer"
1354 IsLinkedSteering="true"
1355 TriggerEngineSound="false" //Driving this constraint will not cause engine
1356
1357sound
1358 Name="ChassisSteer"
1359 />
1360 </ControlledConstraints>
1361----
1362SupportSkidSteering:
1363 example in classes/trucks/uaz469.xml
1364 section _templates/Wheel/UazWheel (also applies to Truck/Wheels/Wheel)
1365 <UazWheel
1366 DefaultWheelType="uaz"
1367 HardpointOffsetY="-0.12"
1368 SuspensionDamping="0.3"
1369 SuspensionMin="-0.3"
1370 SuspensionStrength="0.03"
1371 SkidSteeringMode="ForwardBrake" //When turning left, left side wheels will
1372
1373brake,
1374 //right side
1375
1376wheels will go forward.
1377 //You can put
1378
1379"ForwardReverse" instead for classic tank steering.
1380
1381 SteeringAngle="0" <-Not needed, but recommended
1382 />
1383 ...
1384 <Truck>
1385 <TruckData>
1386 <Motor
1387 MaxDeltaAngVel="2.0" //twice the fuel consumption
1388 Torque="1640" //the the max torque
1389
1390outside the engine
1391 >
1392 <ReverseGear AngVel="0.08" /> //total transmission ratios when this
1393
1394gear is selected
1395 <HighGear AngVel="0.1" /> //wheel RPM = engine RPM *
1396
1397these numbers
1398 <Gear AngVel="0.08" /> //If all goes well your wheels
1399
1400will spin at about
1401 <Gear AngVel="0.09" /> //2100 RPM(219 angvel) * these
1402
1403numbers
1404 <Gear AngVel="0.16" /> //
1405 <Gear AngVel="0.25" /> //
1406 </Motor>
1407----
1408MapsCanOverrideCloakMesh:
1409 example in levels/level_coast.xml
1410 <SpintiresPlusConfig
1411 CloakMesh="trucks/kraz255" //next time you play coast, the cloaks
1412
1413will look like a rotating kraz
1414 //chassis
1415
1416inside a black circle.
1417 />
1418----
1419STPControlledConstraints:
1420 example in trucks\ural_cart.xml
1421 section TruckAddon/PhysicsModel/Body/Body
1422
1423 <Body Mass="400" ModelFrame="BoneRotationBase_cdt"> --this body is the base of the
1424
1425crane
1426 <Constraint
1427 AxisLocal="(0;1;0)"
1428 MinLimit="-350"
1429 MaxLimit="350"
1430 Name="STPControlledConstraint" --This name tells ST+ that it must handle this
1431
1432constraint.
1433 --ST+ will not
1434
1435drive constraints with other names.
1436 --Referencing
1437
1438this name elsewhere (ie: powered or controlled constrains) will not work
1439 --since ST+
1440
1441will mangle it.
1442
1443 Type="Hinge" --Note that only Hinges and
1444
1445Prismatic constraints are supported.
1446 --
1447
1448UnlimitedHinges are NOT supported.
1449
1450 ControllerIndex="0" //What controller drives this
1451
1452constraint (0=first controller, 1=second, etc...)
1453 Speed="30" //At which speed we try
1454
1455to actuate this constaint, in deg/s for hinges or m/s for prismatics
1456 //Negative
1457
1458values are supported.
1459 //Keep in ming
1460
1461that the speed in game might be slower if your motor
1462 //is not strong
1463
1464enough.
1465
1466 ResetSpeed="60" //Like Speed, but for when we
1467
1468are recentering the constraint
1469 //(hint: you
1470
1471can use that to emulate BackSteerSpeed)
1472 //Also,
1473
1474negative ResetSpeed are a bad idea.
1475 ResetPosition="45" //To what position we should go
1476
1477when resetting, in degrees or meters.
1478 //Defaults to 0
1479
1480if omitted.
1481
1482 ResetWithTruckMovement="false" //if true the constraint will move toward reset
1483
1484position when the truck is rolling.
1485 //if false, the
1486
1487constraint will only reset when you press the reset key.
1488 //Defaults to
1489
1490false if omitted.
1491 >
1492 <Motor Force="40000" Tau="0.04" Type="Position" />
1493 </Constraint>
1494 <Body Mass="20" ModelFrame="BoneChair_cdt">
1495 ...
1496-------------------------------------
1497SpintiresPlus relies on a modified version of AntTweakBar http://anttweakbar.sourceforge.net/doc/ used
1498
1499under zlib license.
1500
1501SpintiresPlus and its source code are released under the terms of the MIT license:
1502
1503Copyright (c) 2016 Localhost
1504
1505Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
1506associated documentation files (the "Software"), to deal in the Software without restriction,
1507including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
1508and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
1509subject to the following conditions:
1510
1511-The above copyright notice and this permission notice shall be included in all copies or substantial
1512 portions of the Software.
1513
1514THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
1515LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
1516IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
1517WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
1518SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1519-->