Project Universal Car for Orbiter (UCO)

Hi Dan

Is there any chance that multi wheel steering(And more than 4 driving mesh groups) will be introduced in the future?

I am making this soon (Starting this weekend) and although I will start off with the 8x8x8 (4 axle points) I would like to use the 16x16x16 (8 axle points).

Worst case is that make its own dll, but this could get cumbersome.
 
Can you make your breathable planet the same radius ?

the planets will be autogenerated, so, no. It would be kind of weird if every terrestric planet has the same size of earth.

Another solution would be to define a "permanent" cfg with -+90-+180 lon lat but it will say it's a base everywhere and you would have air conditioning and o2+fuel recharging..

not a very optimal solution either... especially the fuel recharching. Would it be possible to implement a solution that looks at the planets config file as I suggested? on second thought, introducing a parameter to the UCO config should do the trick too. Wouldn't have to be in this version, though, since Orbiter Galaxy won't get into its beta state before late spring or even later.
 
Haw.... didn't thougt about that. UMMU simply look the planet radius, it's unique.

Can you make your breathable planet the same radius ?

Another solution would be to define a "permanent" cfg with -+90-+180 lon lat but it will say it's a base everywhere and you would have air conditioning and o2+fuel recharging..

Dan
Couldn't you just get the ATMCONST struct for the planet and read the "O2pp" (partial pressure of oxygen) element? Assuming the planet is correctly configured, you can use that--if the O2pp is below a certain threshold, the atmosphere is considered not breathable.

More complexly, you could have ranges--at Earth-like O2 partial pressures, the UMMU acts normally without a pressure suit...as it gets lower, the UMMU starts to slow down and can't lift as much weight :P
 
I modified yesterday the DGIV hack to avoir pad auto refuel with that idea in mind.. :P

No promise but...

Would be a nice sight, if you can get that. But do you really have to bring Refuel Inc out of business? :rofl:
 
Couldn't you just get the ATMCONST struct for the planet and read the "O2pp" (partial pressure of oxygen) element? Assuming the planet is correctly configured, you can use that--if the O2pp is below a certain threshold, the atmosphere is considered not breathable.

There is no trace of 02 parameter in planet config file so I think this value is void.

Dan
 
Hi Dan
Is there any chance that multi wheel steering(And more than 4 driving mesh groups) will be introduced in the future?

Sorry no, the config file is already 50 lines long, there is light, anims etc etc
The dll have already 6000 C++ lignes and 90% cars have less than 4 axes.
I mean if I do 8x8 what about police light, door animations, gear lever, pneumatic etc etc.. the list of wanted feature is endless. It should stop somewhere to remain "universal". with 8x8 I can redo all the moving code and so on for 16x16. Without differential it would look uggly in anyway.

8x8 and more should be coded specificaly.
 
There is no trace of 02 parameter in planet config file so I think this value is void.

Dan
This sounds like a bug in Orbiter...
 
Last edited:
Ok, will do!! :D

As for the voices, I'd do:

"Analysing... atmosphere ok"
"Analysing... insufficient O2 levels at this location"

What about:

"Analysis in progress... Atmosphere human-compatible"
"Analysis in progress... Zero atmosphere"
"Analysis in progress... Atmosphere TOXIC" (DANGER WILL ROBINSON)
 
For the voice-over about oxygen, I'd make it as simple as possible.
Simplicity is always the best way, and the way I'd say those two lines is below:

(O2 positive) Analyzing atmosphere...*pause*..O2 levels at one hundred percent.
(O2 negative) Analyzing atmosphere...*pause*..O2 levels at zero percent.

Not sure if Orbiter or UCGO can define degrees of breathable air, but if either can you could just modify the percentage value in the cpu voice.
 
For the voice-over about oxygen, I'd make it as simple as possible.
Simplicity is always the best way, and the way I'd say those two lines is below:

(O2 positive) Analyzing atmosphere...*pause*..O2 levels at one hundred percent.
(O2 negative) Analyzing atmosphere...*pause*..O2 levels at zero percent.

Not sure if Orbiter or UCGO can define degrees of breathable air, but if either can you could just modify the percentage value in the cpu voice.

