SoundSets von Train Fever konvertieren

  • Ein Anleitung wie man die SoundSets aus Train Fever ändern muss, damit sie in Transport Fever funktionieren.
    Alternativ zum Manuellen Konvertieren kann man bei aktivierter (transportfever.net/index.php/T…546-TF-Mod-Konvertierung/) Mod auch Train Fever Mods ohne Konvertierung öffnen


    Einleitung

    Wie angekündigt funktionieren die SoundSets aus Train Fever in Transport Fever nicht mehr, glücklicherweise ist es aber ohne großen Aufwand möglich sie zu konvertieren (solange man keine der neuen Funktionen nutzen möchte).

    Grundstruktur

    Als erstes muss ganz am Anfang der Datei folgende Zeile hinzugefügt werden:
    local soundeffectsutil = require "soundeffectsutil"

    Die weiteren Änderungen betreffen dann den Rückgabewert der data-Funktion, hier bleibt eigentlich nichts so wie es war, die benötigten Daten sind aber alle auch bereits in den alten SoundSets vorhanden. Die neue Grundstruktur sieht so aus:

    Quellcode

    1. function data()
    2. return {
    3. tracks = {
    4. { name = "Pfad zur Datei", refDist = 25.0 }
    5. },
    6. events = {
    7. horn = { names = { "Pfad zur Datei" }, refDist = 16.0 },
    8. },
    9. updateFn = function (input)
    10. return {
    11. tracks = {
    12. { gain = 1.0, pitch = 1.0 }
    13. },
    14. events = {
    15. { gain = 1.0, pitch = 1.0 }
    16. }
    17. }
    18. end
    19. }
    20. end
    Alles anzeigen

    Der type fällt also komplett weg, und refDist wird an anderen Stellen benötigt.

    tracks

    Enthält alle Dateien die vorher unter params -> tracks -> clip vorhanden waren, also alles was in einer Schleife abgespielt werden soll. Die angesprochene refDist wird jetzt für jede Sounddatei einzeln angegeben.
    Wenn ihr Bremssounds und das Quietschen der Räder nutzen wollt, müsst ihr noch diese Einträge hinzufügen:

    Quellcode

    1. { name = "environment/_no-license_train-wheels-ringing-curve.wav", refDist = 25.0 },
    2. { name = "vehicle/train_electric_modern/_brakes.wav", refDist = 25.0 },

    events

    Hier sind alle Sounds zu finden, die nur einmalig abgespielt werden, also z.B. Horn/Hupe, Türen öffnen/schließen oder das Klacken der Räder. Aus Einträgen wie horn = "vehicle/ICE1/horn.wav" in den alten Dateien wird hier horn = { names = { "vehicle/ICE1/horn.wav" }, refDist = 16.0 }. Bei den names sind auch mehrere Pfadangaben möglich, wie genau das Spiel damit umgeht kann ich aber gerade nicht mit Sicherheit sagen (wird z.B. bei den clacks verwendet).

    updateFn

    Hier wird entschieden welcher track bzw. welches event unter welchen Bedingungen wie laut/schnell abgespielt wird, die Funktion ersetzt also die gainCurve und pitchCurve. Zum Konvertieren könnt ihr als wert einfach die Funktion soundeffectsutil.sampleCurve() verwenden und als Argumente die Nodes aus der alten Datei und input.speed01 übergeben, also z.B:

    Quellcode

    1. -- alt
    2. gainCurve = {
    3. nodes = {
    4. { .0, 0.6},
    5. { .01, 0.12 },
    6. { .05, 0.0 },
    7. }
    8. },
    9. -- neu
    10. gain = soundeffectsutil.sampleCurve({
    11. { .0, 0.6},
    12. { .01, 0.12 },
    13. { .05, 0.0 },
    14. }, input.speed01),
    Alles anzeigen

    Die Einträge hier beziehen sich immer auf die jeweiligen Einträge am Anfang der Datei, es müssen in den Tabellen also auch immer die gleiche Zahl an Einträgen vorhanden sein.

    Bremssounds und Quietschen der Räder:

    Quellcode

    1. soundeffectsutil.squeal(input.speed, input.sideForce, input.maxSideForce),
    2. soundeffectsutil.brake(input.speed, input.brakeDecel, 0.5),

    Für Events wie das Horn können einfach, wie in der Grunstruktur angegeben, feste Werte verwendet werden. Die clacks verwenden im Originalspiel die Funktion soundeffectsutil.clacks(input.speed, input.weight, input.numAxles, axleRefWeight, input.gameSpeedUp), wobei axleRefWeight die Achslast ist und entweder vorher definiert oder direkt als Zahl angegeben werden muss.
    Zusätzlich zur Geschwindigkeit stehen über input jetzt noch mehr Werte zur Verfügung die zur Bestimmung der gain/pitch-Kurven genutzt werden können, z.B. power01 für die abgerufene Leistung.

    Vergleich

    Anhand des SoundSets des ICE 1:

    Quellcode

    1. function data()
    2. return {
    3. type = "GENERIC",
    4. refDist = 16.0,
    5. horn = "vehicle/ICE1/horn.wav",
    6. params = {
    7. tracks = {
    8. {
    9. clip = "vehicle/ICE1/idle.wav",
    10. gainCurve = {
    11. nodes = {
    12. { .0, 0.6},
    13. { .01, 0.12 },
    14. { .05, 0.0 },
    15. }
    16. },
    17. pitchCurve = {
    18. nodes = {
    19. { .0, 2},
    20. { .01, 2},
    21. }
    22. }
    23. },
    24. {
    25. clip = "vehicle/ICE1/drive.wav",
    26. gainCurve = {
    27. nodes = {
    28. { 0.0, 0.0 },
    29. { 0.01, 1.0 },
    30. { 1.0, 2.0 },
    31. }
    32. },
    33. pitchCurve = {
    34. nodes = {
    35. { 0, 1.0 },
    36. { 0.01, 1.0 },
    37. { 1, 1.5},
    38. }
    39. }
    40. },
    41. },
    42. }
    43. }
    44. end
    Alles anzeigen

    Quellcode

    1. local soundeffectsutil = require "soundeffectsutil"
    2. function data()
    3. return {
    4. tracks = {
    5. { name = "vehicle/ICE1/idle.wav", refDist = 25.0 },
    6. { name = "vehicle/ICE1/drive.wav", refDist = 25.0 },
    7. { name = "environment/_no-license_train-wheels-ringing-curve.wav", refDist = 25.0 },
    8. { name = "vehicle/train_electric_modern/_brakes.wav", refDist = 25.0 }
    9. },
    10. events = {
    11. clacks = {
    12. names = {
    13. "vehicle/clack/modern/part_1.wav",
    14. "vehicle/clack/modern/part_2.wav",
    15. "vehicle/clack/modern/part_3.wav",
    16. "vehicle/clack/modern/part_4.wav",
    17. "vehicle/clack/modern/part_5.wav",
    18. "vehicle/clack/modern/part_6.wav",
    19. "vehicle/clack/modern/part_7.wav",
    20. "vehicle/clack/modern/part_8.wav",
    21. "vehicle/clack/modern/part_9.wav",
    22. "vehicle/clack/modern/part_10.wav"
    23. },
    24. refDist = 25.0
    25. },
    26. horn = { names = { "vehicle/ICE1/horn.wav" }, refDist = 16.0 }
    27. },
    28. updateFn = function (input)
    29. local axleRefWeight = 10.0
    30. return {
    31. tracks = {
    32. {
    33. gain = soundeffectsutil.sampleCurve({
    34. { .0, 0.6},
    35. { .01, 0.12 },
    36. { .05, 0.0 },
    37. }, input.speed01),
    38. pitch = soundeffectsutil.sampleCurve({
    39. { .0, 2},
    40. { .01, 2},
    41. }, input.speed01)
    42. },
    43. {
    44. gain = soundeffectsutil.sampleCurve({
    45. { 0.0, 0.0 },
    46. { 0.01, 1.0 },
    47. { 1.0, 2.0 },
    48. }, input.speed01),
    49. pitch = soundeffectsutil.sampleCurve({
    50. { 0, 1.0 },
    51. { 0.01, 1.0 },
    52. { 1, 1.5},
    53. }, input.speed01)
    54. },
    55. soundeffectsutil.squeal(input.speed, input.sideForce, input.maxSideForce),
    56. soundeffectsutil.brake(input.speed, input.brakeDecel, 0.5)
    57. },
    58. events = {
    59. clacks = soundeffectsutil.clacks(input.speed, input.weight, input.numAxles, axleRefWeight, input.gameSpeedUp),
    60. horn = { gain = 1.0, pitch = 1.0 }
    61. }
    62. }
    63. end
    64. }
    65. end
    Alles anzeigen

    3.212 mal gelesen

