@hypersoniclabs/helix-mcp 0.2.4 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +81 -11
  2. package/dist/continuumCanary.d.ts +17 -0
  3. package/dist/continuumCanary.js +17 -0
  4. package/dist/continuumCanary.js.map +1 -0
  5. package/dist/server.d.ts +14 -1
  6. package/dist/server.js +4058 -162
  7. package/dist/server.js.map +1 -1
  8. package/dist/tsconfig.build.tsbuildinfo +1 -1
  9. package/dist/vehicleTools.d.ts +86 -0
  10. package/dist/vehicleTools.js +229 -0
  11. package/dist/vehicleTools.js.map +1 -0
  12. package/docs/avatar-face.md +115 -0
  13. package/docs/bridge.md +98 -0
  14. package/docs/bring-your-world.md +117 -0
  15. package/docs/catalog.md +69 -1
  16. package/docs/character-animation.md +442 -0
  17. package/docs/character-attachments.md +166 -0
  18. package/docs/character-world.md +785 -130
  19. package/docs/continuum.md +153 -0
  20. package/docs/items.md +73 -0
  21. package/docs/lighting-world.md +667 -0
  22. package/docs/locomotion-clip-spec.md +294 -0
  23. package/docs/manifest.md +31 -6
  24. package/docs/multiplayer-logic.md +460 -17
  25. package/docs/multiplayer-templates/chrono-orchard.md +36 -22
  26. package/docs/multiplayer-templates/collect-a-thon.md +28 -38
  27. package/docs/multiplayer-templates/collections.md +24 -24
  28. package/docs/multiplayer-templates/hangout.md +124 -111
  29. package/docs/multiplayer-templates/npc-wave.md +310 -0
  30. package/docs/multiplayer-templates/obby.md +13 -16
  31. package/docs/multiplayer-templates/persistent-progress.md +218 -0
  32. package/docs/multiplayer-templates/physics-bumper.md +27 -9
  33. package/docs/multiplayer-templates/physics-football.md +22 -8
  34. package/docs/multiplayer-templates/relic-bearers.md +12 -15
  35. package/docs/multiplayer-templates/server-motion.md +16 -19
  36. package/docs/multiplayer-templates/shooter-range.md +275 -0
  37. package/docs/multiplayer-templates/team-control.md +28 -15
  38. package/docs/multiplayer-templates/turn-arena.md +31 -22
  39. package/docs/multiplayer-templates/voice-radio.md +166 -0
  40. package/docs/multiplayer-templates/wave-survival.md +7 -8
  41. package/docs/multiplayer-templates/world-shop.md +240 -0
  42. package/docs/multiplayer-world.md +222 -129
  43. package/docs/npc-world.md +623 -0
  44. package/docs/publishing.md +108 -28
  45. package/docs/purchases.md +223 -0
  46. package/docs/scene-performance.md +64 -0
  47. package/docs/screenshots.md +140 -0
  48. package/docs/sdk.md +324 -5
  49. package/docs/shooter-worlds.md +537 -0
  50. package/docs/terrain.md +173 -0
  51. package/docs/upgrades.md +324 -0
  52. package/docs/vehicles.md +727 -0
  53. package/docs/world-inspect.md +156 -0
  54. package/docs/world-look.md +241 -0
  55. package/docs/world-recipe.md +65 -6
  56. package/package.json +15 -4
  57. package/skills/README.md +91 -0
  58. package/skills/helix-assets/SKILL.md +491 -0
  59. package/skills/helix-assets/references/asset-sources.md +143 -0
  60. package/skills/helix-assets/references/vault-api.md +105 -0
  61. package/skills/helix-avatar-qa/SKILL.md +85 -0
  62. package/skills/helix-avatars/SKILL.md +206 -0
  63. package/skills/helix-avatars/references/contract.md +166 -0
  64. package/skills/helix-avatars/references/dynamics.md +367 -0
  65. package/skills/helix-avatars/references/face.md +50 -0
  66. package/skills/helix-avatars/references/publish.md +76 -0
  67. package/skills/helix-avatars/references/qa.md +251 -0
  68. package/skills/helix-avatars/references/rigging.md +88 -0
  69. package/skills/helix-avatars/references/source-generated.md +190 -0
  70. package/skills/helix-avatars/references/source-model.md +90 -0
  71. package/skills/helix-avatars/references/source-rigid.md +90 -0
  72. package/skills/helix-avatars/references/source-vrm.md +61 -0
  73. package/skills/helix-gauntlet/SKILL.md +128 -0
  74. package/skills/helix-multiplayer/SKILL.md +150 -0
  75. package/skills/helix-multiplayer/references/dsl-capability-map.md +107 -0
  76. package/skills/helix-vehicles/SKILL.md +218 -0
  77. package/skills/helix-vehicles/references/addons.md +212 -0
  78. package/skills/helix-vehicles/references/appearance.md +339 -0
  79. package/skills/helix-vehicles/references/audio-import.md +138 -0
  80. package/skills/helix-vehicles/references/audio.md +580 -0
  81. package/skills/helix-vehicles/references/cabin.md +225 -0
  82. package/skills/helix-vehicles/references/host-manifest.md +174 -0
  83. package/skills/helix-vehicles/references/physics-from-specs.md +463 -0
  84. package/skills/helix-vehicles/references/publish.md +214 -0
  85. package/skills/helix-vehicles/references/qa.md +177 -0
  86. package/skills/helix-vehicles/references/reference-package.json +3481 -0
  87. package/skills/helix-vehicles/references/reference-package.md +69 -0
  88. package/skills/helix-vehicles/references/source-beamng.md +167 -0
  89. package/skills/helix-vehicles/references/source-concept.md +38 -0
  90. package/skills/helix-vehicles/references/source-model.md +100 -0
  91. package/skills/helix-vehicles/references/source-scratch.md +60 -0
  92. package/skills/helix-world-build/SKILL.md +376 -0
  93. package/skills/helix-world-build/references/config-gates.md +104 -0
  94. package/skills/helix-world-director/SKILL.md +210 -0
  95. package/skills/helix-world-qa/SKILL.md +371 -0
  96. package/skills/helix-world-qa/references/perf-budgets.md +240 -0
  97. package/skills/helix-world-qa/references/perf-handle.md +125 -0
  98. package/skills/helix-world-qa/references/visual-scorecard.md +85 -0