Ehh, I don't think O2 levels in a base would be that high. :P
 
he he...

anyway sound are done yet I choosed:

"Analysing...atmospheric pressure nominal"
"Analysing...warning...low atmospheric pressure "

---------- Post added at 06:59 AM ---------- Previous post was at 02:15 AM ----------

Testing concept (debug only yet, no user interface)

Auto scan of all vessels within 100 meter, if one more than 1 ton found with 90% only fuel aboard it refuel all it's tanks one by one. Will work manually by key or by AI if one waypoint's action set to "refuel closer vessel". Now if an AI cars is defined to do such things on your planned landing pad you just need to wait for the fuel truck.

Don't ask for anim or guy that go open the tank's hatch, it should work for any shape vessel so anim or more complex things are impossible. This explain also the "100 meter" range. Now if you do it manually or plan carefully the AI path it can really look great.

UcgoPreviewtruck3.jpg
 
Last edited:
"refuel closest vessel" ;)

Also I assume one of the axles there is a dummy
 
No both rear wheel work ;)

There is 4 animated part if you preffer:

1-left front wheel (steering)
2-right front wheel (steering)
3-Rear wheels (both on the same axe)
4-2nd rear wheels (if any, same as above)

If you want to put 12 wheels on the "1st rear axe" no problem, they will all turn at the same speed and with the same rotation center.

"closest" noted thanks, that will make one less correction to do ;)

If anyone is intterested this is how look yet one car configuration file (the flatbed truck)
Code:
; === Configuration file for vessel class *Universal Cars & Cargo for Orbiter* (UCGO) Car by Dansteph===
Module = UCGOCars
;
; TIPS:
; To make a new car,Copy this config rename it (eg:"UCGOCarFord.cfg") and 
; change the parameters. Please see SDK doc in "Doc/UniversalCars"


; GENERAL
;-------------------------------------------------------------
ImageBmp = Images\UniversalCars\ucgo_azure.bmp ;image of your car in ScnEditor, delete or change this line and add a bmp image.
SetCameraOffset = -0.959 2.0 6.854    ; Driver's eyes point mesh local coordinate format= xx yy zz

; MESH & ANIMATION
;-------------------------------------------------------------
CarMesheName    = IaFlatBedTruck    ; car's meshe name must be located in "Meshes/UniversalCars" directory
RiFrWheelGrNbr    = 4            ; Right front wheel mesh group number for animation
LeFrWheelGrNbr    = 3            ; Left front wheel mesh group number for animation
RearWheelGrNbr    = 5            ; Rear wheels mesh group number for animation
2ndRearWheelGrNbr= 2            ; 2nd Rear wheels mesh group number for animation if exist
LeftFender    = -1            ; front wheel left fender mesh group (as in lunar rover) set to -1 if none
RightFender    = -1            ; front wheel right fender mesh group (as in lunar rover) set to -1 if none
AxeRightFront     = 1.106 -0.471 4.54     ; Right front wheels axe position, vector, format = xx yy zz
AxeLeftFront    = -1.106 -0.471 4.54     ; Left front wheels axe position, vector, format = xx yy zz
AxeRearWheel    = 0 -0.471 -0.951     ; rear wheels axe position, vector, format = xx yy zz
2ndAxeRearWheel    = 0 -0.471 0.197    ; 2nd rear wheels axe position if any, vector, format = xx yy zz
FrontWheelDiam    = 1.04572        ; Front wheels diameter in meter for rotation factor (vs ground speed)
RearWheelDiam    = 1.04572        ; rear wheels diameter in meter for rotation factor (vs ground speed)
MaxWheelsAngle    = 58.0            ; max angle in degree that can take front weel (adjust visually so it match turn radius)

; CHARACTERISTICS
;-------------------------------------------------------------
MaxSpeed    = 90.0            ; Max Speed in kilometers per hours
EnginePower    = 15.0            ; Engine power, make test to adjust
EngineIsElectric= 0            ; 1 if electric (no gears sound) 0 if normal (with gear sound)
BrakeForce    = 50.0            ; Brake, slowdown force, make test to adjust
LateralGrip    = 40.0            ; lateral grip, make test to adjust, Valid value from 5 to 80
PressurizedCabin= 0            ; Set 1 if cabin is pressurized 0 if not.