Kommentare 9

  • Hand -

    3 Fragen! Wohin den ICE-1 Mod schieben, in die Rubrik "MODS" oder im Standard "RES" Ordner einfügen? Sind das die "MDL-Dateien im Vehicle/Train Ordner"? Wenn ja, muss ich z.B. alle MDL-Dateien vom ICE-1 ändern?

    Mit freundlichen Grüßen

    Hand

    • Merk -

      Normalerweise gehören alles Mods in den Mod Ordner, auch die alten aus Train Fever (Res geht oft auch, ist aber nicht zu empfehlen). Die SoundSets befinden sich in res/config/sound_set (innerhalb des Ordners des Mods), in den .mdl Dateien muss nichts geändert werden. Ich empfehle inzwischen allerdings meinen Konverter Mod: transportfever.net/index.php/T…546-TF-Mod-Konvertierung/ Der macht das was hier in dem Eintrag steht automatisch (als ich den Eintrag geschrieben habe war das als Mod noch nicht möglich).

    • Hand -

      @Merk, besten Dank, werde es mal ausprobieren ;)

    • Hand -

      @Merk die Mods (ICE-1 usw.) werden jetzt angezeigt, aber da steht dass die Formate der Mod veraltet sind? Also kann Sie im Gameplay nicht aufrufen. Kann Ich da was dran ändern?

    • Merk -

      Dass die Mods als veraltet angezeigt werden ist normal (und auch richtig ;) ), man kann sie normalerweise aber trotzdem aktivieren und auch im Spiel nutzen.

    • Hand -

      Besten Dank für die schnelle Antwort ;)

  • dampf19 -

    Ist mit Achsmasse der Achsdruck gemeint - oder was genau bedeutet dieser Wert?

    • Merk -

      Ich hätte jetzt gesagt es ist die Achslast, also Gewicht des Fahrzeugs/Anzahl der Achsen (werde das mal im Eintrag ändern), ist natürlich schwierig, wenn man das gleiche Set für mehrere Fahrzeuge verwendet. Da es auch nur bei den clacks vorkommt, gehe ich mal davon aus, dass es nur deren Lautstärke beeinflusst.