@@ -0,0 +1,3481 @@
1
+ {
2
+ "id": "porsche-911-carrera-993",
3
+ "vfx": [
4
+ {
5
+ "slot": "exhaustSmoke",
6
+ "params": {
7
+ "coldStartSeconds": 25,
8
+ "throttleThreshold": 0.6
9
+ },
10
+ "reason": "No particle system is wired to vehicles in this branch. The anchor is the socket ladder's `exhaust`, which resolves today, so the effect is one emitter away.",
11
+ "anchors": [
12
+ "exhaust"
13
+ ],
14
+ "consumed": false
15
+ },
16
+ {
17
+ "slot": "tyreMarks",
18
+ "params": {
19
+ "widthFraction": 0.7,
20
+ "slipAngleThreshold": 0.14,
21
+ "slipRatioThreshold": 0.18
22
+ },
23
+ "reason": "No decal system in this branch. The DRIVING signal already exists per wheel \u2014 `slipRatio` and `slipAngle` are published separately every tick, which is exactly what a mark emitter needs.",
24
+ "anchors": [
25
+ "wheel_lf",
26
+ "wheel_rf",
27
+ "wheel_lr",
28
+ "wheel_rr"
29
+ ],
30
+ "consumed": false
31
+ },
32
+ {
33
+ "slot": "tyreSmoke",
34
+ "params": {
35
+ "slipRatioThreshold": 0.3
36
+ },
37
+ "reason": "Same emitter gap as `tyreMarks`.",
38
+ "anchors": [
39
+ "wheel_lf",
40
+ "wheel_rf",
41
+ "wheel_lr",
42
+ "wheel_rr"
43
+ ],
44
+ "consumed": false
45
+ },
46
+ {
47
+ "slot": "backfireFlame",
48
+ "params": {
49
+ "overrunSeconds": 0.35
50
+ },
51
+ "reason": "A stock reference car does not flame; this is bound for the tuned variants the ECU-stage blends already exist for, and is deliberately off for the reference car.",
52
+ "anchors": [
53
+ "exhaust"
54
+ ],
55
+ "consumed": false
56
+ },
57
+ {
58
+ "slot": "brakeGlow",
59
+ "reason": "No thermal model. Front-only anchors because 70% of the brake torque goes there.",
60
+ "anchors": [
61
+ "wheel_lf",
62
+ "wheel_rf"
63
+ ],
64
+ "consumed": false
65
+ }
66
+ ],
67
+ "make": "Porsche",
68
+ "mesh": {
69
+ "ref": "$self",
70
+ "parts": [
71
+ {
72
+ "id": "body",
73
+ "node": "bodyshell",
74
+ "role": "body",
75
+ "consumed": true
76
+ },
77
+ {
78
+ "id": "driver-door",
79
+ "node": "door_lf",
80
+ "role": "door",
81
+ "consumed": true
82
+ },
83
+ {
84
+ "id": "passenger-door",
85
+ "node": "door_rf",
86
+ "role": "door",
87
+ "consumed": true
88
+ },
89
+ {
90
+ "id": "front-lid",
91
+ "node": "bonnet",
92
+ "role": "bonnet",
93
+ "consumed": true
94
+ },
95
+ {
96
+ "id": "engine-lid",
97
+ "node": "boot",
98
+ "role": "boot",
99
+ "consumed": true
100
+ },
101
+ {
102
+ "id": "glass",
103
+ "node": "glass",
104
+ "role": "glass",
105
+ "consumed": true
106
+ },
107
+ {
108
+ "id": "headlamps",
109
+ "node": "headlamps",
110
+ "role": "lamp",
111
+ "consumed": true
112
+ },
113
+ {
114
+ "id": "tail-lamps",
115
+ "node": "taillamps",
116
+ "role": "lamp",
117
+ "consumed": true
118
+ },
119
+ {
120
+ "id": "steering-wheel",
121
+ "node": "steering",
122
+ "role": "interior",
123
+ "consumed": true
124
+ },
125
+ {
126
+ "id": "stock-exhaust",
127
+ "node": "exhaust",
128
+ "role": "other",
129
+ "consumed": true
130
+ }
131
+ ],
132
+ "source": "universal-item",
133
+ "classId": "coupe",
134
+ "articulation": {
135
+ "format": 1,
136
+ "panels": [
137
+ {
138
+ "id": "doorFL",
139
+ "role": "door",
140
+ "hinge": {
141
+ "axis": [
142
+ 0,
143
+ 1,
144
+ 0
145
+ ],
146
+ "pivot": [
147
+ 0.8657,
148
+ 0.77,
149
+ 0.6595
150
+ ],
151
+ "openDeg": -62,
152
+ "closedDeg": 0
153
+ },
154
+ "nodes": [
155
+ "door_lf",
156
+ "doorglass_lf"
157
+ ],
158
+ "signal": "doorFL",
159
+ "collider": {
160
+ "kind": "visual-bounds-box",
161
+ "minHalfExtentM": 0.025
162
+ },
163
+ "dynamics": {
164
+ "detents": [
165
+ 0.56,
166
+ 0.9
167
+ ],
168
+ "latchFraction": 0.032,
169
+ "latchAngularSpeedRadS": 0.28
170
+ },
171
+ "fidelity": {
172
+ "physical": [
173
+ "high",
174
+ "ultra"
175
+ ],
176
+ "detachable": [
177
+ "ultra"
178
+ ]
179
+ }
180
+ },
181
+ {
182
+ "id": "doorFR",
183
+ "role": "door",
184
+ "hinge": {
185
+ "axis": [
186
+ 0,
187
+ 1,
188
+ 0
189
+ ],
190
+ "pivot": [
191
+ -0.8657,
192
+ 0.77,
193
+ 0.6595
194
+ ],
195
+ "openDeg": 62,
196
+ "closedDeg": 0
197
+ },
198
+ "nodes": [
199
+ "door_rf",
200
+ "doorglass_rf"
201
+ ],
202
+ "signal": "doorFR",
203
+ "collider": {
204
+ "kind": "visual-bounds-box",
205
+ "minHalfExtentM": 0.025
206
+ },
207
+ "dynamics": {
208
+ "detents": [
209
+ 0.56,
210
+ 0.9
211
+ ],
212
+ "latchFraction": 0.032,
213
+ "latchAngularSpeedRadS": 0.28
214
+ },
215
+ "fidelity": {
216
+ "physical": [
217
+ "high",
218
+ "ultra"
219
+ ],
220
+ "detachable": [
221
+ "ultra"
222
+ ]
223
+ }
224
+ },
225
+ {
226
+ "id": "hood",
227
+ "role": "bonnet",
228
+ "hinge": {
229
+ "axis": [
230
+ 1,
231
+ 0,
232
+ 0
233
+ ],
234
+ "pivot": [
235
+ 0,
236
+ 0.8854,
237
+ 0.6429
238
+ ],
239
+ "openDeg": -55,
240
+ "closedDeg": 0
241
+ },
242
+ "nodes": [
243
+ "bonnet"
244
+ ],
245
+ "signal": "hood",
246
+ "collider": {
247
+ "kind": "visual-bounds-box",
248
+ "minHalfExtentM": 0.025
249
+ },
250
+ "dynamics": {
251
+ "detents": [],
252
+ "latchFraction": 0.032,
253
+ "latchAngularSpeedRadS": 0.28
254
+ },
255
+ "fidelity": {
256
+ "physical": [
257
+ "high",
258
+ "ultra"
259
+ ],
260
+ "detachable": [
261
+ "ultra"
262
+ ]
263
+ }
264
+ },
265
+ {
266
+ "id": "trunk",
267
+ "role": "boot",
268
+ "hinge": {
269
+ "axis": [
270
+ 1,
271
+ 0,
272
+ 0
273
+ ],
274
+ "pivot": [
275
+ 0,
276
+ 0.9464,
277
+ -1.3148
278
+ ],
279
+ "openDeg": 50,
280
+ "closedDeg": 0
281
+ },
282
+ "nodes": [
283
+ "boot"
284
+ ],
285
+ "signal": "trunk",
286
+ "collider": {
287
+ "kind": "visual-bounds-box",
288
+ "minHalfExtentM": 0.025
289
+ },
290
+ "dynamics": {
291
+ "detents": [],
292
+ "latchFraction": 0.032,
293
+ "latchAngularSpeedRadS": 0.28
294
+ },
295
+ "fidelity": {
296
+ "physical": [
297
+ "high",
298
+ "ultra"
299
+ ],
300
+ "detachable": [
301
+ "ultra"
302
+ ]
303
+ }
304
+ }
305
+ ]
306
+ },
307
+ "wheelVisuals": "author-static",
308
+ "visual": {
309
+ "tiers": {
310
+ "low": {
311
+ "interior": "simplified",
312
+ "lightBeams": false,
313
+ "renditionId": "target-web",
314
+ "materialLayers": "base",
315
+ "physicalPanels": false,
316
+ "detachableParts": false
317
+ },
318
+ "high": {
319
+ "interior": "full",
320
+ "lightBeams": true,
321
+ "renditionId": "target-web",
322
+ "materialLayers": "full",
323
+ "physicalPanels": true,
324
+ "detachableParts": true
325
+ },
326
+ "ultra": {
327
+ "interior": "full",
328
+ "lightBeams": true,
329
+ "renditionId": "target-web",
330
+ "materialLayers": "full",
331
+ "physicalPanels": true,
332
+ "detachableParts": true
333
+ },
334
+ "medium": {
335
+ "interior": "simplified",
336
+ "lightBeams": false,
337
+ "renditionId": "target-web",
338
+ "materialLayers": "dynamic",
339
+ "physicalPanels": false,
340
+ "detachableParts": false
341
+ },
342
+ "minimal": {
343
+ "interior": "hidden",
344
+ "lightBeams": false,
345
+ "renditionId": "target-web",
346
+ "materialLayers": "base",
347
+ "physicalPanels": false,
348
+ "detachableParts": false
349
+ }
350
+ },
351
+ "format": 1,
352
+ "renditions": [
353
+ {
354
+ "id": "source",
355
+ "kind": "source",
356
+ "triangleBudget": 84956,
357
+ "textureMaxDimension": 2048
358
+ },
359
+ {
360
+ "id": "target-web",
361
+ "kind": "derived",
362
+ "encodings": [
363
+ "ktx2"
364
+ ],
365
+ "byteLength": 4942196,
366
+ "artifactRef": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/ea/ea7d176d85cd387c355c4ead0dd6f2322f4446e0efca8c69ccc2780202e99a21",
367
+ "checksumSha256": "ea7d176d85cd387c355c4ead0dd6f2322f4446e0efca8c69ccc2780202e99a21",
368
+ "triangleBudget": 84956,
369
+ "sourceRenditionId": "source",
370
+ "textureMaxDimension": 2048
371
+ }
372
+ ]
373
+ }
374
+ },
375
+ "audio": {
376
+ "bank": {
377
+ "assets": [
378
+ {
379
+ "name": "psh_1768.wav",
380
+ "file": "psh_1768.wav",
381
+ "role": "vehicle.audio.bank.sample",
382
+ "mediaType": "audio/wav"
383
+ },
384
+ {
385
+ "name": "psh_2238.wav",
386
+ "file": "psh_2238.wav",
387
+ "role": "vehicle.audio.bank.sample",
388
+ "mediaType": "audio/wav"
389
+ },
390
+ {
391
+ "name": "psh_2259.wav",
392
+ "file": "psh_2259.wav",
393
+ "role": "vehicle.audio.bank.sample",
394
+ "mediaType": "audio/wav"
395
+ },
396
+ {
397
+ "name": "psh_3057.wav",
398
+ "file": "psh_3057.wav",
399
+ "role": "vehicle.audio.bank.sample",
400
+ "mediaType": "audio/wav"
401
+ },
402
+ {
403
+ "name": "psh_3214.wav",
404
+ "file": "psh_3214.wav",
405
+ "role": "vehicle.audio.bank.sample",
406
+ "mediaType": "audio/wav"
407
+ },
408
+ {
409
+ "name": "psh_4096.wav",
410
+ "file": "psh_4096.wav",
411
+ "role": "vehicle.audio.bank.sample",
412
+ "mediaType": "audio/wav"
413
+ },
414
+ {
415
+ "name": "psh_4346.wav",
416
+ "file": "psh_4346.wav",
417
+ "role": "vehicle.audio.bank.sample",
418
+ "mediaType": "audio/wav"
419
+ },
420
+ {
421
+ "name": "psh_4802.wav",
422
+ "file": "psh_4802.wav",
423
+ "role": "vehicle.audio.bank.sample",
424
+ "mediaType": "audio/wav"
425
+ },
426
+ {
427
+ "name": "psh_5665.wav",
428
+ "file": "psh_5665.wav",
429
+ "role": "vehicle.audio.bank.sample",
430
+ "mediaType": "audio/wav"
431
+ },
432
+ {
433
+ "name": "psh_6363.wav",
434
+ "file": "psh_6363.wav",
435
+ "role": "vehicle.audio.bank.sample",
436
+ "mediaType": "audio/wav"
437
+ },
438
+ {
439
+ "name": "psh_6388.wav",
440
+ "file": "psh_6388.wav",
441
+ "role": "vehicle.audio.bank.sample",
442
+ "mediaType": "audio/wav"
443
+ }
444
+ ],
445
+ "blends": {
446
+ "PSH_M64_FLAT6": {
447
+ "header": {
448
+ "version": 1
449
+ },
450
+ "samples": [
451
+ [
452
+ [
453
+ "psh_1768.wav",
454
+ 1768
455
+ ],
456
+ [
457
+ "psh_2238.wav",
458
+ 2238
459
+ ],
460
+ [
461
+ "psh_2259.wav",
462
+ 2259
463
+ ],
464
+ [
465
+ "psh_3057.wav",
466
+ 3057
467
+ ],
468
+ [
469
+ "psh_3214.wav",
470
+ 3214
471
+ ],
472
+ [
473
+ "psh_4096.wav",
474
+ 4096
475
+ ],
476
+ [
477
+ "psh_4346.wav",
478
+ 4346
479
+ ],
480
+ [
481
+ "psh_4802.wav",
482
+ 4802
483
+ ],
484
+ [
485
+ "psh_5665.wav",
486
+ 5665
487
+ ],
488
+ [
489
+ "psh_6363.wav",
490
+ 6363
491
+ ],
492
+ [
493
+ "psh_6388.wav",
494
+ 6388
495
+ ]
496
+ ],
497
+ [
498
+ [
499
+ "psh_1768.wav",
500
+ 1768
501
+ ],
502
+ [
503
+ "psh_2238.wav",
504
+ 2238
505
+ ],
506
+ [
507
+ "psh_2259.wav",
508
+ 2259
509
+ ],
510
+ [
511
+ "psh_3057.wav",
512
+ 3057
513
+ ],
514
+ [
515
+ "psh_3214.wav",
516
+ 3214
517
+ ],
518
+ [
519
+ "psh_4096.wav",
520
+ 4096
521
+ ],
522
+ [
523
+ "psh_4346.wav",
524
+ 4346
525
+ ],
526
+ [
527
+ "psh_4802.wav",
528
+ 4802
529
+ ],
530
+ [
531
+ "psh_5665.wav",
532
+ 5665
533
+ ],
534
+ [
535
+ "psh_6363.wav",
536
+ 6363
537
+ ],
538
+ [
539
+ "psh_6388.wav",
540
+ 6388
541
+ ]
542
+ ]
543
+ ],
544
+ "eventName": "event:>Engine>default"
545
+ }
546
+ }
547
+ },
548
+ "slots": [
549
+ {
550
+ "slot": "engineLadder",
551
+ "buffers": [
552
+ "blend:PSH_M64_FLAT6"
553
+ ],
554
+ "consumed": true,
555
+ "note": "REWRITE: the sim mod and event the ladder came from (sim, mod, source file, sha256), plus the rung rpm range; set provenance. These rows are the 993 flat-six: replace every rung with your car's (import_vehicle_audio). Never synthesised."
556
+ },
557
+ {
558
+ "slot": "exhaustLadder",
559
+ "buffers": [
560
+ "blend:PSH_M64_FLAT6"
561
+ ],
562
+ "consumed": true,
563
+ "note": "REWRITE: the exhaust ladder's own recordings (never the engine set) and its source; set provenance."
564
+ },
565
+ {
566
+ "slot": "idle",
567
+ "reason": "REWRITE: carry the sim mod's idle loop (or the bottom rungs of its ladder) with provenance. The runtime plays idle from the bottom rungs of the ladder; the slot is never an empty slot.",
568
+ "buffers": [],
569
+ "consumed": true
570
+ },
571
+ {
572
+ "slot": "startup",
573
+ "assets": [
574
+ {
575
+ "cid": "cid:sha256:d661fc5e9530e6a00a80ef0e342471febd049f4eadf70314a26fc0948964c5a7",
576
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/d6/d661fc5e9530e6a00a80ef0e342471febd049f4eadf70314a26fc0948964c5a7",
577
+ "file": "bg_ignition.wav",
578
+ "name": "vehicle.ignition",
579
+ "path": "stock-audio/bg_ignition.wav",
580
+ "role": "vehicle.audio.slot.startup",
581
+ "bytes": 249644,
582
+ "mediaType": "audio/wav",
583
+ "checksumSha256": "d661fc5e9530e6a00a80ef0e342471febd049f4eadf70314a26fc0948964c5a7"
584
+ }
585
+ ],
586
+ "buffers": [
587
+ "vehicle.ignition"
588
+ ],
589
+ "consumed": true,
590
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with your car's starter from its sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
591
+ },
592
+ {
593
+ "slot": "shutdown",
594
+ "assets": [
595
+ {
596
+ "cid": "cid:sha256:a58b9a854b17b0091adddbb2fe4697b5fe3c4be142b9a8523af4958d991e4af3",
597
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/a5/a58b9a854b17b0091adddbb2fe4697b5fe3c4be142b9a8523af4958d991e4af3",
598
+ "file": "bg_shutdown.wav",
599
+ "name": "vehicle.shutdown",
600
+ "path": "stock-audio/bg_shutdown.wav",
601
+ "role": "vehicle.audio.slot.shutdown",
602
+ "bytes": 177310,
603
+ "mediaType": "audio/wav",
604
+ "checksumSha256": "a58b9a854b17b0091adddbb2fe4697b5fe3c4be142b9a8523af4958d991e4af3"
605
+ }
606
+ ],
607
+ "buffers": [
608
+ "vehicle.shutdown"
609
+ ],
610
+ "consumed": true,
611
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
612
+ },
613
+ {
614
+ "slot": "shiftUp",
615
+ "assets": [
616
+ {
617
+ "name": "vehicle.shift.up",
618
+ "file": "shift_up.wav",
619
+ "role": "vehicle.audio.slot.shiftUp",
620
+ "mediaType": "audio/wav"
621
+ }
622
+ ],
623
+ "buffers": [
624
+ "vehicle.shift.up"
625
+ ],
626
+ "consumed": true,
627
+ "note": "REWRITE: your car's shift recording, from its sim mod, with provenance. This row is an example file name, not a shipped sample."
628
+ },
629
+ {
630
+ "slot": "shiftDown",
631
+ "assets": [
632
+ {
633
+ "name": "vehicle.shift.down",
634
+ "file": "shift_down.wav",
635
+ "role": "vehicle.audio.slot.shiftDown",
636
+ "mediaType": "audio/wav"
637
+ }
638
+ ],
639
+ "buffers": [
640
+ "vehicle.shift.down"
641
+ ],
642
+ "consumed": true,
643
+ "note": "REWRITE: your car's shift recording, from its sim mod, with provenance. This row is an example file name, not a shipped sample."
644
+ },
645
+ {
646
+ "slot": "clutch",
647
+ "assets": [
648
+ {
649
+ "name": "vehicle.clutch",
650
+ "file": "mod_clutch.wav",
651
+ "role": "vehicle.audio.slot.clutch",
652
+ "mediaType": "audio/wav"
653
+ }
654
+ ],
655
+ "buffers": [
656
+ "vehicle.clutch"
657
+ ],
658
+ "consumed": true,
659
+ "note": "REWRITE: your car's clutch recording, from its sim mod, with provenance. This row is an example file name, not a shipped sample."
660
+ },
661
+ {
662
+ "slot": "transmissionWhine",
663
+ "reason": "REWRITE: carry your car's own gearbox whine from its sim mod with provenance, unconsumed (the runtime plays a recorded whine only with a declared native pitch). Never another car's gearbox and never synthesised.",
664
+ "buffers": [],
665
+ "consumed": true
666
+ },
667
+ {
668
+ "slot": "turboSpool",
669
+ "reason": "REWRITE: a turbo car consumes this slot with its sourced spool loop; an NA car declares it empty with absent: not-fitted and the reason naturally aspirated.",
670
+ "buffers": [],
671
+ "consumed": false
672
+ },
673
+ {
674
+ "slot": "blowOff",
675
+ "reason": "REWRITE: a turbo car consumes this slot with its sourced blow-off; an NA car declares it empty with absent: not-fitted and the reason naturally aspirated.",
676
+ "buffers": [],
677
+ "consumed": false
678
+ },
679
+ {
680
+ "slot": "intake",
681
+ "reason": "REWRITE: carry your car's intake sound from its sim mod with provenance, unconsumed (the runtime has no intake layer).",
682
+ "buffers": [],
683
+ "consumed": false
684
+ },
685
+ {
686
+ "slot": "revLimiter",
687
+ "assets": [
688
+ {
689
+ "name": "vehicle.rev-limiter",
690
+ "file": "mod_rev_limiter.wav",
691
+ "role": "vehicle.audio.slot.revLimiter",
692
+ "mediaType": "audio/wav"
693
+ }
694
+ ],
695
+ "buffers": [
696
+ "vehicle.rev-limiter"
697
+ ],
698
+ "consumed": true,
699
+ "note": "REWRITE: your car's own limiter event from its sim mod (one short crack at your limiter rpm), with provenance. Never composited or synthesised."
700
+ },
701
+ {
702
+ "slot": "backfire",
703
+ "assets": [
704
+ {
705
+ "name": "vehicle.backfire",
706
+ "file": "backfire.wav",
707
+ "role": "vehicle.audio.slot.backfire",
708
+ "mediaType": "audio/wav"
709
+ }
710
+ ],
711
+ "buffers": [
712
+ "vehicle.backfire"
713
+ ],
714
+ "consumed": true,
715
+ "note": "REWRITE: your car's overrun/backfire recording from its sim mod, with provenance, or declare the slot unconsumed with a reason."
716
+ },
717
+ {
718
+ "slot": "impactLight",
719
+ "assets": [
720
+ {
721
+ "cid": "cid:sha256:6e8b31dacf4506317f86275628403e8adb3c8669b78aa720896742fdabe5d8c0",
722
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/6e/6e8b31dacf4506317f86275628403e8adb3c8669b78aa720896742fdabe5d8c0",
723
+ "file": "bg_impact_light.wav",
724
+ "name": "vehicle.impact.light",
725
+ "path": "stock-audio/bg_impact_light.wav",
726
+ "role": "vehicle.audio.slot.impactLight",
727
+ "bytes": 32812,
728
+ "mediaType": "audio/wav",
729
+ "checksumSha256": "6e8b31dacf4506317f86275628403e8adb3c8669b78aa720896742fdabe5d8c0"
730
+ }
731
+ ],
732
+ "buffers": [
733
+ "vehicle.impact.light"
734
+ ],
735
+ "consumed": true,
736
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
737
+ },
738
+ {
739
+ "slot": "impactMedium",
740
+ "assets": [
741
+ {
742
+ "cid": "cid:sha256:67fcd4e042429d25d81bcde96a98fd7f0e05f21cc57b5f12e0a9f1c208662059",
743
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/67/67fcd4e042429d25d81bcde96a98fd7f0e05f21cc57b5f12e0a9f1c208662059",
744
+ "file": "bg_impact_medium.wav",
745
+ "name": "vehicle.impact.medium",
746
+ "path": "stock-audio/bg_impact_medium.wav",
747
+ "role": "vehicle.audio.slot.impactMedium",
748
+ "bytes": 29740,
749
+ "mediaType": "audio/wav",
750
+ "checksumSha256": "67fcd4e042429d25d81bcde96a98fd7f0e05f21cc57b5f12e0a9f1c208662059"
751
+ }
752
+ ],
753
+ "buffers": [
754
+ "vehicle.impact.medium"
755
+ ],
756
+ "consumed": true,
757
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
758
+ },
759
+ {
760
+ "slot": "impactHeavy",
761
+ "assets": [
762
+ {
763
+ "cid": "cid:sha256:35144b40ac089420ea4fed433e9bf574669564667b4189a7ec4a3dc558f3ed5d",
764
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/35/35144b40ac089420ea4fed433e9bf574669564667b4189a7ec4a3dc558f3ed5d",
765
+ "file": "bg_impact_heavy.wav",
766
+ "name": "vehicle.impact.heavy",
767
+ "path": "stock-audio/bg_impact_heavy.wav",
768
+ "role": "vehicle.audio.slot.impactHeavy",
769
+ "bytes": 30252,
770
+ "mediaType": "audio/wav",
771
+ "checksumSha256": "35144b40ac089420ea4fed433e9bf574669564667b4189a7ec4a3dc558f3ed5d"
772
+ }
773
+ ],
774
+ "buffers": [
775
+ "vehicle.impact.heavy"
776
+ ],
777
+ "consumed": true,
778
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
779
+ },
780
+ {
781
+ "slot": "suspension",
782
+ "assets": [
783
+ {
784
+ "cid": "cid:sha256:63a3a4e5c706fa46e79e2b7c5b9e3712df7fd1cd9075a5b33269edf62aef1f67",
785
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/63/63a3a4e5c706fa46e79e2b7c5b9e3712df7fd1cd9075a5b33269edf62aef1f67",
786
+ "file": "bg_suspension.wav",
787
+ "name": "vehicle.suspension",
788
+ "path": "stock-audio/bg_suspension.wav",
789
+ "role": "vehicle.audio.slot.suspension",
790
+ "bytes": 16844,
791
+ "mediaType": "audio/wav",
792
+ "checksumSha256": "63a3a4e5c706fa46e79e2b7c5b9e3712df7fd1cd9075a5b33269edf62aef1f67"
793
+ }
794
+ ],
795
+ "buffers": [
796
+ "vehicle.suspension"
797
+ ],
798
+ "consumed": true,
799
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
800
+ },
801
+ {
802
+ "slot": "tyreSqueal",
803
+ "reason": "REWRITE: carry your car's tyre-squeal recording (sim mod, else the BeamNG base game) with provenance.",
804
+ "buffers": [],
805
+ "consumed": true
806
+ },
807
+ {
808
+ "slot": "tyreScrub",
809
+ "assets": [
810
+ {
811
+ "cid": "cid:sha256:e4fedd977dcc9d9fb466c734e49fed6a1fbcbacec678b5e5662f3e78fa7ab5ab",
812
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/e4/e4fedd977dcc9d9fb466c734e49fed6a1fbcbacec678b5e5662f3e78fa7ab5ab",
813
+ "file": "bg_tyre_scrub.wav",
814
+ "name": "vehicle.tyre.scrub",
815
+ "path": "stock-audio/bg_tyre_scrub.wav",
816
+ "role": "vehicle.audio.slot.tyreScrub",
817
+ "bytes": 238340,
818
+ "mediaType": "audio/wav",
819
+ "checksumSha256": "e4fedd977dcc9d9fb466c734e49fed6a1fbcbacec678b5e5662f3e78fa7ab5ab"
820
+ }
821
+ ],
822
+ "buffers": [
823
+ "vehicle.tyre.scrub"
824
+ ],
825
+ "consumed": true,
826
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
827
+ },
828
+ {
829
+ "slot": "tyreSpin",
830
+ "assets": [
831
+ {
832
+ "cid": "cid:sha256:72e9b1c26d3f463694ef3fdb6d0f690e5e89198d2592221a06c7c2799983f87d",
833
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/72/72e9b1c26d3f463694ef3fdb6d0f690e5e89198d2592221a06c7c2799983f87d",
834
+ "file": "bg_tyre_spin.wav",
835
+ "name": "vehicle.tyre.spin",
836
+ "path": "stock-audio/bg_tyre_spin.wav",
837
+ "role": "vehicle.audio.slot.tyreSpin",
838
+ "bytes": 120044,
839
+ "mediaType": "audio/wav",
840
+ "checksumSha256": "72e9b1c26d3f463694ef3fdb6d0f690e5e89198d2592221a06c7c2799983f87d"
841
+ }
842
+ ],
843
+ "buffers": [
844
+ "vehicle.tyre.spin"
845
+ ],
846
+ "consumed": true,
847
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
848
+ },
849
+ {
850
+ "slot": "tyreRollSlow",
851
+ "assets": [
852
+ {
853
+ "cid": "cid:sha256:cdb520f44b0cc3a554dbf4c0ff35f0f1d471b4b187983e3f6f01342f150ee2a0",
854
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/cd/cdb520f44b0cc3a554dbf4c0ff35f0f1d471b4b187983e3f6f01342f150ee2a0",
855
+ "file": "bg_tyre_roll_slow.wav",
856
+ "name": "vehicle.tyre.roll.slow",
857
+ "path": "stock-audio/bg_tyre_roll_slow.wav",
858
+ "role": "vehicle.audio.slot.tyreRollSlow",
859
+ "bytes": 247852,
860
+ "mediaType": "audio/wav",
861
+ "checksumSha256": "cdb520f44b0cc3a554dbf4c0ff35f0f1d471b4b187983e3f6f01342f150ee2a0"
862
+ }
863
+ ],
864
+ "buffers": [
865
+ "vehicle.tyre.roll.slow"
866
+ ],
867
+ "consumed": true,
868
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
869
+ },
870
+ {
871
+ "slot": "tyreRollFast",
872
+ "assets": [
873
+ {
874
+ "cid": "cid:sha256:a52af576825b184dc169d9a90f0bf813857d9387ef777ea362c592b5790d7d87",
875
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/a5/a52af576825b184dc169d9a90f0bf813857d9387ef777ea362c592b5790d7d87",
876
+ "file": "bg_tyre_roll_fast.wav",
877
+ "name": "vehicle.tyre.roll.fast",
878
+ "path": "stock-audio/bg_tyre_roll_fast.wav",
879
+ "role": "vehicle.audio.slot.tyreRollFast",
880
+ "bytes": 761900,
881
+ "mediaType": "audio/wav",
882
+ "checksumSha256": "a52af576825b184dc169d9a90f0bf813857d9387ef777ea362c592b5790d7d87"
883
+ }
884
+ ],
885
+ "buffers": [
886
+ "vehicle.tyre.roll.fast"
887
+ ],
888
+ "consumed": true,
889
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
890
+ },
891
+ {
892
+ "slot": "indicatorTick",
893
+ "assets": [
894
+ {
895
+ "cid": "cid:sha256:ce92945219869422677c632262569a97a6db596e9dedca63af5037928d7f7884",
896
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/ce/ce92945219869422677c632262569a97a6db596e9dedca63af5037928d7f7884",
897
+ "file": "bg_indicator_click.wav",
898
+ "name": "vehicle.indicator.tick",
899
+ "path": "stock-audio/bg_indicator_click.wav",
900
+ "role": "vehicle.audio.slot.indicatorTick",
901
+ "bytes": 48044,
902
+ "mediaType": "audio/wav",
903
+ "checksumSha256": "ce92945219869422677c632262569a97a6db596e9dedca63af5037928d7f7884"
904
+ }
905
+ ],
906
+ "buffers": [
907
+ "vehicle.indicator.tick"
908
+ ],
909
+ "consumed": true,
910
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
911
+ },
912
+ {
913
+ "slot": "skid",
914
+ "assets": [
915
+ {
916
+ "cid": "cid:sha256:38c3696297b80521593a999fc30adeab6436b7c8f6224656df3af9e83cc52c97",
917
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/38/38c3696297b80521593a999fc30adeab6436b7c8f6224656df3af9e83cc52c97",
918
+ "file": "bg_skid.wav",
919
+ "name": "vehicle.skid",
920
+ "path": "stock-audio/bg_skid.wav",
921
+ "role": "vehicle.audio.slot.skid",
922
+ "bytes": 51044,
923
+ "mediaType": "audio/wav",
924
+ "checksumSha256": "38c3696297b80521593a999fc30adeab6436b7c8f6224656df3af9e83cc52c97"
925
+ }
926
+ ],
927
+ "buffers": [
928
+ "vehicle.skid"
929
+ ],
930
+ "consumed": true,
931
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
932
+ },
933
+ {
934
+ "slot": "brakeSqueal",
935
+ "assets": [
936
+ {
937
+ "cid": "cid:sha256:c0e6c4494d23259277e117131b10aa571ae61fb6357f5c0a3ffee1abe55f94b2",
938
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/c0/c0e6c4494d23259277e117131b10aa571ae61fb6357f5c0a3ffee1abe55f94b2",
939
+ "file": "bg_brake_squeal.wav",
940
+ "name": "vehicle.brake-squeal",
941
+ "path": "stock-audio/bg_brake_squeal.wav",
942
+ "role": "vehicle.audio.slot.brakeSqueal",
943
+ "bytes": 66746,
944
+ "mediaType": "audio/wav",
945
+ "checksumSha256": "c0e6c4494d23259277e117131b10aa571ae61fb6357f5c0a3ffee1abe55f94b2"
946
+ }
947
+ ],
948
+ "buffers": [
949
+ "vehicle.brake-squeal"
950
+ ],
951
+ "consumed": true,
952
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
953
+ },
954
+ {
955
+ "slot": "handbrake",
956
+ "assets": [
957
+ {
958
+ "cid": "cid:sha256:e90a2f613222a1769b63444773377c008148d3365163ea2584d287f5115b6b14",
959
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/e9/e90a2f613222a1769b63444773377c008148d3365163ea2584d287f5115b6b14",
960
+ "file": "bg_handbrake.wav",
961
+ "name": "vehicle.handbrake",
962
+ "path": "stock-audio/bg_handbrake.wav",
963
+ "role": "vehicle.audio.slot.handbrake",
964
+ "bytes": 34604,
965
+ "mediaType": "audio/wav",
966
+ "checksumSha256": "e90a2f613222a1769b63444773377c008148d3365163ea2584d287f5115b6b14"
967
+ }
968
+ ],
969
+ "buffers": [
970
+ "vehicle.handbrake"
971
+ ],
972
+ "consumed": true,
973
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
974
+ },
975
+ {
976
+ "slot": "horn",
977
+ "assets": [
978
+ {
979
+ "cid": "cid:sha256:40fcae8675f65a8d0e0a24fa6942c5ceaeb300173df5a468c5caeb450237c36b",
980
+ "url": "https://eu.uni-items-web.dev.helix-cdn.com/content/sha256/40/40fcae8675f65a8d0e0a24fa6942c5ceaeb300173df5a468c5caeb450237c36b",
981
+ "file": "bg_horn.wav",
982
+ "name": "vehicle.horn",
983
+ "path": "stock-audio/bg_horn.wav",
984
+ "role": "vehicle.audio.slot.horn",
985
+ "bytes": 35762,
986
+ "mediaType": "audio/wav",
987
+ "checksumSha256": "40fcae8675f65a8d0e0a24fa6942c5ceaeb300173df5a468c5caeb450237c36b"
988
+ }
989
+ ],
990
+ "buffers": [
991
+ "vehicle.horn"
992
+ ],
993
+ "consumed": true,
994
+ "note": "REWRITE: the 993 example file, not your car's sound. Replace with this slot from your car's sim mod (import_vehicle_audio) and give it provenance, or declare absent: not-fitted."
995
+ },
996
+ {
997
+ "slot": "doorOpen",
998
+ "reason": "REWRITE: carry your car's door-open recording (its sim mod, else the BeamNG base game's door latch) with provenance. Doors are required; the engine is wiring the door edge.",
999
+ "buffers": [
1000
+ "vehicle.door.open"
1001
+ ],
1002
+ "consumed": false
1003
+ },
1004
+ {
1005
+ "slot": "doorClose",
1006
+ "reason": "REWRITE: carry your car's door-close recording (its sim mod, else the BeamNG base game's door latch) with provenance. Doors are required; the engine is wiring the door edge.",
1007
+ "buffers": [
1008
+ "vehicle.door.close"
1009
+ ],
1010
+ "consumed": false
1011
+ },
1012
+ {
1013
+ "slot": "reverseBeep",
1014
+ "reason": "REWRITE: carry your car's reverse beep with provenance; empty only as absent: not-fitted when the real car has no reverse warning.",
1015
+ "buffers": [],
1016
+ "consumed": false
1017
+ }
1018
+ ],
1019
+ "bankId": "porsche-m64-flat-six",
1020
+ "strokes": 4,
1021
+ "muffling": 0.22,
1022
+ "maxLoadMix": 1,
1023
+ "minLoadMix": 0.15,
1024
+ "engineBlend": "PSH_M64_FLAT6",
1025
+ "engineGainDb": -8,
1026
+ "exhaustBlend": "PSH_M64_FLAT6",
1027
+ "exhaustGainDb": -5,
1028
+ "sampleCylinderCount": 6
1029
+ },
1030
+ "model": "911 Carrera (993, M64/05)",
1031
+ "years": "1994\u20131998",
1032
+ "lights": {
1033
+ "lamps": [
1034
+ {
1035
+ "id": "head",
1036
+ "beam": {
1037
+ "distance": 55,
1038
+ "penumbra": 0.55,
1039
+ "intensity": 12,
1040
+ "halfAngleDeg": 26
1041
+ },
1042
+ "node": "headlamps",
1043
+ "light": "headlight_low",
1044
+ "colorHex": 16774352,
1045
+ "intensity": 2.5,
1046
+ "presentation": "emissive+beam"
1047
+ },
1048
+ {
1049
+ "id": "main",
1050
+ "beam": {
1051
+ "distance": 95,
1052
+ "penumbra": 0.4,
1053
+ "intensity": 18,
1054
+ "halfAngleDeg": 18
1055
+ },
1056
+ "node": "headlamps",
1057
+ "light": "headlight_high",
1058
+ "colorHex": 16777215,
1059
+ "intensity": 3,
1060
+ "presentation": "emissive+beam"
1061
+ },
1062
+ {
1063
+ "id": "fog",
1064
+ "node": "foglights",
1065
+ "light": "fog_front",
1066
+ "colorHex": 16774880,
1067
+ "intensity": 2,
1068
+ "presentation": "emissive"
1069
+ },
1070
+ {
1071
+ "id": "tail",
1072
+ "node": "taillamps",
1073
+ "light": "tail",
1074
+ "colorHex": 16716032,
1075
+ "intensity": 1,
1076
+ "presentation": "emissive"
1077
+ },
1078
+ {
1079
+ "id": "brake",
1080
+ "node": "taillamps",
1081
+ "light": "brake",
1082
+ "colorHex": 16716032,
1083
+ "intensity": 2.4,
1084
+ "presentation": "emissive"
1085
+ },
1086
+ {
1087
+ "id": "chmsl",
1088
+ "node": "chmsl",
1089
+ "light": "brake",
1090
+ "colorHex": 16716032,
1091
+ "intensity": 2.4,
1092
+ "presentation": "emissive"
1093
+ },
1094
+ {
1095
+ "id": "reverse",
1096
+ "node": "reverselights",
1097
+ "light": "reverse",
1098
+ "colorHex": 15922687,
1099
+ "intensity": 2.5,
1100
+ "presentation": "emissive"
1101
+ },
1102
+ {
1103
+ "id": "ind_l",
1104
+ "node": "indicator_l",
1105
+ "light": "indicator_left",
1106
+ "colorHex": 16747520,
1107
+ "intensity": 3,
1108
+ "presentation": "emissive"
1109
+ },
1110
+ {
1111
+ "id": "ind_r",
1112
+ "node": "indicator_r",
1113
+ "light": "indicator_right",
1114
+ "colorHex": 16747520,
1115
+ "intensity": 3,
1116
+ "presentation": "emissive"
1117
+ },
1118
+ {
1119
+ "id": "plate",
1120
+ "node": "numberplate",
1121
+ "light": "plate",
1122
+ "colorHex": 16316664,
1123
+ "intensity": 0.45,
1124
+ "presentation": "emissive"
1125
+ }
1126
+ ],
1127
+ "indicatorHz": 1.25,
1128
+ "decelBrakeLightThreshold": 3.5
1129
+ },
1130
+ "market": "Rest of World (European specification)",
1131
+ "physics": {
1132
+ "aero": {
1133
+ "airDensity": {
1134
+ "unit": "kg/m^3",
1135
+ "value": 1.225,
1136
+ "sources": [
1137
+ "iso-standard-atmosphere"
1138
+ ]
1139
+ },
1140
+ "frontalArea": {
1141
+ "note": "Fitted: 0.79 x width 1.735 m x height 1.311 m, inside the 0.78-0.85 coup\u00e9 fraction; with Cd 0.33 it reproduces the published 270 km/h.",
1142
+ "unit": "m^2",
1143
+ "value": 1.8,
1144
+ "sources": [
1145
+ "wikipedia-993"
1146
+ ]
1147
+ },
1148
+ "dragCoefficient": {
1149
+ "note": "Porsche quotes Cd 0.33 for the 993 Carrera coup\u00e9.",
1150
+ "unit": "ratio",
1151
+ "value": 0.33,
1152
+ "sources": [
1153
+ "porsche-993-techdata"
1154
+ ]
1155
+ },
1156
+ "downforceCoefficient": {
1157
+ "note": "Stock Carrera: the rear spoiler deploys at 80 km/h for lift reduction, not downforce.",
1158
+ "unit": "ratio",
1159
+ "value": 0,
1160
+ "sources": [
1161
+ "porsche-993-techdata"
1162
+ ]
1163
+ }
1164
+ },
1165
+ "grip": {
1166
+ "peak": {
1167
+ "note": "OURS, fitted. Well below the shipped class presets (1.3\u20132.35, from GTA's arcade-inflated band) and a little above a textbook dry-tarmac road tyre, which is where a 2005 Potenza RE070 on a 1480 kg car that stops from 60 mph in 111 ft has to be: 111 ft IS 1.08 g average, so any peak below about 1.1 cannot produce the published braking distance no matter how the brakes are sized.",
1168
+ "unit": "g at the reference load",
1169
+ "value": 1.18,
1170
+ "sources": [
1171
+ "helix-solver-fit"
1172
+ ]
1173
+ },
1174
+ "sliding": {
1175
+ "note": "A DELIBERATELY NARROW 10% gap to peak, and this is the model's ABS stand-in \u2014 say so rather than let it look like a grippy-tyre choice. MEASURED: with a wide gap the car locks all four wheels under full brakes and the whole stop happens on SLIDING grip, which made the braking distance completely insensitive to `peak` (43.7 m at peak 1.05 and 43.6 m at peak 1.35 \u2014 a 29% grip change moving the answer by 0.2%). The real car has ABS and stops near its peak; v1 has no ABS and no wheel state to modulate, so the narrow gap is how an ABS car is represented in a model that cannot cycle a wheel.",
1176
+ "unit": "g",
1177
+ "value": 1.08,
1178
+ "sources": [
1179
+ "helix-solver-fit"
1180
+ ]
1181
+ },
1182
+ "biasFront": {
1183
+ "note": "Wider rear tyres (245 vs 205) on a rear-heavy car: grip biased rearward so the car is stable, not snap-happy.",
1184
+ "unit": "ratio",
1185
+ "value": 0.47,
1186
+ "sources": [
1187
+ "helix-solver-fit"
1188
+ ]
1189
+ },
1190
+ "lateralMultiplier": {
1191
+ "note": "Fitted to the instrumented magazine test's 2005 300 ft skidpad figure. Below 1 because a car's lateral limit sits under its longitudinal one once body roll and camber loss are in play, and v1 models neither.",
1192
+ "unit": "ratio",
1193
+ "value": 0.94,
1194
+ "sources": [
1195
+ "helix-solver-fit"
1196
+ ]
1197
+ },
1198
+ "loadSensitivityExponent": {
1199
+ "note": "Mid-upper of the measured 0.7\u20130.9 band. This is the one piece of tyre realism v1 keeps, and it is what makes weight transfer cost grip.",
1200
+ "unit": "exponent",
1201
+ "value": 0.85,
1202
+ "sources": [
1203
+ "tyre-load-sensitivity"
1204
+ ]
1205
+ }
1206
+ },
1207
+ "brakes": {
1208
+ "biasFront": {
1209
+ "note": "Rear-engined: more rear braking than a front-engined car; four-piston calipers all round, ABS 5.",
1210
+ "unit": "ratio",
1211
+ "value": 0.66,
1212
+ "sources": [
1213
+ "porsche-993-techdata"
1214
+ ]
1215
+ },
1216
+ "maxTorque": {
1217
+ "note": "Fitted to a 60\u20130 mph stop near 35 m.",
1218
+ "unit": "N.m",
1219
+ "value": 7400,
1220
+ "sources": [
1221
+ "helix-solver-fit"
1222
+ ]
1223
+ },
1224
+ "handbrakeAxle": "rear",
1225
+ "handbrakeTorque": {
1226
+ "unit": "N.m",
1227
+ "value": 2400,
1228
+ "sources": [
1229
+ "helix-solver-fit"
1230
+ ]
1231
+ }
1232
+ },
1233
+ "engine": {
1234
+ "idleRpm": {
1235
+ "unit": "rpm",
1236
+ "value": 800,
1237
+ "sources": [
1238
+ "porsche-993-techdata"
1239
+ ]
1240
+ },
1241
+ "strokes": 4,
1242
+ "cylinders": {
1243
+ "unit": "count",
1244
+ "value": 6,
1245
+ "sources": [
1246
+ "porsche-993-techdata"
1247
+ ]
1248
+ },
1249
+ "limiterRpm": {
1250
+ "note": "Red line 6,700; fuel cut just above.",
1251
+ "unit": "rpm",
1252
+ "value": 6800,
1253
+ "sources": [
1254
+ "porsche-993-techdata"
1255
+ ]
1256
+ },
1257
+ "coastTorque": {
1258
+ "unit": "N.m",
1259
+ "value": 42,
1260
+ "sources": [
1261
+ "helix-solver-fit"
1262
+ ]
1263
+ },
1264
+ "peakPowerKw": {
1265
+ "unit": "kW",
1266
+ "value": 200,
1267
+ "sources": [
1268
+ "porsche-993-techdata"
1269
+ ]
1270
+ },
1271
+ "torqueCurve": {
1272
+ "note": "Shape built through the two published anchors (330 N\u00b7m at 5,000; 200 kW = 313 N\u00b7m at 6,100).",
1273
+ "unit": "N\u00b7m at the crank vs rpm",
1274
+ "value": [
1275
+ [
1276
+ 800,
1277
+ 215
1278
+ ],
1279
+ [
1280
+ 1500,
1281
+ 255
1282
+ ],
1283
+ [
1284
+ 2000,
1285
+ 278
1286
+ ],
1287
+ [
1288
+ 2500,
1289
+ 293
1290
+ ],
1291
+ [
1292
+ 3000,
1293
+ 305
1294
+ ],
1295
+ [
1296
+ 3500,
1297
+ 314
1298
+ ],
1299
+ [
1300
+ 4000,
1301
+ 321
1302
+ ],
1303
+ [
1304
+ 4500,
1305
+ 327
1306
+ ],
1307
+ [
1308
+ 5000,
1309
+ 330
1310
+ ],
1311
+ [
1312
+ 5500,
1313
+ 327
1314
+ ],
1315
+ [
1316
+ 6000,
1317
+ 316
1318
+ ],
1319
+ [
1320
+ 6100,
1321
+ 313
1322
+ ],
1323
+ [
1324
+ 6500,
1325
+ 296
1326
+ ],
1327
+ [
1328
+ 6800,
1329
+ 278
1330
+ ]
1331
+ ],
1332
+ "sources": [
1333
+ "porsche-993-techdata"
1334
+ ]
1335
+ },
1336
+ "peakPowerRpm": {
1337
+ "unit": "rpm",
1338
+ "value": 6100,
1339
+ "sources": [
1340
+ "porsche-993-techdata"
1341
+ ]
1342
+ },
1343
+ "peakTorqueNm": {
1344
+ "unit": "N.m",
1345
+ "value": 330,
1346
+ "sources": [
1347
+ "porsche-993-techdata"
1348
+ ]
1349
+ },
1350
+ "peakTorqueRpm": {
1351
+ "unit": "rpm",
1352
+ "value": 5000,
1353
+ "sources": [
1354
+ "porsche-993-techdata"
1355
+ ]
1356
+ },
1357
+ "speedLimiterKph": {
1358
+ "note": "Not governed: 270 km/h is drag-limited.",
1359
+ "unit": "km/h",
1360
+ "value": null,
1361
+ "sources": [
1362
+ "porsche-993-techdata"
1363
+ ]
1364
+ },
1365
+ "drivetrainEfficiency": {
1366
+ "note": "Transaxle directly behind the engine: shorter path than a front-engined RWD car.",
1367
+ "unit": "ratio",
1368
+ "value": 0.91,
1369
+ "sources": [
1370
+ "helix-solver-fit"
1371
+ ]
1372
+ }
1373
+ },
1374
+ "chassis": {
1375
+ "mass": {
1376
+ "note": "DIN kerb weight.",
1377
+ "unit": "kg",
1378
+ "value": 1370,
1379
+ "sources": [
1380
+ "porsche-993-techdata",
1381
+ "wikipedia-993"
1382
+ ]
1383
+ },
1384
+ "width": {
1385
+ "unit": "m",
1386
+ "value": 1.735,
1387
+ "sources": [
1388
+ "wikipedia-993"
1389
+ ]
1390
+ },
1391
+ "height": {
1392
+ "unit": "m",
1393
+ "value": 1.311,
1394
+ "sources": [
1395
+ "wikipedia-993"
1396
+ ]
1397
+ },
1398
+ "length": {
1399
+ "unit": "m",
1400
+ "value": 4.26,
1401
+ "sources": [
1402
+ "wikipedia-993"
1403
+ ]
1404
+ },
1405
+ "tyreSize": "205/55ZR16 F, 245/45ZR16 R",
1406
+ "trackRear": {
1407
+ "unit": "m",
1408
+ "value": 1.4366,
1409
+ "sources": [
1410
+ "glb-measured"
1411
+ ]
1412
+ },
1413
+ "wheelbase": {
1414
+ "note": "Wheel centres moved onto the body's own arches; Porsche states 2.272 m.",
1415
+ "unit": "m",
1416
+ "value": 2.2806,
1417
+ "sources": [
1418
+ "glb-measured",
1419
+ "wikipedia-993"
1420
+ ]
1421
+ },
1422
+ "trackFront": {
1423
+ "unit": "m",
1424
+ "value": 1.3666,
1425
+ "sources": [
1426
+ "glb-measured"
1427
+ ]
1428
+ },
1429
+ "wheelRadius": {
1430
+ "note": "Real tyre outer radius: 205/55ZR16 front 0.316 m and 245/45ZR16 rear 0.3135 m; one radius (their mean, 0.315) because the solver and the visual both use a single chassis wheel radius. The GLB tyres are resized to it.",
1431
+ "unit": "m",
1432
+ "value": 0.315,
1433
+ "sources": [
1434
+ "glb-measured"
1435
+ ]
1436
+ },
1437
+ "inertiaMultiplier": {
1438
+ "unit": "ratio",
1439
+ "value": [
1440
+ 1,
1441
+ 1.1,
1442
+ 1.3
1443
+ ],
1444
+ "sources": [
1445
+ "helix-solver-fit"
1446
+ ]
1447
+ },
1448
+ "centreOfMassHeight": {
1449
+ "note": "Low flat-six behind the rear axle. REWRITE every note for your car.",
1450
+ "unit": "m",
1451
+ "value": 0.48,
1452
+ "sources": [
1453
+ "helix-solver-fit"
1454
+ ]
1455
+ },
1456
+ "groundToBodyOrigin": {
1457
+ "unit": "m",
1458
+ "value": 0.48,
1459
+ "sources": [
1460
+ "glb-measured"
1461
+ ]
1462
+ },
1463
+ "weightDistributionFront": {
1464
+ "note": "39/61, rear-engined.",
1465
+ "unit": "ratio",
1466
+ "value": 0.39,
1467
+ "sources": [
1468
+ "porsche-993-techdata"
1469
+ ]
1470
+ }
1471
+ },
1472
+ "gearbox": {
1473
+ "ratios": {
1474
+ "note": "G50/21 six-speed.",
1475
+ "unit": "ratio",
1476
+ "value": [
1477
+ 3.818,
1478
+ 2.15,
1479
+ 1.56,
1480
+ 1.242,
1481
+ 1.027,
1482
+ 0.821
1483
+ ],
1484
+ "sources": [
1485
+ "porsche-993-techdata"
1486
+ ]
1487
+ },
1488
+ "autoUpRpm": {
1489
+ "unit": "rpm",
1490
+ "value": 6600,
1491
+ "sources": [
1492
+ "helix-solver-fit"
1493
+ ]
1494
+ },
1495
+ "shiftTime": {
1496
+ "unit": "s",
1497
+ "value": 0.25,
1498
+ "sources": [
1499
+ "helix-solver-fit"
1500
+ ]
1501
+ },
1502
+ "finalDrive": {
1503
+ "note": "G50/21 final drive.",
1504
+ "unit": "ratio",
1505
+ "value": 3.444,
1506
+ "sources": [
1507
+ "porsche-993-techdata"
1508
+ ]
1509
+ },
1510
+ "autoDownRpm": {
1511
+ "unit": "rpm",
1512
+ "value": 2800,
1513
+ "sources": [
1514
+ "helix-solver-fit"
1515
+ ]
1516
+ },
1517
+ "reverseRatio": {
1518
+ "unit": "ratio",
1519
+ "value": -3.545,
1520
+ "sources": [
1521
+ "porsche-993-techdata"
1522
+ ]
1523
+ }
1524
+ },
1525
+ "steering": {
1526
+ "rackTime": {
1527
+ "note": "Quick rack \u2014 the GD reference car is about 2.5 turns lock to lock.",
1528
+ "unit": "s",
1529
+ "value": 0.14,
1530
+ "sources": [
1531
+ "helix-solver-fit"
1532
+ ]
1533
+ },
1534
+ "roadWheelLockDeg": {
1535
+ "unit": "deg",
1536
+ "value": 34,
1537
+ "sources": [
1538
+ "helix-solver-fit"
1539
+ ]
1540
+ },
1541
+ "speedSensitivity": {
1542
+ "unit": "authority 0..1 vs m/s",
1543
+ "value": [
1544
+ [
1545
+ 0,
1546
+ 1
1547
+ ],
1548
+ [
1549
+ 10,
1550
+ 0.9
1551
+ ],
1552
+ [
1553
+ 25,
1554
+ 0.62
1555
+ ],
1556
+ [
1557
+ 50,
1558
+ 0.4
1559
+ ]
1560
+ ],
1561
+ "sources": [
1562
+ "helix-solver-fit"
1563
+ ]
1564
+ }
1565
+ },
1566
+ "suspension": {
1567
+ "bumpScale": {
1568
+ "unit": "ratio",
1569
+ "value": 0.9,
1570
+ "sources": [
1571
+ "helix-solver-fit"
1572
+ ]
1573
+ },
1574
+ "bumpTravel": {
1575
+ "note": "Compression above static before the bump stop. Short, as a sports saloon's is.",
1576
+ "unit": "m",
1577
+ "value": 0.07,
1578
+ "sources": [
1579
+ "helix-solver-fit"
1580
+ ]
1581
+ },
1582
+ "rideHzRear": {
1583
+ "note": "Rear ~9% above front \u2014 the \"flat ride\" convention, so the body pitches less over a bump.",
1584
+ "unit": "Hz",
1585
+ "value": 1.75,
1586
+ "sources": [
1587
+ "ride-frequency-literature"
1588
+ ]
1589
+ },
1590
+ "rideHzFront": {
1591
+ "note": "Upper end of the sports band. The GD reference car rides firmly by road-car standards.",
1592
+ "unit": "Hz",
1593
+ "value": 1.55,
1594
+ "sources": [
1595
+ "ride-frequency-literature",
1596
+ "helix-solver-fit"
1597
+ ]
1598
+ },
1599
+ "dampingRatio": {
1600
+ "note": "Between the road (0.2\u20130.3) and race (0.65\u20130.70) bands.",
1601
+ "unit": "ratio",
1602
+ "value": 0.45,
1603
+ "sources": [
1604
+ "ride-frequency-literature"
1605
+ ]
1606
+ },
1607
+ "reboundScale": {
1608
+ "note": "Rebound above bump: the body settles rather than kicking.",
1609
+ "unit": "ratio",
1610
+ "value": 1.1,
1611
+ "sources": [
1612
+ "helix-solver-fit"
1613
+ ]
1614
+ },
1615
+ "antiRollBarRear": {
1616
+ "note": "Rear softer than front \u2014 the classic understeer-biased road-car setup.",
1617
+ "unit": "N/m",
1618
+ "value": 9000,
1619
+ "sources": [
1620
+ "helix-solver-fit"
1621
+ ]
1622
+ },
1623
+ "antiRollBarFront": {
1624
+ "note": "Sized by ROLL GRADIENT, not by feel. The springs alone give this car ~101 kN\u00b7m/rad of roll stiffness; a road car rolls 4\u20135\u00b0/g, so the bars may only add about a fifth of that. An earlier 38000/28000 pair took the total to 175 kN\u00b7m/rad and 2.3\u00b0/g \u2014 a racing car's roll gradient on a road saloon, which reads as a car glued flat through corners.",
1625
+ "unit": "N/m",
1626
+ "value": 14000,
1627
+ "sources": [
1628
+ "helix-solver-fit"
1629
+ ]
1630
+ },
1631
+ "staticRideHeight": {
1632
+ "note": "Suspension ANCHOR to wheel centre under static load \u2014 a solver parameter, NOT the car's ground clearance (the manufacturer publish 145 mm for that). It sets where the body origin sits relative to the road, as wheelRadius + this: 0.315 + 0.165 = 0.48 m, exactly the locked groundToBodyOrigin, so the unsimulated spawn pose is the rest pose.",
1633
+ "unit": "m",
1634
+ "value": 0.165,
1635
+ "sources": [
1636
+ "helix-solver-fit"
1637
+ ]
1638
+ }
1639
+ },
1640
+ "linearDamping": {
1641
+ "note": "Zero: aero already carries real drag; a non-zero value double-counts it.",
1642
+ "unit": "ratio",
1643
+ "value": 0,
1644
+ "sources": [
1645
+ "helix-solver-fit"
1646
+ ]
1647
+ },
1648
+ "angularDamping": {
1649
+ "unit": "ratio",
1650
+ "value": 0.15,
1651
+ "sources": [
1652
+ "helix-solver-fit"
1653
+ ]
1654
+ },
1655
+ "driveBiasFront": {
1656
+ "note": "Carrera (not Carrera 4): rear-wheel drive.",
1657
+ "unit": "ratio",
1658
+ "value": 0,
1659
+ "sources": [
1660
+ "porsche-993-techdata"
1661
+ ]
1662
+ }
1663
+ },
1664
+ "targets": {
1665
+ "lateralG": {
1666
+ "unit": "g",
1667
+ "value": 0.92,
1668
+ "sources": [
1669
+ "helix-solver-fit"
1670
+ ],
1671
+ "tolerance": 0.15
1672
+ },
1673
+ "topSpeedKph": {
1674
+ "unit": "km/h",
1675
+ "value": 270,
1676
+ "sources": [
1677
+ "porsche-993-techdata",
1678
+ "wikipedia-993"
1679
+ ],
1680
+ "tolerance": 0.06
1681
+ },
1682
+ "quarterMileS": {
1683
+ "note": "Period road tests ~14.0\u201314.3 s.",
1684
+ "unit": "s",
1685
+ "value": 14.1,
1686
+ "sources": [
1687
+ "helix-solver-fit"
1688
+ ],
1689
+ "tolerance": 0.1
1690
+ },
1691
+ "zeroToSixtyMphS": {
1692
+ "note": "5.6 s to 100 km/h implies ~5.3 s to 96.6 km/h.",
1693
+ "unit": "s",
1694
+ "value": 5.3,
1695
+ "sources": [
1696
+ "helix-solver-fit"
1697
+ ],
1698
+ "tolerance": 0.08
1699
+ },
1700
+ "zeroToHundredKphS": {
1701
+ "unit": "s",
1702
+ "value": 5.6,
1703
+ "sources": [
1704
+ "porsche-993-techdata",
1705
+ "wikipedia-993"
1706
+ ],
1707
+ "tolerance": 0.06
1708
+ },
1709
+ "brakingSixtyToZeroM": {
1710
+ "note": "Period road tests 35\u201337 m.",
1711
+ "unit": "m",
1712
+ "value": 36,
1713
+ "sources": [
1714
+ "helix-solver-fit"
1715
+ ],
1716
+ "tolerance": 0.15
1717
+ },
1718
+ "ungovernedTopSpeedKph": {
1719
+ "unit": "km/h",
1720
+ "value": 270,
1721
+ "sources": [
1722
+ "porsche-993-techdata"
1723
+ ],
1724
+ "tolerance": 0.08
1725
+ }
1726
+ },
1727
+ "citations": [
1728
+ {
1729
+ "id": "porsche-993-techdata",
1730
+ "url": "https://newsroom.porsche.com/en/products/porsche-911-993.html",
1731
+ "kind": "manufacturer",
1732
+ "note": "European 272 PS car. The 1996+ VarioRam car (285 PS) is a different calibration.",
1733
+ "year": 1994,
1734
+ "title": "911 Carrera (993) technical data, 1994 model year (M64/05 3.6 L flat-six, 200 kW / 272 PS at 6,100 rpm, 330 N\u00b7m at 5,000 rpm, G50/21 six-speed, 1,370 kg DIN, 0\u2013100 km/h 5.6 s, 270 km/h)",
1735
+ "publisher": "Porsche AG"
1736
+ },
1737
+ {
1738
+ "id": "wikipedia-993",
1739
+ "url": "https://en.wikipedia.org/wiki/Porsche_911_(993)",
1740
+ "kind": "reference",
1741
+ "year": 2026,
1742
+ "title": "Porsche 911 (993): wheelbase 2,272 mm, length 4,260 mm, width 1,735 mm, height 1,311 mm, kerb weight 1,370 kg, 0\u2013100 km/h 5.6 s (manufacturer), 270 km/h",
1743
+ "publisher": "Wikipedia"
1744
+ },
1745
+ {
1746
+ "id": "glb-measured",
1747
+ "url": "https://github.com/hypersonic-laboratories/helix-workspace/tree/main/asset-lab/porsche-911-993",
1748
+ "kind": "measurement",
1749
+ "year": 2026,
1750
+ "title": "Measured off the published GLB: wheel centres, track, wheel radius, hinge pivots, seats, steering",
1751
+ "publisher": "HELIX asset-lab/porsche-911-993"
1752
+ },
1753
+ {
1754
+ "id": "ride-frequency-literature",
1755
+ "kind": "engineering-literature",
1756
+ "title": "Passenger-car ride frequencies (road 1.0\u20131.5 Hz, sports 1.5\u20132.0 Hz) and ride damping ratios (road 0.2\u20130.3, race 0.65\u20130.70)",
1757
+ "publisher": "Vehicle-dynamics literature (Milliken; Gillespie)"
1758
+ },
1759
+ {
1760
+ "id": "tyre-load-sensitivity",
1761
+ "kind": "engineering-literature",
1762
+ "title": "Tyre vertical-load sensitivity: peak force is proportional to Fz^n with n between 0.7 and 0.9",
1763
+ "publisher": "Tyre-mechanics literature"
1764
+ },
1765
+ {
1766
+ "id": "iso-standard-atmosphere",
1767
+ "url": "https://www.iso.org/standard/7472.html",
1768
+ "kind": "standard",
1769
+ "year": 1975,
1770
+ "title": "ISO 2533 standard atmosphere: 1.225 kg/m^3 at sea level, 15 \u00b0C",
1771
+ "publisher": "ISO"
1772
+ },
1773
+ {
1774
+ "id": "helix-solver-fit",
1775
+ "url": "https://github.com/hypersonic-laboratories/helix-web-engine-new",
1776
+ "kind": "fit",
1777
+ "year": 2026,
1778
+ "title": "Fitted against measureVehicle (engine v2 land solver) to the published 0\u2013100 km/h and top speed",
1779
+ "publisher": "HELIX"
1780
+ }
1781
+ ],
1782
+ "specialty": {
1783
+ "state": [
1784
+ {
1785
+ "var": "doorFL",
1786
+ "type": "boolean",
1787
+ "persistence": "durable"
1788
+ },
1789
+ {
1790
+ "var": "doorFR",
1791
+ "type": "boolean",
1792
+ "persistence": "durable"
1793
+ },
1794
+ {
1795
+ "var": "fog",
1796
+ "type": "boolean",
1797
+ "persistence": "durable"
1798
+ },
1799
+ {
1800
+ "var": "hood",
1801
+ "type": "boolean",
1802
+ "persistence": "durable"
1803
+ },
1804
+ {
1805
+ "var": "lights",
1806
+ "type": "number",
1807
+ "persistence": "durable"
1808
+ },
1809
+ {
1810
+ "var": "trunk",
1811
+ "type": "boolean",
1812
+ "persistence": "durable"
1813
+ }
1814
+ ],
1815
+ "format": 1,
1816
+ "module": {
1817
+ "id": "helix.convertible",
1818
+ "version": "1.1.0",
1819
+ "bundleId": "helix-convertible",
1820
+ "seatVars": {
1821
+ "seat_dside_f": "driverSeat",
1822
+ "seat_pside_f": "frontPassengerSeat"
1823
+ },
1824
+ "driverSeat": "seat_dside_f",
1825
+ "bundleChecksumSha256": "820eb175710651e8ecf0b7522616448593670d5988a011ad1657d81e7e67ccd0"
1826
+ },
1827
+ "actions": [
1828
+ {
1829
+ "id": "helix.porsche_993.enter",
1830
+ "call": "enter",
1831
+ "kind": "run",
1832
+ "label": "Drive",
1833
+ "access": [
1834
+ "nearby"
1835
+ ],
1836
+ "control": "enter-seat",
1837
+ "surfaces": [
1838
+ "nearby"
1839
+ ]
1840
+ },
1841
+ {
1842
+ "id": "helix.porsche_993.exit",
1843
+ "call": "exit",
1844
+ "kind": "run",
1845
+ "label": "Exit vehicle",
1846
+ "access": [
1847
+ "driver",
1848
+ "occupant"
1849
+ ],
1850
+ "control": "exit-seat",
1851
+ "surfaces": [
1852
+ "cockpit"
1853
+ ]
1854
+ },
1855
+ {
1856
+ "id": "helix.porsche_993.horn",
1857
+ "call": "horn",
1858
+ "kind": "run",
1859
+ "label": "Horn",
1860
+ "access": [
1861
+ "driver"
1862
+ ],
1863
+ "surfaces": [
1864
+ "cockpit",
1865
+ "keybind"
1866
+ ]
1867
+ },
1868
+ {
1869
+ "id": "helix.porsche_993.door_f_l",
1870
+ "call": "doorFL",
1871
+ "kind": "run",
1872
+ "label": "Driver door",
1873
+ "access": [
1874
+ "driver"
1875
+ ],
1876
+ "surfaces": [
1877
+ "cockpit",
1878
+ "keybind"
1879
+ ]
1880
+ },
1881
+ {
1882
+ "id": "helix.porsche_993.door_f_r",
1883
+ "call": "doorFR",
1884
+ "kind": "run",
1885
+ "label": "Passenger door",
1886
+ "access": [
1887
+ "driver"
1888
+ ],
1889
+ "surfaces": [
1890
+ "cockpit",
1891
+ "keybind"
1892
+ ]
1893
+ },
1894
+ {
1895
+ "id": "helix.porsche_993.fog",
1896
+ "call": "fog",
1897
+ "kind": "run",
1898
+ "label": "Fog lights",
1899
+ "access": [
1900
+ "driver"
1901
+ ],
1902
+ "surfaces": [
1903
+ "cockpit",
1904
+ "keybind"
1905
+ ]
1906
+ },
1907
+ {
1908
+ "id": "helix.porsche_993.hazards",
1909
+ "call": "hazards",
1910
+ "kind": "run",
1911
+ "label": "Hazards",
1912
+ "access": [
1913
+ "driver"
1914
+ ],
1915
+ "surfaces": [
1916
+ "cockpit",
1917
+ "keybind"
1918
+ ]
1919
+ },
1920
+ {
1921
+ "id": "helix.porsche_993.headlights",
1922
+ "call": "headlights",
1923
+ "kind": "run",
1924
+ "label": "Headlights",
1925
+ "access": [
1926
+ "driver"
1927
+ ],
1928
+ "surfaces": [
1929
+ "cockpit",
1930
+ "keybind"
1931
+ ]
1932
+ },
1933
+ {
1934
+ "id": "helix.porsche_993.hood",
1935
+ "call": "hood",
1936
+ "kind": "run",
1937
+ "label": "Front lid",
1938
+ "access": [
1939
+ "driver"
1940
+ ],
1941
+ "surfaces": [
1942
+ "cockpit",
1943
+ "keybind"
1944
+ ]
1945
+ },
1946
+ {
1947
+ "id": "helix.porsche_993.ignition",
1948
+ "call": "ignition",
1949
+ "kind": "run",
1950
+ "label": "Ignition",
1951
+ "access": [
1952
+ "driver"
1953
+ ],
1954
+ "surfaces": [
1955
+ "cockpit",
1956
+ "keybind"
1957
+ ]
1958
+ },
1959
+ {
1960
+ "id": "helix.porsche_993.indicator_left",
1961
+ "call": "indicatorLeft",
1962
+ "kind": "run",
1963
+ "label": "Indicate left",
1964
+ "access": [
1965
+ "driver"
1966
+ ],
1967
+ "surfaces": [
1968
+ "cockpit",
1969
+ "keybind"
1970
+ ]
1971
+ },
1972
+ {
1973
+ "id": "helix.porsche_993.indicator_right",
1974
+ "call": "indicatorRight",
1975
+ "kind": "run",
1976
+ "label": "Indicate right",
1977
+ "access": [
1978
+ "driver"
1979
+ ],
1980
+ "surfaces": [
1981
+ "cockpit",
1982
+ "keybind"
1983
+ ]
1984
+ },
1985
+ {
1986
+ "id": "helix.porsche_993.trunk",
1987
+ "call": "trunk",
1988
+ "kind": "run",
1989
+ "label": "Engine lid",
1990
+ "access": [
1991
+ "driver"
1992
+ ],
1993
+ "surfaces": [
1994
+ "cockpit",
1995
+ "keybind"
1996
+ ]
1997
+ },
1998
+ {
1999
+ "id": "helix.porsche_993.detach_hood",
2000
+ "call": "detachHood",
2001
+ "kind": "run",
2002
+ "input": {
2003
+ "action": "melee",
2004
+ "behavior": "press"
2005
+ },
2006
+ "label": "Detach front lid",
2007
+ "access": [
2008
+ "driver",
2009
+ "nearby"
2010
+ ],
2011
+ "surfaces": [
2012
+ "nearby",
2013
+ "cockpit",
2014
+ "keybind"
2015
+ ]
2016
+ }
2017
+ ],
2018
+ "effects": [
2019
+ {
2020
+ "audio": "vehicle.horn",
2021
+ "event": "horn"
2022
+ }
2023
+ ],
2024
+ "channels": [],
2025
+ "detachActions": {
2026
+ "actions": {
2027
+ "detachHood": {
2028
+ "massKg": 9.5,
2029
+ "partId": "hood",
2030
+ "collider": {
2031
+ "shape": "box",
2032
+ "halfExtents": [
2033
+ 0.59,
2034
+ 0.04,
2035
+ 0.68
2036
+ ]
2037
+ },
2038
+ "stateBit": 0,
2039
+ "allowedRoles": [
2040
+ "driver",
2041
+ "nearby"
2042
+ ],
2043
+ "settleAfterMs": 2000,
2044
+ "despawnAfterMs": 120000,
2045
+ "localTransform": {
2046
+ "position": [
2047
+ 0,
2048
+ 0.6888,
2049
+ 1.2987
2050
+ ],
2051
+ "rotation": [
2052
+ 0,
2053
+ 0,
2054
+ 0,
2055
+ 1
2056
+ ]
2057
+ }
2058
+ }
2059
+ },
2060
+ "version": 1
2061
+ },
2062
+ "componentBuild": {
2063
+ "vfx": [
2064
+ {
2065
+ "id": "exhaust",
2066
+ "node": "exhaust",
2067
+ "rate": 1,
2068
+ "type": "vfx",
2069
+ "drive": {
2070
+ "source": {
2071
+ "signal": "engineRunning"
2072
+ }
2073
+ },
2074
+ "effect": "vehicle-exhaust",
2075
+ "minFidelity": "medium"
2076
+ }
2077
+ ],
2078
+ "digest": "607b38b594eeccc9",
2079
+ "lights": [
2080
+ {
2081
+ "id": "brake",
2082
+ "beam": false,
2083
+ "type": "light",
2084
+ "drive": {
2085
+ "source": {
2086
+ "signal": "brakelights"
2087
+ }
2088
+ },
2089
+ "channel": "brake"
2090
+ },
2091
+ {
2092
+ "id": "fog",
2093
+ "beam": false,
2094
+ "type": "light",
2095
+ "drive": {
2096
+ "source": {
2097
+ "signal": "fog"
2098
+ }
2099
+ },
2100
+ "channel": "fog"
2101
+ },
2102
+ {
2103
+ "id": "headlights-high",
2104
+ "beam": true,
2105
+ "type": "light",
2106
+ "drive": {
2107
+ "source": {
2108
+ "signal": "highbeam"
2109
+ }
2110
+ },
2111
+ "channel": "highbeam"
2112
+ },
2113
+ {
2114
+ "id": "headlights-low",
2115
+ "beam": true,
2116
+ "type": "light",
2117
+ "drive": {
2118
+ "source": {
2119
+ "signal": "lowbeam"
2120
+ }
2121
+ },
2122
+ "channel": "lowbeam"
2123
+ },
2124
+ {
2125
+ "id": "indicator-left",
2126
+ "beam": false,
2127
+ "type": "light",
2128
+ "drive": {
2129
+ "source": {
2130
+ "signal": "signal_left_on"
2131
+ }
2132
+ },
2133
+ "channel": "indicator-left"
2134
+ },
2135
+ {
2136
+ "id": "indicator-right",
2137
+ "beam": false,
2138
+ "type": "light",
2139
+ "drive": {
2140
+ "source": {
2141
+ "signal": "signal_right_on"
2142
+ }
2143
+ },
2144
+ "channel": "indicator-right"
2145
+ },
2146
+ {
2147
+ "id": "reverse",
2148
+ "beam": false,
2149
+ "type": "light",
2150
+ "drive": {
2151
+ "source": {
2152
+ "signal": "reverse"
2153
+ }
2154
+ },
2155
+ "channel": "reverse"
2156
+ }
2157
+ ],
2158
+ "carried": [],
2159
+ "dropped": [],
2160
+ "signals": [
2161
+ {
2162
+ "id": "lights",
2163
+ "domain": [
2164
+ "off",
2165
+ "low",
2166
+ "high"
2167
+ ],
2168
+ "producer": "net"
2169
+ },
2170
+ {
2171
+ "id": "signal_stalk",
2172
+ "domain": [
2173
+ "off",
2174
+ "left",
2175
+ "right",
2176
+ "hazard"
2177
+ ],
2178
+ "producer": "net"
2179
+ },
2180
+ {
2181
+ "id": "fog",
2182
+ "producer": "net"
2183
+ },
2184
+ {
2185
+ "id": "wipers",
2186
+ "domain": [
2187
+ "off",
2188
+ "int",
2189
+ "slow",
2190
+ "fast"
2191
+ ],
2192
+ "producer": "net"
2193
+ },
2194
+ {
2195
+ "id": "intlight",
2196
+ "producer": "net"
2197
+ },
2198
+ {
2199
+ "id": "ignition",
2200
+ "initial": 1,
2201
+ "producer": "net"
2202
+ },
2203
+ {
2204
+ "id": "doorFL",
2205
+ "smooth": {
2206
+ "up": 0.55,
2207
+ "down": 0.55,
2208
+ "shape": "rate"
2209
+ },
2210
+ "producer": "net"
2211
+ },
2212
+ {
2213
+ "id": "doorFR",
2214
+ "smooth": {
2215
+ "up": 0.55,
2216
+ "down": 0.55,
2217
+ "shape": "rate"
2218
+ },
2219
+ "producer": "net"
2220
+ },
2221
+ {
2222
+ "id": "doorRL",
2223
+ "smooth": {
2224
+ "up": 0.55,
2225
+ "down": 0.55,
2226
+ "shape": "rate"
2227
+ },
2228
+ "producer": "net"
2229
+ },
2230
+ {
2231
+ "id": "doorRR",
2232
+ "smooth": {
2233
+ "up": 0.55,
2234
+ "down": 0.55,
2235
+ "shape": "rate"
2236
+ },
2237
+ "producer": "net"
2238
+ },
2239
+ {
2240
+ "id": "hood",
2241
+ "smooth": {
2242
+ "up": 0.9,
2243
+ "down": 0.9,
2244
+ "shape": "rate"
2245
+ },
2246
+ "producer": "net"
2247
+ },
2248
+ {
2249
+ "id": "trunk",
2250
+ "smooth": {
2251
+ "up": 0.8,
2252
+ "down": 0.8,
2253
+ "shape": "rate"
2254
+ },
2255
+ "producer": "net"
2256
+ },
2257
+ {
2258
+ "id": "fuelcap",
2259
+ "smooth": {
2260
+ "up": 0.35,
2261
+ "down": 0.35,
2262
+ "shape": "rate"
2263
+ },
2264
+ "producer": "net"
2265
+ },
2266
+ {
2267
+ "id": "brake",
2268
+ "producer": "host"
2269
+ },
2270
+ {
2271
+ "id": "handbrake",
2272
+ "producer": "host"
2273
+ },
2274
+ {
2275
+ "id": "gear",
2276
+ "producer": "host"
2277
+ },
2278
+ {
2279
+ "id": "wheelspeed",
2280
+ "producer": "host"
2281
+ },
2282
+ {
2283
+ "id": "rpm",
2284
+ "producer": "host"
2285
+ },
2286
+ {
2287
+ "id": "engineRunning",
2288
+ "producer": "host"
2289
+ },
2290
+ {
2291
+ "id": "blinkphase",
2292
+ "producer": "host"
2293
+ },
2294
+ {
2295
+ "id": "wiperSweep",
2296
+ "producer": "host"
2297
+ },
2298
+ {
2299
+ "id": "lowbeam",
2300
+ "from": {
2301
+ "ops": [
2302
+ {
2303
+ "at": 1,
2304
+ "op": "step"
2305
+ }
2306
+ ],
2307
+ "source": {
2308
+ "signal": "lights"
2309
+ }
2310
+ },
2311
+ "producer": "derived"
2312
+ },
2313
+ {
2314
+ "id": "highbeam",
2315
+ "from": {
2316
+ "ops": [
2317
+ {
2318
+ "at": 2,
2319
+ "op": "step"
2320
+ }
2321
+ ],
2322
+ "source": {
2323
+ "signal": "lights"
2324
+ }
2325
+ },
2326
+ "producer": "derived"
2327
+ },
2328
+ {
2329
+ "id": "lowhighbeam",
2330
+ "from": {
2331
+ "ops": [
2332
+ {
2333
+ "op": "max",
2334
+ "signal": "highbeam"
2335
+ }
2336
+ ],
2337
+ "source": {
2338
+ "signal": "lowbeam"
2339
+ }
2340
+ },
2341
+ "producer": "derived"
2342
+ },
2343
+ {
2344
+ "id": "signal_stalk_on",
2345
+ "from": {
2346
+ "ops": [
2347
+ {
2348
+ "at": 1,
2349
+ "op": "step"
2350
+ }
2351
+ ],
2352
+ "source": {
2353
+ "signal": "signal_stalk"
2354
+ }
2355
+ },
2356
+ "producer": "derived"
2357
+ },
2358
+ {
2359
+ "id": "signal_stalk_lt2",
2360
+ "from": {
2361
+ "ops": [
2362
+ {
2363
+ "at": 2,
2364
+ "op": "step"
2365
+ },
2366
+ {
2367
+ "op": "not"
2368
+ }
2369
+ ],
2370
+ "source": {
2371
+ "signal": "signal_stalk"
2372
+ }
2373
+ },
2374
+ "producer": "derived"
2375
+ },
2376
+ {
2377
+ "id": "hazard_enabled",
2378
+ "from": {
2379
+ "ops": [
2380
+ {
2381
+ "at": 3,
2382
+ "op": "step"
2383
+ }
2384
+ ],
2385
+ "source": {
2386
+ "signal": "signal_stalk"
2387
+ }
2388
+ },
2389
+ "producer": "derived"
2390
+ },
2391
+ {
2392
+ "id": "hazard_off",
2393
+ "from": {
2394
+ "ops": [
2395
+ {
2396
+ "op": "not"
2397
+ }
2398
+ ],
2399
+ "source": {
2400
+ "signal": "hazard_enabled"
2401
+ }
2402
+ },
2403
+ "producer": "derived"
2404
+ },
2405
+ {
2406
+ "id": "signal_left_input",
2407
+ "from": {
2408
+ "ops": [
2409
+ {
2410
+ "op": "times",
2411
+ "signal": "signal_stalk_lt2"
2412
+ }
2413
+ ],
2414
+ "source": {
2415
+ "signal": "signal_stalk_on"
2416
+ }
2417
+ },
2418
+ "producer": "derived"
2419
+ },
2420
+ {
2421
+ "id": "signal_right_input",
2422
+ "from": {
2423
+ "ops": [
2424
+ {
2425
+ "at": 2,
2426
+ "op": "step"
2427
+ },
2428
+ {
2429
+ "op": "times",
2430
+ "signal": "hazard_off"
2431
+ }
2432
+ ],
2433
+ "source": {
2434
+ "signal": "signal_stalk"
2435
+ }
2436
+ },
2437
+ "producer": "derived"
2438
+ },
2439
+ {
2440
+ "id": "blinkpulse",
2441
+ "from": {
2442
+ "ops": [
2443
+ {
2444
+ "at": 0.5,
2445
+ "op": "step"
2446
+ },
2447
+ {
2448
+ "op": "not"
2449
+ },
2450
+ {
2451
+ "op": "times",
2452
+ "signal": "signal_stalk_on"
2453
+ }
2454
+ ],
2455
+ "source": {
2456
+ "signal": "blinkphase"
2457
+ }
2458
+ },
2459
+ "producer": "derived"
2460
+ },
2461
+ {
2462
+ "id": "signal_left_on",
2463
+ "from": {
2464
+ "ops": [
2465
+ {
2466
+ "op": "max",
2467
+ "signal": "hazard_enabled"
2468
+ }
2469
+ ],
2470
+ "source": {
2471
+ "signal": "signal_left_input"
2472
+ }
2473
+ },
2474
+ "producer": "derived"
2475
+ },
2476
+ {
2477
+ "id": "signal_right_on",
2478
+ "from": {
2479
+ "ops": [
2480
+ {
2481
+ "op": "max",
2482
+ "signal": "hazard_enabled"
2483
+ }
2484
+ ],
2485
+ "source": {
2486
+ "signal": "signal_right_input"
2487
+ }
2488
+ },
2489
+ "producer": "derived"
2490
+ },
2491
+ {
2492
+ "id": "signal_L",
2493
+ "from": {
2494
+ "ops": [
2495
+ {
2496
+ "op": "max",
2497
+ "signal": "hazard_enabled"
2498
+ },
2499
+ {
2500
+ "op": "times",
2501
+ "signal": "blinkpulse"
2502
+ }
2503
+ ],
2504
+ "source": {
2505
+ "signal": "signal_left_input"
2506
+ }
2507
+ },
2508
+ "producer": "derived"
2509
+ },
2510
+ {
2511
+ "id": "signal_R",
2512
+ "from": {
2513
+ "ops": [
2514
+ {
2515
+ "op": "max",
2516
+ "signal": "hazard_enabled"
2517
+ },
2518
+ {
2519
+ "op": "times",
2520
+ "signal": "blinkpulse"
2521
+ }
2522
+ ],
2523
+ "source": {
2524
+ "signal": "signal_right_input"
2525
+ }
2526
+ },
2527
+ "producer": "derived"
2528
+ },
2529
+ {
2530
+ "id": "brakelights",
2531
+ "from": {
2532
+ "ops": [
2533
+ {
2534
+ "op": "max",
2535
+ "signal": "handbrake"
2536
+ },
2537
+ {
2538
+ "at": 0.02,
2539
+ "op": "step"
2540
+ }
2541
+ ],
2542
+ "source": {
2543
+ "signal": "brake"
2544
+ }
2545
+ },
2546
+ "producer": "derived"
2547
+ },
2548
+ {
2549
+ "id": "reverse",
2550
+ "from": {
2551
+ "ops": [
2552
+ {
2553
+ "by": -1,
2554
+ "op": "scale"
2555
+ },
2556
+ {
2557
+ "at": 0.5,
2558
+ "op": "step"
2559
+ }
2560
+ ],
2561
+ "source": {
2562
+ "signal": "gear"
2563
+ }
2564
+ },
2565
+ "producer": "derived"
2566
+ },
2567
+ {
2568
+ "id": "parkingbrake",
2569
+ "from": {
2570
+ "ops": [
2571
+ {
2572
+ "at": 0.02,
2573
+ "op": "step"
2574
+ }
2575
+ ],
2576
+ "source": {
2577
+ "signal": "handbrake"
2578
+ }
2579
+ },
2580
+ "producer": "derived"
2581
+ }
2582
+ ],
2583
+ "patterns": [
2584
+ {
2585
+ "hz": 1.5,
2586
+ "id": "indicator-left-pattern",
2587
+ "type": "pattern",
2588
+ "drive": {
2589
+ "source": {
2590
+ "signal": "signal_left_on"
2591
+ }
2592
+ },
2593
+ "target": "indicator-left",
2594
+ "dutyCycle": 0.5
2595
+ },
2596
+ {
2597
+ "hz": 1.5,
2598
+ "id": "indicator-right-pattern",
2599
+ "type": "pattern",
2600
+ "drive": {
2601
+ "source": {
2602
+ "signal": "signal_right_on"
2603
+ }
2604
+ },
2605
+ "target": "indicator-right",
2606
+ "dutyCycle": 0.5
2607
+ }
2608
+ ],
2609
+ "interacts": [
2610
+ {
2611
+ "id": "doorFL",
2612
+ "hit": {
2613
+ "node": "door_lf",
2614
+ "size": 0.35,
2615
+ "shape": "sphere"
2616
+ },
2617
+ "does": {
2618
+ "kind": "toggle"
2619
+ },
2620
+ "type": "interact",
2621
+ "label": "Driver door",
2622
+ "reach": "driver",
2623
+ "writes": "doorFL"
2624
+ },
2625
+ {
2626
+ "id": "doorFR",
2627
+ "hit": {
2628
+ "node": "door_rf",
2629
+ "size": 0.35,
2630
+ "shape": "sphere"
2631
+ },
2632
+ "does": {
2633
+ "kind": "toggle"
2634
+ },
2635
+ "type": "interact",
2636
+ "label": "Passenger door",
2637
+ "reach": "driver",
2638
+ "writes": "doorFR"
2639
+ },
2640
+ {
2641
+ "id": "fog",
2642
+ "hit": {
2643
+ "node": "foglights",
2644
+ "size": 0.35,
2645
+ "shape": "sphere"
2646
+ },
2647
+ "does": {
2648
+ "kind": "toggle"
2649
+ },
2650
+ "type": "interact",
2651
+ "label": "Fog lights",
2652
+ "reach": "driver",
2653
+ "writes": "fog"
2654
+ },
2655
+ {
2656
+ "id": "hazards",
2657
+ "hit": {
2658
+ "node": "bodyshell",
2659
+ "size": 0.35,
2660
+ "shape": "sphere"
2661
+ },
2662
+ "does": {
2663
+ "kind": "value",
2664
+ "value": 3
2665
+ },
2666
+ "type": "interact",
2667
+ "label": "Hazards",
2668
+ "reach": "driver",
2669
+ "writes": "signal_stalk"
2670
+ },
2671
+ {
2672
+ "id": "headlights",
2673
+ "hit": {
2674
+ "node": "headlamps",
2675
+ "size": 0.35,
2676
+ "shape": "sphere"
2677
+ },
2678
+ "does": {
2679
+ "kind": "cycle"
2680
+ },
2681
+ "type": "interact",
2682
+ "label": "Headlights",
2683
+ "reach": "driver",
2684
+ "writes": "lights"
2685
+ },
2686
+ {
2687
+ "id": "hood",
2688
+ "hit": {
2689
+ "node": "bonnet",
2690
+ "size": 0.35,
2691
+ "shape": "sphere"
2692
+ },
2693
+ "does": {
2694
+ "kind": "toggle"
2695
+ },
2696
+ "type": "interact",
2697
+ "label": "Front lid",
2698
+ "reach": "driver",
2699
+ "writes": "hood"
2700
+ },
2701
+ {
2702
+ "id": "ignition",
2703
+ "hit": {
2704
+ "node": "steering",
2705
+ "size": 0.35,
2706
+ "shape": "sphere"
2707
+ },
2708
+ "does": {
2709
+ "kind": "toggle"
2710
+ },
2711
+ "type": "interact",
2712
+ "label": "Ignition",
2713
+ "reach": "driver",
2714
+ "writes": "ignition"
2715
+ },
2716
+ {
2717
+ "id": "indicatorLeft",
2718
+ "hit": {
2719
+ "node": "indicator_l",
2720
+ "size": 0.35,
2721
+ "shape": "sphere"
2722
+ },
2723
+ "does": {
2724
+ "kind": "value",
2725
+ "value": 1
2726
+ },
2727
+ "type": "interact",
2728
+ "label": "Indicate left",
2729
+ "reach": "driver",
2730
+ "writes": "signal_stalk"
2731
+ },
2732
+ {
2733
+ "id": "indicatorRight",
2734
+ "hit": {
2735
+ "node": "indicator_r",
2736
+ "size": 0.35,
2737
+ "shape": "sphere"
2738
+ },
2739
+ "does": {
2740
+ "kind": "value",
2741
+ "value": 2
2742
+ },
2743
+ "type": "interact",
2744
+ "label": "Indicate right",
2745
+ "reach": "driver",
2746
+ "writes": "signal_stalk"
2747
+ },
2748
+ {
2749
+ "id": "trunk",
2750
+ "hit": {
2751
+ "node": "boot",
2752
+ "size": 0.35,
2753
+ "shape": "sphere"
2754
+ },
2755
+ "does": {
2756
+ "kind": "toggle"
2757
+ },
2758
+ "type": "interact",
2759
+ "label": "Engine lid",
2760
+ "reach": "driver",
2761
+ "writes": "trunk"
2762
+ }
2763
+ ],
2764
+ "materials": [
2765
+ {
2766
+ "id": "headlamps/lowbeam/0",
2767
+ "slot": "headlamps",
2768
+ "type": "material",
2769
+ "drive": {
2770
+ "source": {
2771
+ "signal": "lowbeam"
2772
+ }
2773
+ },
2774
+ "range": [
2775
+ 0,
2776
+ 2.5
2777
+ ],
2778
+ "property": "emissive"
2779
+ },
2780
+ {
2781
+ "id": "headlamps/highbeam/0",
2782
+ "slot": "headlamps",
2783
+ "type": "material",
2784
+ "drive": {
2785
+ "source": {
2786
+ "signal": "highbeam"
2787
+ }
2788
+ },
2789
+ "range": [
2790
+ 0,
2791
+ 3
2792
+ ],
2793
+ "property": "emissive"
2794
+ },
2795
+ {
2796
+ "id": "foglights/fog/0",
2797
+ "slot": "foglights",
2798
+ "type": "material",
2799
+ "drive": {
2800
+ "source": {
2801
+ "signal": "fog"
2802
+ }
2803
+ },
2804
+ "range": [
2805
+ 0,
2806
+ 2
2807
+ ],
2808
+ "property": "emissive"
2809
+ },
2810
+ {
2811
+ "id": "taillamps/lowhighbeam/0",
2812
+ "slot": "taillamps",
2813
+ "type": "material",
2814
+ "drive": {
2815
+ "source": {
2816
+ "signal": "lowhighbeam"
2817
+ }
2818
+ },
2819
+ "range": [
2820
+ 0,
2821
+ 1
2822
+ ],
2823
+ "property": "emissive"
2824
+ },
2825
+ {
2826
+ "id": "taillamps/brakelights/0",
2827
+ "slot": "taillamps",
2828
+ "type": "material",
2829
+ "drive": {
2830
+ "source": {
2831
+ "signal": "brakelights"
2832
+ }
2833
+ },
2834
+ "range": [
2835
+ 0,
2836
+ 2.4
2837
+ ],
2838
+ "property": "emissive"
2839
+ },
2840
+ {
2841
+ "id": "chmsl/brakelights/0",
2842
+ "slot": "chmsl",
2843
+ "type": "material",
2844
+ "drive": {
2845
+ "source": {
2846
+ "signal": "brakelights"
2847
+ }
2848
+ },
2849
+ "range": [
2850
+ 0,
2851
+ 2.4
2852
+ ],
2853
+ "property": "emissive"
2854
+ },
2855
+ {
2856
+ "id": "reverselights/reverse/0",
2857
+ "slot": "reverselights",
2858
+ "type": "material",
2859
+ "drive": {
2860
+ "source": {
2861
+ "signal": "reverse"
2862
+ }
2863
+ },
2864
+ "range": [
2865
+ 0,
2866
+ 2.5
2867
+ ],
2868
+ "property": "emissive"
2869
+ },
2870
+ {
2871
+ "id": "indicator_l/signal_L/0",
2872
+ "slot": "indicator_l",
2873
+ "type": "material",
2874
+ "drive": {
2875
+ "source": {
2876
+ "signal": "signal_L"
2877
+ }
2878
+ },
2879
+ "range": [
2880
+ 0,
2881
+ 3
2882
+ ],
2883
+ "property": "emissive"
2884
+ },
2885
+ {
2886
+ "id": "indicator_r/signal_R/0",
2887
+ "slot": "indicator_r",
2888
+ "type": "material",
2889
+ "drive": {
2890
+ "source": {
2891
+ "signal": "signal_R"
2892
+ }
2893
+ },
2894
+ "range": [
2895
+ 0,
2896
+ 3
2897
+ ],
2898
+ "property": "emissive"
2899
+ },
2900
+ {
2901
+ "id": "numberplate/lowhighbeam/0",
2902
+ "slot": "numberplate",
2903
+ "type": "material",
2904
+ "drive": {
2905
+ "source": {
2906
+ "signal": "lowhighbeam"
2907
+ }
2908
+ },
2909
+ "range": [
2910
+ 0,
2911
+ 0.45
2912
+ ],
2913
+ "property": "emissive"
2914
+ }
2915
+ ],
2916
+ "attachments": [],
2917
+ "unsupported": [],
2918
+ "articulators": [
2919
+ {
2920
+ "id": "doorFL/door_lf/0",
2921
+ "axis": [
2922
+ 0,
2923
+ 1,
2924
+ 0
2925
+ ],
2926
+ "node": "door_lf",
2927
+ "type": "articulator",
2928
+ "drive": {
2929
+ "source": {
2930
+ "signal": "doorFL"
2931
+ }
2932
+ },
2933
+ "pivot": [
2934
+ 0.8657,
2935
+ 0.77,
2936
+ 0.6595
2937
+ ],
2938
+ "motion": "hinge",
2939
+ "openRad": -1.0821041362364843,
2940
+ "physical": {
2941
+ "panel": {
2942
+ "kind": "door",
2943
+ "side": "left",
2944
+ "latchInteraction": "doorFL"
2945
+ },
2946
+ "tiers": [
2947
+ "high",
2948
+ "ultra"
2949
+ ]
2950
+ },
2951
+ "closedRad": 0,
2952
+ "durationS": 0.55
2953
+ },
2954
+ {
2955
+ "id": "doorFL/doorglass_lf/1",
2956
+ "axis": [
2957
+ 0,
2958
+ 1,
2959
+ 0
2960
+ ],
2961
+ "node": "doorglass_lf",
2962
+ "type": "articulator",
2963
+ "drive": {
2964
+ "source": {
2965
+ "signal": "doorFL"
2966
+ }
2967
+ },
2968
+ "pivot": [
2969
+ 0.8657,
2970
+ 0.77,
2971
+ 0.6595
2972
+ ],
2973
+ "motion": "hinge",
2974
+ "openRad": -1.0821041362364843,
2975
+ "closedRad": 0,
2976
+ "durationS": 0.55
2977
+ },
2978
+ {
2979
+ "id": "doorFR/door_rf/0",
2980
+ "axis": [
2981
+ 0,
2982
+ 1,
2983
+ 0
2984
+ ],
2985
+ "node": "door_rf",
2986
+ "type": "articulator",
2987
+ "drive": {
2988
+ "source": {
2989
+ "signal": "doorFR"
2990
+ }
2991
+ },
2992
+ "pivot": [
2993
+ -0.8657,
2994
+ 0.77,
2995
+ 0.6595
2996
+ ],
2997
+ "motion": "hinge",
2998
+ "openRad": 1.0821041362364843,
2999
+ "physical": {
3000
+ "panel": {
3001
+ "kind": "door",
3002
+ "side": "right",
3003
+ "latchInteraction": "doorFR"
3004
+ },
3005
+ "tiers": [
3006
+ "high",
3007
+ "ultra"
3008
+ ]
3009
+ },
3010
+ "closedRad": 0,
3011
+ "durationS": 0.55
3012
+ },
3013
+ {
3014
+ "id": "doorFR/doorglass_rf/1",
3015
+ "axis": [
3016
+ 0,
3017
+ 1,
3018
+ 0
3019
+ ],
3020
+ "node": "doorglass_rf",
3021
+ "type": "articulator",
3022
+ "drive": {
3023
+ "source": {
3024
+ "signal": "doorFR"
3025
+ }
3026
+ },
3027
+ "pivot": [
3028
+ -0.8657,
3029
+ 0.77,
3030
+ 0.6595
3031
+ ],
3032
+ "motion": "hinge",
3033
+ "openRad": 1.0821041362364843,
3034
+ "closedRad": 0,
3035
+ "durationS": 0.55
3036
+ },
3037
+ {
3038
+ "id": "hood/bonnet/0",
3039
+ "axis": [
3040
+ 1,
3041
+ 0,
3042
+ 0
3043
+ ],
3044
+ "node": "bonnet",
3045
+ "type": "articulator",
3046
+ "drive": {
3047
+ "source": {
3048
+ "signal": "hood"
3049
+ }
3050
+ },
3051
+ "pivot": [
3052
+ 0,
3053
+ 0.8854,
3054
+ 0.6429
3055
+ ],
3056
+ "motion": "hinge",
3057
+ "openRad": -0.9599310885968813,
3058
+ "physical": {
3059
+ "panel": {
3060
+ "kind": "hood",
3061
+ "latchInteraction": "hood"
3062
+ },
3063
+ "tiers": [
3064
+ "high",
3065
+ "ultra"
3066
+ ]
3067
+ },
3068
+ "closedRad": 0,
3069
+ "durationS": 0.9
3070
+ },
3071
+ {
3072
+ "id": "trunk/boot/0",
3073
+ "axis": [
3074
+ 1,
3075
+ 0,
3076
+ 0
3077
+ ],
3078
+ "node": "boot",
3079
+ "type": "articulator",
3080
+ "drive": {
3081
+ "source": {
3082
+ "signal": "trunk"
3083
+ }
3084
+ },
3085
+ "pivot": [
3086
+ 0,
3087
+ 0.9464,
3088
+ -1.3148
3089
+ ],
3090
+ "motion": "hinge",
3091
+ "openRad": 0.8726646259971648,
3092
+ "physical": {
3093
+ "panel": {
3094
+ "kind": "trunk",
3095
+ "latchInteraction": "trunk"
3096
+ },
3097
+ "tiers": [
3098
+ "high",
3099
+ "ultra"
3100
+ ]
3101
+ },
3102
+ "closedRad": 0,
3103
+ "durationS": 0.8
3104
+ }
3105
+ ]
3106
+ },
3107
+ "componentActions": {
3108
+ "actions": {
3109
+ "fog": {
3110
+ "mask": 16,
3111
+ "operation": "toggle"
3112
+ },
3113
+ "hood": {
3114
+ "mask": 8192,
3115
+ "operation": "toggle"
3116
+ },
3117
+ "trunk": {
3118
+ "mask": 16384,
3119
+ "operation": "toggle"
3120
+ },
3121
+ "doorFL": {
3122
+ "mask": 512,
3123
+ "operation": "toggle"
3124
+ },
3125
+ "doorFR": {
3126
+ "mask": 1024,
3127
+ "operation": "toggle"
3128
+ },
3129
+ "hazards": {
3130
+ "mask": 12,
3131
+ "operation": "replace",
3132
+ "allowedTargets": [
3133
+ 0,
3134
+ 12
3135
+ ]
3136
+ },
3137
+ "ignition": {
3138
+ "mask": 256,
3139
+ "operation": "toggle"
3140
+ },
3141
+ "headlights": {
3142
+ "mask": 3,
3143
+ "operation": "replace",
3144
+ "allowedTargets": [
3145
+ 0,
3146
+ 1,
3147
+ 2
3148
+ ]
3149
+ },
3150
+ "indicatorLeft": {
3151
+ "mask": 12,
3152
+ "operation": "replace",
3153
+ "allowedTargets": [
3154
+ 0,
3155
+ 4
3156
+ ]
3157
+ },
3158
+ "indicatorRight": {
3159
+ "mask": 12,
3160
+ "operation": "replace",
3161
+ "allowedTargets": [
3162
+ 0,
3163
+ 8
3164
+ ]
3165
+ }
3166
+ },
3167
+ "version": 1,
3168
+ "initialBits": 256
3169
+ }
3170
+ },
3171
+ "provenance": {
3172
+ "note": "REWRITE: your source chain: where the mesh came from, how it was converted, and what the physics are calibrated to.",
3173
+ "distributable": true
3174
+ },
3175
+ "simulation": {
3176
+ "land": {
3177
+ "abs": {
3178
+ "minSpeed": 2.5,
3179
+ "applyRate": 5,
3180
+ "targetSlip": 0.12,
3181
+ "releaseRate": 12
3182
+ },
3183
+ "version": 1,
3184
+ "driveline": {
3185
+ "rear": {
3186
+ "type": "lsd",
3187
+ "friction": 2.5,
3188
+ "gearRatio": 3.444,
3189
+ "lockTorque": 0,
3190
+ "lsdPreload": 80,
3191
+ "lsdLockCoef": 0.25,
3192
+ "torqueSplit": 0.5,
3193
+ "viscousCoef": 0,
3194
+ "viscousTorque": 0,
3195
+ "lsdRevLockCoef": 0.4,
3196
+ "dynamicFriction": 0.0011
3197
+ },
3198
+ "clutch": {
3199
+ "inertia": 0.11,
3200
+ "capacity": 560,
3201
+ "freePlay": 0.2,
3202
+ "launchStartRpm": 2000,
3203
+ "launchTargetRpm": 2500
3204
+ },
3205
+ "engine": {
3206
+ "idleRpm": 800,
3207
+ "inertia": 0.13,
3208
+ "friction": 12,
3209
+ "limiterRpm": 6800,
3210
+ "torqueCurve": {
3211
+ "points": [
3212
+ [
3213
+ 800,
3214
+ 215
3215
+ ],
3216
+ [
3217
+ 1500,
3218
+ 255
3219
+ ],
3220
+ [
3221
+ 2000,
3222
+ 278
3223
+ ],
3224
+ [
3225
+ 2500,
3226
+ 293
3227
+ ],
3228
+ [
3229
+ 3000,
3230
+ 305
3231
+ ],
3232
+ [
3233
+ 3500,
3234
+ 314
3235
+ ],
3236
+ [
3237
+ 4000,
3238
+ 321
3239
+ ],
3240
+ [
3241
+ 4500,
3242
+ 327
3243
+ ],
3244
+ [
3245
+ 5000,
3246
+ 330
3247
+ ],
3248
+ [
3249
+ 5500,
3250
+ 327
3251
+ ],
3252
+ [
3253
+ 6000,
3254
+ 316
3255
+ ],
3256
+ [
3257
+ 6100,
3258
+ 313
3259
+ ],
3260
+ [
3261
+ 6500,
3262
+ 296
3263
+ ],
3264
+ [
3265
+ 6800,
3266
+ 278
3267
+ ]
3268
+ ]
3269
+ },
3270
+ "burnEfficiency": {
3271
+ "points": [
3272
+ [
3273
+ 0,
3274
+ 0.12
3275
+ ],
3276
+ [
3277
+ 0.05,
3278
+ 0.27
3279
+ ],
3280
+ [
3281
+ 0.4,
3282
+ 0.5
3283
+ ],
3284
+ [
3285
+ 0.7,
3286
+ 0.47
3287
+ ],
3288
+ [
3289
+ 1,
3290
+ 0.34
3291
+ ]
3292
+ ]
3293
+ },
3294
+ "revLimiterType": "soft",
3295
+ "boostTorqueCoef": 0,
3296
+ "dynamicFriction": 0.024,
3297
+ "engineBrakeTorque": 42,
3298
+ "drivetrainEfficiency": 0.91
3299
+ },
3300
+ "gearbox": {
3301
+ "auto": {
3302
+ "upRpm": 6600,
3303
+ "downRpm": 2800,
3304
+ "enabled": true
3305
+ },
3306
+ "kind": "manual",
3307
+ "ratios": [
3308
+ 3.818,
3309
+ 2.15,
3310
+ 1.56,
3311
+ 1.242,
3312
+ 1.027,
3313
+ 0.821
3314
+ ],
3315
+ "inertia": 0.08,
3316
+ "shiftDelay": 0.25,
3317
+ "reverseRatio": -3.545
3318
+ },
3319
+ "displacementM3": 0.0036
3320
+ },
3321
+ "tyreByAxle": [
3322
+ {
3323
+ "muLut": {
3324
+ "fz": [
3325
+ 100.00000000000004,
3326
+ 129.75767137270591,
3327
+ 168.37053280067153,
3328
+ 218.4736826399693,
3329
+ 283.48636315581973,
3330
+ 367.84530349016404,
3331
+ 477.3075000627,
3332
+ 619.3430973686361,
3333
+ 803.6451809531326,
3334
+ 1042.7912729037541,
3335
+ 1353.1016729977096,
3336
+ 1755.753222186953,
3337
+ 2278.2244961610427,
3338
+ 2956.17105486113,
3339
+ 3835.8587225817573,
3340
+ 4977.3209555689145,
3341
+ 6458.455768691941,
3342
+ 8380.341812090845,
3343
+ 10874.136388442294,
3344
+ 14110.02615953479,
3345
+ 18308.841374691998,
3346
+ 23757.12622312287,
3347
+ 30826.693772198723,
3348
+ 40000.000000000044
3349
+ ],
3350
+ "mu": [
3351
+ 1.69796,
3352
+ 1.627838,
3353
+ 1.560612,
3354
+ 1.496163,
3355
+ 1.434375,
3356
+ 1.375138,
3357
+ 1.318348,
3358
+ 1.263903,
3359
+ 1.211707,
3360
+ 1.161666,
3361
+ 1.113692,
3362
+ 1.067699,
3363
+ 1.023606,
3364
+ 0.981333,
3365
+ 0.940806,
3366
+ 0.901953,
3367
+ 0.864704,
3368
+ 0.828994,
3369
+ 0.794759,
3370
+ 0.761937,
3371
+ 0.730471,
3372
+ 0.700304,
3373
+ 0.671383,
3374
+ 0.643656
3375
+ ],
3376
+ "slideRatio": 0.85
3377
+ },
3378
+ "sFall": 0.3,
3379
+ "cxMult": 1.07,
3380
+ "radius": 0.315,
3381
+ "sigmaX": 0.046728,
3382
+ "sigmaY": 0.07788,
3383
+ "dxOverDy": 1.0333333333333334,
3384
+ "camberGain": 0.148,
3385
+ "calibration": "ac-twin",
3386
+ "alphaPeakRad": 0.14870205226991687,
3387
+ "angularInertia": 1.501136,
3388
+ "loadSensitivity": {
3389
+ "noLoadCoef": 1.2,
3390
+ "frictionCoef": 1,
3391
+ "fullLoadCoef": 1.2,
3392
+ "slidingFrictionCoef": 0.85,
3393
+ "loadSensitivitySlope": 0
3394
+ },
3395
+ "rollingResistance": 0.013
3396
+ },
3397
+ {
3398
+ "muLut": {
3399
+ "fz": [
3400
+ 100.00000000000004,
3401
+ 129.75767137270591,
3402
+ 168.37053280067153,
3403
+ 218.4736826399693,
3404
+ 283.48636315581973,
3405
+ 367.84530349016404,
3406
+ 477.3075000627,
3407
+ 619.3430973686361,
3408
+ 803.6451809531326,
3409
+ 1042.7912729037541,
3410
+ 1353.1016729977096,
3411
+ 1755.753222186953,
3412
+ 2278.2244961610427,
3413
+ 2956.17105486113,
3414
+ 3835.8587225817573,
3415
+ 4977.3209555689145,
3416
+ 6458.455768691941,
3417
+ 8380.341812090845,
3418
+ 10874.136388442294,
3419
+ 14110.02615953479,
3420
+ 18308.841374691998,
3421
+ 23757.12622312287,
3422
+ 30826.693772198723,
3423
+ 40000.000000000044
3424
+ ],
3425
+ "mu": [
3426
+ 1.896409,
3427
+ 1.827017,
3428
+ 1.760165,
3429
+ 1.695758,
3430
+ 1.633709,
3431
+ 1.57393,
3432
+ 1.516338,
3433
+ 1.460853,
3434
+ 1.407399,
3435
+ 1.355901,
3436
+ 1.306287,
3437
+ 1.258488,
3438
+ 1.212439,
3439
+ 1.168075,
3440
+ 1.125333,
3441
+ 1.084156,
3442
+ 1.044486,
3443
+ 1.006267,
3444
+ 0.969447,
3445
+ 0.933973,
3446
+ 0.899798,
3447
+ 0.866874,
3448
+ 0.835154,
3449
+ 0.804595
3450
+ ],
3451
+ "slideRatio": 0.85
3452
+ },
3453
+ "sFall": 0.3,
3454
+ "cxMult": 1.07,
3455
+ "radius": 0.315,
3456
+ "sigmaX": 0.048258,
3457
+ "sigmaY": 0.08043,
3458
+ "dxOverDy": 1.0333333333333334,
3459
+ "camberGain": 0.167,
3460
+ "calibration": "ac-twin",
3461
+ "alphaPeakRad": 0.14049900478554353,
3462
+ "angularInertia": 1.425306,
3463
+ "loadSensitivity": {
3464
+ "noLoadCoef": 1.2,
3465
+ "frictionCoef": 1,
3466
+ "fullLoadCoef": 1.2,
3467
+ "slidingFrictionCoef": 0.85,
3468
+ "loadSensitivitySlope": 0
3469
+ },
3470
+ "rollingResistance": 0.013
3471
+ }
3472
+ ]
3473
+ },
3474
+ "format": 1,
3475
+ "fixedStepHz": 60,
3476
+ "qualityInvariant": true
3477
+ },
3478
+ "displayName": "Porsche 911 Carrera (993)",
3479
+ "schemaVersion": "helix.vehicle-package/2",
3480
+ "packageVersion": 2
3481
+ }