; SOUND
;-------------------------------------------------------------
EngineSoundWav    = EngineVan.wav        ; filename of engine sound, must be located in "Sound/UniversalCars" directory
SkiddingSoundWav= skidding.wav        ; filename of skidding sound, must be located in "Sound/UniversalCars" directory
AirSpeedSoundWav= AirSpeed.wav        ; filename of airspeed sound, must be located in "Sound/UniversalCars" directory
blinkerSoundWav    = blinker.wav        ; filename of blinker sound, must be located in "Sound/UniversalCars" directory
hornSoundWav    = horn.wav        ; filename of horn sound, must be located in "Sound/UniversalCars" directory
StarterSoundWav    = starter.wav        ; filename of starter sound, must be located in "Sound/UniversalCars" directory


; LIGHT 
;-------------------------------------------------------------
FronLightPos    = 0.901 0.004 6.1    ; Front light right position, left position is automaticly set from this.
FrontLightScale    = 0.50            ; size of front light, set to zero to disable brake light

BrakeLightPos    = 0.90 0.09 -2.78    ; Brake light right position, left position is automaticly set from this.
BrakeLightScale    = 0.35            ; size of brake light, set to zero to disable brake light

RearBlinkerPos    = 1.05 0.09 -2.78    ; Rear blinker light right position, left position is automaticly set from this.
RearBlinkerScale= 0.35            ; size of rear blinker light, set to zero to disable rear blinker light
FronBlinkerPos    = 1.11 0.004 6.0        ; Front blinker light right position, left position is automaticly set from this.
FronBlinkerScale= 0.20            ; size of front blinker light,set to zero to disable front blinker light

;UNIVERSAL MMU 
;-------------------------------------------------------------
SeatNumber    = 2            ; Number of seat in cars (max 60, but not recommended even for bus)
ExitPosition1    = 0 -2.60        ; Position at wich MMU will be placed when exit (X,Z in meter)
ExitPosition2    = 2.0 -2.60        ; alternate position at wich MMU will be placed when exit (leave empty for defaut)
CrewMeshGrpNbr1    = 0            ; Mesh group number of crew 1, will be visible if crew >0, set to -1 if none
CrewMeshGrpNbr2    = -1            ; Mesh group number of crew 2, will be visible if crew >1, set to -1 if none


:CARGO
;-------------------------------------------------------------
CargoSlotPos = -0.70 0.374 2.50        ; front left pos of first cargo slot X Y Z (see doc)
CargoRowColumnNbr = 2 4            ; number of slot row & column  (max 20 slots, see doc)
CargoSlotInterval = 0.05        ; Interval beetween each slot
CargoReleasePos      = -1.70 -4.00        ; X Z pos at wich cargo will be placed when released (see doooc)
CargoShowInCockpit= 0            ; force cargo to appear also in cockpit view (only external by defaut)
CargoGrappleDist  = 20            ; grapple radius from center of cars. By defaut 15 meters.

Dan
 
Last edited:
About the breathable zones: I can't remember if it has been discussed about before: what if a UMMU is hovering or flying (either has when just passing by a base's roof and being inside the base but then switching the TurboPacks on) over a breathable zone instead of touching ground? It doesn't seem you thought about the breathable zone's height.

Will he die? Nothing happen? Change suit has he leaves the ground (but still inside a base if there is enough space inside it)?
 
It would be nice something adjustable, afterall I dunno.

Crazy man mode: Make the code analyse the highest roof height within the breathable zone's range and use that value as the maximum breathable height.

Realistic thinking mode: how is the GUI of the breathable zone's 'editor'? If it's a window pop up like the Passanger editor of DGIV or a input value pop up as in the MFDs then it shouldn't be very hard to add a second value input field to the "define zone radius" window, is it?.

I'd like also to ask how does the the Breathable Zone handles the curvature of planets.
 
Last edited:
Back
Top