Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: Helpers & AI Revisted

  1. #1
    woodman Guest

    Default Helpers & AI Revisted

    I just reloaded MSTS about about 8 months when it was off my drive so I'd like to see if I have a few things right.

    If I have helpers it is a good idea to make two eng files, one for the road engines and one AI for the helpers?

    When I do this I then have three choices. I can listen to the helpers idle across the line. I can silence the helpers and hear only the road engine. Or, I can point the helpers to the generic sound files and have their sound dependent upon wheel speed. Is this correct?

    Is there any way to tweak the generic sounds, especially diesel?

    Mike Woodill



  2. #2
    Join Date
    Nov 1999
    Location
    .
    Posts
    378

    Default RE: Helpers & AI Revisted

    Mike,
    Don't know much about sounds, but if you want an engine as helper only do this: copy the **.eng file, save it as #**.eng, change the lines wagon and engine to #** and delete the whole cabview line.
    Have the #**.eng file in the same folder as the **.eng file.

    Ted

  3. #3
    woodman Guest

    Default RE: Making AI Helpers

    That pretty much what I do. Except, after stripping out the cab view statement, I rename them AI_xxx and point the sound to the generic diesel sound package. That way I don't have any idling locomotives in the consist. The problem is that their sound is now dependent upon wheel revolutions.

    In fact, it is the generic sound file that I'd like to improve.

  4. #4
    Join Date
    Nov 1999
    Location
    .
    Posts
    378

    Default RE: Making AI Helpers

    Yeah well, As I said, I'm no sound man, so this is out of my hands.
    And I forgot to mention that I change the name of the engine also to #name at the bottom of the .eng file so I can tell them apart.
    Ted

  5. #5
    Join Date
    Nov 1999
    Location
    Bristol, England
    Posts
    273

    Default RE: Making AI Helpers

    The generic steam/diesel/electric .sms files were only ever used by the non-driveable default loco's. These only use the Speed trigger because for the non-player loco Speed is the only variable they will respond to. These generic sms's are so simple that they are best ditched and replaced with something completely new. The basic requirements are these.

    1. For Traffic loco's define under ScalibilityGroup 0.
    2. For Helper loco's define under ScabibilityGroup 1.
    3. Only use Initial and Speed triggers.

    I mainly do steam and some diesel, but then only UK stock. I have converted some of my diesel loco's to play the nearest equiviant to the same as the player ones. To add extra realism I have also created asymmetric Speed_Inc and Speed_Dec relationships so that the loco's sound like they rev-up and criuse to stationary. Here's a typical arrangement: (note this is only a complete ScalibilityGroup not and sms file)

    ScalabiltyGroup( 0
    Activation (
    ExternalCam ()
    PassengerCam ()
    CabCam ()
    Distance (750)
    )
    Deactivation (
    Distance (750)
    )
    Volume (1.0)
    LoadAllWaves ( 1 )
    Streams ( 3
    Stream (
    Priority ( 6 )
    Triggers ( 1
    Initial_Trigger ( StartLoopRelease ( 1 File ( "x_25_power_cruise1.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    )
    FrequencyCurve(
    SpeedControlled
    CurvePoints ( 2
    0 11000
    60 16000
    )
    Granularity ( 50 )
    )
    VolumeCurve(
    SpeedControlled
    CurvePoints ( 4
    0 0.8
    0.01 0.4
    2.00 0.4
    60.0 0.6
    )
    Granularity ( 0.05 )
    )
    )
    Stream (
    Priority ( 6 )
    Triggers ( 14
    Variable_Trigger ( Speed_Inc_Past 0.01 StartLoop ( 1 File ( "x_25_power_cruise2.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Inc_Past 1.00 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Inc_Past 1.00 StartLoop ( 1 File ( "x_25_power_cruise3.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Inc_Past 3.50 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Inc_Past 3.50 StartLoop ( 1 File ( "x_25_power_cruise4.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Inc_Past 6.50 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Inc_Past 6.50 StartLoop ( 1 File ( "x_25_power_cruise5.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Inc_Past 21.0 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Inc_Past 21.0 StartLoop ( 1 File ( "x_25_power_cruise6.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Dec_Past 21.0 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Dec_Past 6.50 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Dec_Past 3.50 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Dec_Past 1.00 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Dec_Past 0.01 ReleaseLoopRelease () )
    )
    FrequencyCurve(
    SpeedControlled
    CurvePoints ( 4
    0.00 9000
    1.00 11000
    6.50 13000
    100 18000
    )
    Granularity ( 50 )
    )
    VolumeCurve(
    SpeedControlled
    CurvePoints ( 4
    0.00 0.0
    1.00 0.8
    21.0 1.0
    100 1.0
    )
    Granularity ( 0.05 )
    )
    )
    Stream (
    Priority ( 6 )
    Triggers ( 15
    Variable_Trigger ( Speed_Inc_Past 0.01 PlayOneShot ( 2
    File ( "x_25_horn1.wav" -1 )
    File ( "x_silence_0-10.wav" -1 )
    SelectionMethod ( RandomSelection ) ) )
    Variable_Trigger ( Speed_Inc_Past 1.50 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Inc_Past 10.5 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Inc_Past 15.5 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Inc_Past 21.0 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Dec_Past 21.0 StartLoop ( 1 File ( "x_25_power_cruise5.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Dec_Past 15.5 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Dec_Past 15.5 StartLoop ( 1 File ( "x_25_power_cruise4.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Dec_Past 10.5 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Dec_Past 10.5 StartLoop ( 1 File ( "x_25_power_cruise3.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Dec_Past 1.50 ReleaseLoopRelease () )
    Variable_Trigger ( Speed_Dec_Past 1.50 StartLoop ( 1 File ( "x_25_power_cruise2.wav" -1 ) SelectionMethod ( SequentialSelection ) ) )
    Variable_Trigger ( Speed_Dec_Past 0.01 ReleaseLoopRelease () )
    )
    FrequencyCurve(
    SpeedControlled
    CurvePoints ( 4
    0.00 10000
    10.5 11000
    21.0 13000
    100 18000
    )
    Granularity ( 50 )
    )
    VolumeCurve(
    SpeedControlled
    CurvePoints ( 5
    0.00 0.0
    0.05 0.4
    10.5 0.7
    21.0 1.0
    100 1.0
    )
    Granularity ( 0.05 )
    )
    )
    )
    )

    This is for my Class 25 loco's, hence the ref to _25_ everywhere. This could be easily changed back to d9 or gp.

    Another little 'realism' mod is with the horn. As the loco pulls away from stationary it will play either a horn or a silence .wav file. In sim this gives a random effect for the sounding of the horn.

    Hope this gets you started.

    Stuart



  6. #6
    Join Date
    Nov 1999
    Location
    .
    Posts
    378

    Default RE: Making AI Helpers

    Stuart,
    This is very good and helpful.
    Thanks a whole lot.
    Ted

  7. #7
    Join Date
    Nov 1999
    Location
    Woodbury, Mn, USA.
    Posts
    336

    Default RE: Making AI Helpers

    This is VERY helpful!

  8. #8

    Default RE: Making AI Helpers

    Stuart - I followed your guidelines here and made a couple SMS's files for some diesel helper locos. All worked as planned, nice sounds, good rev ups and downs. And the horn is nice. Really a much better effect then the default idle sounds.

    I did run into a little problem that I hope you or someone might be able to shed a little light on. As noted above all works great. That is as long as the train with helpers is stopped or moving forwards. But put the train in reverse direction, and the helpers will all start to squeal like pigs when they reach about 5-8 mph in reverse.

    Thanks Don

  9. #9
    Join Date
    Nov 1999
    Location
    Bristol, England
    Posts
    273

    Default RE: Making AI Helpers

    Funny, but I only spotted that same effect quite recently. The problem is to do with the FrequencyCurve. It seems the sms does some funny kind of extrapolation of the defined curve when the Speed values go negative. The solution is to define CurvePoints for -ve speeds as well, ie

    FrequencyCurve(
    SpeedControlled
    CurvePoints ( 7
    -100 18000
    -21.0 13000
    -10.5 11000
    0.00 10000
    10.5 11000
    21.0 13000
    100 18000
    )
    Granularity ( 50 )
    )




  10. #10

    Default RE: Making AI Helpers

    Stuart - Thanks again, worked like a champ.

    Funny extrapolation is not the word for 4 helpers all running in reverse movement, what a racket that was.

    All is well again thanks to you and your kindness to share with others.

    Don


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •