SDK-Fragerunde für Entwickler mit Marcel / SDK round of questions with Marcel

Das Forum befindet sich im reduzierten Betrieb. Die Addon- und Supportforen bleiben weiterhin verfügbar.
Bitte beachte, dass OMSI nicht mehr weiterentwickelt wird. Ein Teil der Entwickler widmet sich inzwischen der Entwicklung eines neuen Simulators. Weitere Informationen zum LOTUS-Simulator findest Du hier.
  • Was mir aufgefallen ist, in den Textur Ordner von den MAN NL/NG befindet sich 2 unterschiedliche Außen Textur.
    GN92_1.tga
    GN92_1.tga_Berlin


    Woher weiß Omsi dann, ab wann der Bus beim Start den Berlin Textur nehmen soll?

    Oh, da muss ein Backup durchgerutscht sein. Das ist eine alte Datei aus der Entwicklung und nicht mehr relevant.


    Gibt es die Möglichkeit, das Du mal ein SDK machen könntest wo genau geteigt wird wie man die Animation der Menschen machen muss.

    Das kann ich nicht versprechen...

    :(


    Wie können einachsige Anhänger oder überhaupt Stardeickselanhänger an einfachen PKW's angehangen werden, die dann einfach hinter dem Zugfahrzeug hinterher rollen. Ist dies in Omsi überhaupt möglich, einen Anhänger zu definieren, wie bei den Gelenkbusse ?
    Wieso ist es nicht möglich das man KI Autos Anhänger anhängt, und die sich auch so verhalten und vor allem sich auch die Räder drehen.
    Oder geht das schon, aber wir machen es einfach falsch ?


    Bisher gibt es keine offizielle Variante, wie man das machen muss. Probiere es einfach mal so wie beim Gelenkbus!

    :)


    Warum hüpft der Bus bei niedriger FPS? Wird dann die Physik nicht mehr richtig berechnet, oder was passiert dann?


    Gewissermaßen ja: Wenn die Framerate-Frequenz so niedrig wird wie Wipp-Frequenz der Bus-Federung, wird die Berechnung der Bus-Federung irgendwann so ungenau, dass es zu diesem Effekt kommt.


    ein Kollege von mir hat das Porblehm das er einen Faltenbalg zwar gebaut bekommt und auch in OMSI importiet bekommt, dieser bewegt sich dann aber nicht. Gibt es da einen Trick wie man die Animation in OMSI importieren oder erzeugen kann?

    Ich hoffe, Dir hilft dieser folgende Beitrag Deines "Nach-Redners"?


    Das Gelenk und die dazu gehörigen Bones (Knochen) müssen in ein extra Blender File gepackt werden und von da aus in Omsi exportieren. Sofern du auch die Arbeiten mit dem Weight Paint gemacht hast. Steht aber in den Aktuellen Entwicklungs Thread drin. (ca. ab Seite


    Vielen Dank für deine Mithilfe im Thread!

    :)


    Habt ihr vor, die Fehler in Spandau (Brücke zwischen Stresowplatz und Breite Strasse) zubeheben, dass man nicht mehr unter die Brücke schauen man ?


    Wieder eine Zukunfts-Frage...

    ;)

    Hier bitte nicht.


    PS: Mir ist aufgefallen, das die Regeneffekte auf der Strasse nicht mehr in Spandau und auf anderen Karten, wo es vorher ging, nicht mehr gehen. CFG Datei, sowie Surf ist vorhanden.


    Aber die Option ist bei Dir eingeschaltet...?

  • Eine Frage muss ich gerade noch nachschieben:
    Wird die KI durch die Sichtbarkeit durch den Spieler berechnet? Ich habe regelmäßig den Fall, dass ein KI-Fahrzeug vor mir um die Kurve um einen Berg fährt, also für mich kurz nicht sichtbar ist. Wenn ich dort ankomme, spawnt vor mir ein anderes KI-Fahrzeug (meist mir der unangenehmen Folge, dass ich in die Eisen gehen muss...) Ist es also so, dass die KI nicht Kachelabhängig geladen wird, sondern Sichtbarkeitsabhängig?

  • 1. Siehst du eine Möglichkeit, die Torsionsschwingungen im Antrieb zu skripten, sodass man das im Sound abgreifen kann (das "Muhuhuhu" des Motors)?

    Prinzipiell geht das natürlich. Schnelle Schwingungen können bei niedrigen FPS aber zu Problemen führen (siehe hüpfende Busse!

    ;)

    ).


    2. Viele Busse, vor allem aber der MB O 407, haben vermutlich in der Achse ein "ruckendes" Geräusch, wenn man (beim Schaltwagen) vom Leerlauf in den Lastbetrieb und umgekehrt geht. Wie muss ich das in der Sound.cfg eintragen? Kann man das direkt aus dem Achsscript abgreifen? Und wie kann ich verhindern, dass bei Lenkradnutzern der Sound ungewollt mehrfach abgespielt wird?

    Da müsste man einen Trigger im Script programmieren.


    3. Habt ihr, als ihr Motorsounds aufgenommen habt, die genauen Drehzahlen der einzelnen Files bei der Aufnahme notiert? Oder habt ihr diese durch (zeitintensives) Probieren herausgefunden? Oder gibts noch einen Trick, den ich bisher nicht kenne?

    :-)

    Nein, das ging nicht. Das haben wir abgeschätzt: Bei Voith hört man ja das Pfeifen. Da die Deckelungsdrehzahl bekannt ist, ist auch die Pfeiffrequenz für eine Drehzahl bekannt (Sample der höchsten Drehzahl). Und den Rest kann man dann anhand der Pfeiffrequenz herleiten!

    ;)

    Bei anderen Getrieben (ohne Pfeifen), wie dem O305, muss man es letztlich abschätzen - schlimmstenfalls anhand der hörbaren Zylinderstöße pro Zeiteinheit (geht aber nur bei niedrigen Drehzahlen). Dann muss man aber sehr penibel darauf achten, dass es nachher auch überzeugend wirkt!

    :)


    4. Ist es möglich bei der Türöffnung verschiedene Bewegungen gleichzeitig zu animieren? Konkreter Fall: Eine Außenschwingtür berührt beim Schließen den Türrahmen zuerst mit der Vorderkante und wird dann um den Drehpunkt dieser Kante hinten an den Bus rangezogen - beim Öffnen in umgekehrter Bewegung. Muss man das im Script anlegen oder kann man das mit dem vorhandenen Türscript erreichen?


    Nein, das geht nicht nativ. Da muss man die Berechnung der Drehung der Tür relativ zu den Aufhängungen mittels separater Script-Zeile in eine eigene Variable berechnen und als Animationsgrundlage benutzen.


    5. Übergang von Fahrzeug- zur Mapbau: Wäre es möglich, dass ihr in einem zukünftigen Patch die Fonts durch Umlaute ersetzt? Gerade beim Kennzeichen ist man da momentan sehr eingeschränkt, aber auch das IBIS stößt, wenn ich mich recht erinnere, an seine Grenzen.


    Wie gesagt, ich möchte hier aus Zeitgründen keine Wünsche aufnehmen oder Prognosen abgeben.


    6. Kannst du nochmal genau erklären, inwiefern OMSI die Bäume anders verarbeitet als normale Objekte?


    Pro Kachel und Textur gibt es aus Performance-Gründen nur ein "Gesamt-Mesh". Dadurch reduziert sich der Aufwand, die Bäume zu rendern.


    7. Jeder zusätzliche Groundlayer zieht bei meiner schwachen GraKa die Performance spürbar nach unten. Woran liegt das, wo doch die Texturen selbst kleiner sind als die eines gewöhnlichen Hauses?


    Das liegt an der zusätzlichen Anzahl von Render-Vorgängen (für jedes Layer ein Render-Durchlauf). Die Größe der Textur ist dabei völlig egal.


    8. Auch wenn es mich praktisch nicht tangiert: Warum werden die Stencil-Schatten bei manchen Objekten generiert, bei anderen nicht?


    Einerseits muss das Objekt über die Option "[shadow]" verfügen, andererseits werden aus Performance-Gründen bestimmte Meshs ausgelassen (vor allem sehr komplexe).

  • So, Leute: Ich werde gleich für'n Stündchen oder so AFK gehen. Ich lasse den Thread offen, bin dann aber nicht da. Danach mache ich ihn zu und beantworte alle bis dahin aufgelaufenen Fragen.

  • Was ist eigentlich mit der Frage, diese ist mir nochmal eingefallen, wurde aber bis jetzt nicht beantwortet, wäre nett, wenn ich da noch eine Antwort bekommen könnte.

    Ist es eigentlich möglich zufällig oder zu einer bestimmten Uhrzeit eine Chrono aufzurufen?

  • Zitat

    Bisher gibt es keine offizielle Variante, wie man das machen muss. Probiere es einfach mal so wie beim Gelenkbus!


    Ja das habe ich versucht, aber ich finde das ist keine Lösung wenn man ein Auto als Bus fahren lassen muss.



    ______

  • Wie sieht es aus mit einem Rückgängig machen oder Bereich markieren und alles entfernen - Knopf aus?

  • Wie hier und hier beschrieben, habe ich dieses Problem auch. Gerade wenn man Schienen verlegt ist das wirklich problematisch. Hängt das, wie von mir vermutet, auch mit der Tatsache zusammen, dass OMSI-intern alles Fließkommazahlen sind? Auch mit der "Complete to"-Funktion passiert das immer wieder.


    Edit: Auch im Kreuzungseditor passiert es immer wieder, dass Pfade plötzlich um 0,02° stärker rotiert sind als der vorhergehende. Irgendwann fällt das dann nämlich stärker ins Gewicht.

  • Da noch offen ist, würde ich gerne noch eine Frage loswerden, die sich bisher auch nicht durch rumprobieren beantworten ließ. Ich hoffe, es ist nicht zu spät

    :)


    Es geht um die Variety-Straßen, welche immer noch ein gewisses Geheimnis birgen. Folgende Werte sind verfügbar:


    [patchwork_chain]
    5
    AAAAAABBACAADDAAA
    3111113111113111
    1111111111100011


    Der Großteil ist für mich nachvollziehbar, aber was hat es mit {chain of transitions} und {chain of weight factors} auf sich? Mich würde interessieren, wie man diese Werte verstehen muss, um im Prinzip eine eigene Variety-Straße zu erstellen, die sich nach den eigenen "Schadstellen" auf der Textur richtet.


  • Nein, das geht leider nicht. Aus privatem Interesse: Als Städter bin ich nicht so erfahren darin und kenne tatsächlich nur einen Fall: Den Tidebus von Harlesiel nach Sande. Wenn keiner in Jever aussteigen möchte, dann fährt er auch gar nicht nach Jever rein. In dem Fall sagt man dem Fahrer vorher Bescheid. Wie ist denn ansonsten so die Routine dazu?

    Also in meinem Dorf gibt es 2 Linien, bei der einen ist es so, dass sie bei den Rückfahrten in den Ferien und an Samstagen nur die 2 Haltestellen in der Kreisstadt anfährt und dann nur dort hin fährt wo jemand aussteigen will. Bei der anderen werden nachmittags und abends manche Haltestellen nur zum aussteigen angefahren und bei den Kurzläufern wird in das letzte Dorf nur gefahren, wenn noch jemand im Bus ist.
    Hier habe ich mal die Fahrpläne


    http://www.vgn.de/komfortausku…efa108.roccas.de&direct=1


    http://www.vgn.de/komfortausku…efa108.roccas.de&direct=1


    Die Haltewunschtasten sind übrigens auch eher zur Zierde man wird einfach vom Busfahrer persönlich gefragt.

    :D


    Edit: Die 801.2 gibt's ja auch noch. Auch dort hält der Bus bei manchen Haltestellen nur zum Aussteigen.
    http://www.vgn.de/komfortausku…efa102.roccas.de&direct=1

  • Hi,
    Could you write some details, how the model.cfg should be built up for scripttexture?
    As I know, it is important becouse of the rendering.


    Is it possible to define different ratio for the script texture or it should have no effect?


    Should the D92 (with ticket printer) give the same ticket using "shortcuts" and manual clicks? Now they are different: the tickets are from the Ticketpack, the ticket printer uses only one text.


    Is it possible then, to use several script textures in different scripts too?
    --
    Will there be further SDK rounds? Thanks for the possibility & hope for a yes!

    ;)
  • Wie wird festgelegt, wie glatt eine Straße z.B. bei Schnee oder Regen ist? Mir fällt beim Fahren nur auf, dass manche Straßentypen selbst bei Schnee gar nicht(!) rutschig sind.


    Das geht über die Texturen. Wenn Du mal im Kreuzungs-Ordner nachsiehst, findest Du "neben" den Textur-Dateien cfg-Dateien mit entsprechendem Eintrag:


    3. Wenn man in einem bus mehrere Entwerter einbaut, wie kann man den Sound des Entwerters beeinflussen, damit der hintere Entwerter nicht so laut klingt wie der vordere?


    Das geht leider nicht, weil es nur einen Trigger hierfür gibt.


    4. Frage zu einer einfachen Kasse mit Fahrscheinen (Einträge aus der Busdatei). Wenn man die Kasse via Klickevent ausblenden kann, kann man die Fahrkartenobjekte ebenfalls ausblenden? Oder geht das garnicht, weil nur Objekte aus der Model.cfg ausgeblendet werden können.


    Man kann ja die Blöcke mit dem Kassiertisch mitdrehen lassen - vielleicht hilft Dir das weiter. Schau mal in die passengercabin_EN92.cfg hinein, dort findest Du für die Sale-Points den animparent-Eintrag mit der Bezeichnung "zahltisch". Dieser findet sich in der model_EN92.cfg wieder - und zwar in folgendem Befehl:

    Code
    1. [mesh_ident]
    2. zahltisch


    Dieser versieht das Mesh mit seiner Animation mit einem Ident, den dann die passengercabin-Datei verwendet. Ich habe nie probiert, ob das auch die Fahrscheine unsichtbar schaltet, wenn das zugehörige Mesh unsichtbar geschaltet wird - zur Not lassen sie sich aber auch auf diese Weise mit einem Hilfsmesh in einen Bereich des Busses verschieben/-drehen, wo sie nicht mehr sichtbar sind.


    5. Kann man in Omsi ohne weiteres eine DDR-Zahlbox umsetzen? Also so das die Fahrkunden selbstständig vor der Zahlbox stehen und vielleicht einige handbewegungen machen (oder auch nicht), aber auf jeden fall den Fahrkartenkauf vollständig allein durchführen? Derzeit reagieren ja Fahrkunden beim Fahrkartenkauf auf Aktionen des Spielers, wie Rückgeld geben und Fahrkarten ausgeben. Oder bleibt nur die schlechtere Umsetzung, eine Zahlbox einfach nur als Entwerter zu definieren, womit dann aber die Entwerter wegfallen würden?
    Kurz Gefragt: Gibt es Scripttechnisch eine Möglichkeit, damit sich Fahrkunden ihre Fahrkarten an einer Zahlbox alleine holen?


    Hmmm, einen Trigger gibt es nicht; der Fahrscheindrucker setzt ja die Variable "GivenTicket", um dem Fahrgast den Fahrschein zu geben. Vielleicht könnte man damit experimentieren, diesen Wert ständig zu setzen, damit der Fahrgast sich den Fahrschein "direkt" nehmen kann... aber dann gibts Probleme mit dem Rückgeld... alles schwierig...


    6. In den Scripten eines Busses, wurde ja festgelegt, daß jeder Bus ein Differenzial besitzt. Kann man im Script dieses so erweitern, daß man mit einen Klickevent (Schalter) eine Sperre einsetzen kann? Omsi regelt ja selbstständig, daß das Rad mit der besseren Haftung den Antrieb bekommt. Wo kann man diese Funktion kurzzeitig mit einem Schalter deaktivieren, so daß beide Antriebsräder die Achsrotation ausführen?


    Leider ist das komplett hartkodiert und lässt sich scriptseitig nicht beeinflussen.


    Wird die KI durch die Sichtbarkeit durch den Spieler berechnet? Ich habe regelmäßig den Fall, dass ein KI-Fahrzeug vor mir um die Kurve um einen Berg fährt, also für mich kurz nicht sichtbar ist. Wenn ich dort ankomme, spawnt vor mir ein anderes KI-Fahrzeug (meist mir der unangenehmen Folge, dass ich in die Eisen gehen muss...) Ist es also so, dass die KI nicht Kachelabhängig geladen wird, sondern Sichtbarkeitsabhängig?

    OMSI kann gar nicht ermitteln, ob sich Objekte gegenseitig verdecken - allenfalls, ob Objekte im Sichtfeld sind (also nicht hinter einem). Aber bei der KI läuft eigentlich alles ohnehin über die Kachel-Sichtbarkeiten...

    Also wird dann durch das Objekt, das nicht angezeigt wird, trotzdem RAM verbraucht?


    Ja, definitiv. Nur der Render-Aufwand verringert sich.


    Ist es eigentlich möglich zufällig oder zu einer bestimmten Uhrzeit eine Chrono aufzurufen?


    Nein, leider nicht.


    Ja das habe ich versucht, aber ich finde das ist keine Lösung wenn man ein Auto als Bus fahren lassen muss.


    Du kannst auch Busse "als Auto", also ohne Fahrplan fahren lassen. Es gibt da keinen Unterschied zwischen den Fahrzeugtypen!


    Gibt es eine genaue Erklärung zu den "Signal Routes", welche im Editor eingestellt werden können?


    Es handelt sich hierbei um die Fahrstraßen für den KI-Schienenverkehr, mit dem die Signale gesteuert werden.


    Wie sieht es aus mit einem Rückgängig machen oder Bereich markieren und alles entfernen - Knopf aus?


    Frage an die Zukunft... Nicht hier, bitte!


    Wie hier und hier beschrieben, habe ich dieses Problem auch. Gerade wenn man Schienen verlegt ist das wirklich problematisch. Hängt das, wie von mir vermutet, auch mit der Tatsache zusammen, dass OMSI-intern alles Fließkommazahlen sind? Auch mit der "Complete to"-Funktion passiert das immer wieder.

    Das hängt vermutlich mit der Tatsache zusammen, dass die Karte Weltkoordinaten verwendet, kann das sein? Zur Sicherheit sollte man beim "Snap" mit der Kamera möglichst dicht am Platzierungspunkt sein, ansonsten kommt es u.U. zu Rundungsfehlern mit diesen Folgen.


    Ich erläutere das mal am Beispiel der Test-Spline str_2spur_9m_patchworktest.sli mit der Textur str_asphdrk_bad.bmp und dem folgenden Eintrag:


    Code
    1. [patchwork_chain]
    2. 5
    3. WRRBRBWYWWBBYYRRW
    4. 1111111191919191
    5. 1111111111111111


    Also die Parameter von oben bis unten:
    - Länge eines Segmentes
    - Chain of transitions: Das ist ein bisschen wie Domino - es dürfen nur Segmente aneinander gelegt werden, die auch passen. Es kann ja sein, dass mal eine Naht in der Mitte ist oder rechts Kopfsteinpflaster durchscheint. Diese Textur hat 16 Teile. Damit mehr Variation möglich ist, gibt es vier Varianten von Übergängen von einem Segment auf das nächste: Variante weiß (W), rot (R), gelb (Y) und blau (B). Die Buchstaben können beliebig gewählt werden. Die Textur zeigt nun, dass es Segmente gibt, bei denen von einer Farbe auf die andere gewechselt wird, und andere, wo die Farbe gleich bleibt. Die Farben dienen nur der Veranschaulichung - im Normalfall sind die Übergänge auf andere weise charakterisiert - im Beispiel gibt es im roten Übergang eine Bitumen-Naht auf der linken Seite, beim blauen Übergang zwei weit auseinanderliegende und beim gelben Übergang zwei nahe beieinanderliegende. Beim weißen Übergang gibts gar keine Nähte.


    Der Parameter funktioniert nun so: Das erste Segment beginnt mit weiß (W), zwischen erstem und zweitem Segment ist rot (R), zwischen zweitem und dritten nochmal rot (R), dann blau, rot, blau, weiß, gelb.... und weil es mehr Übergänge als Segmente gibt, gibt es auch einen Buchstaben mehr, also insgesamt 17.


    - Chain of weight factors: Das ist wiederum eine Reihe von Ziffern von 1 bis 9, welche die Häufigkeit der Segmente angibt. Eine 2 für ein Segment bedeutet, dass es doppelt so oft verwendet wird wie ein Segment mit einer 1.


    - Invertable: "1" gibt an, dass das betreffende Segment entlang der Spline gespiegelt verwendet werden darf. Falls es z.B. Beschriftungen gibt, ist dies natürlich nicht erwünscht. Andernfalls kann durch Spiegeln eine größere Variation erzielt werden.


    Also in meinem Dorf gibt es 2 Linien, bei der einen ist es so, dass sie bei den Rückfahrten in den Ferien und an Samstagen nur die 2 Haltestellen in der Kreisstadt anfährt und dann nur dort hin fährt wo jemand aussteigen will. Bei der anderen werden nachmittags und abends manche Haltestellen nur zum aussteigen angefahren und bei den Kurzläufern wird in das letzte Dorf nur gefahren, wenn noch jemand im Bus ist.

    Danke schön für die Erläuterung!

    :)


    Could you write some details, how the model.cfg should be built up for scripttexture?
    As I know, it is important becouse of the rendering.


    Due to the fact that I've described it already in german, I will do that short here: You have to add a [scripttexture] entry (with x and y size of the texture) like you have to add [texttexture] entries at the top of the file. At the point where you would like to use the texture, please use [useScriptTexture] (like you have to do with [useTextTexture]).

    Is it possible to define different ratio for the script texture or it should have no effect?


    The script texture ratio will be defined in the [scripttexture] entry. The script has to work with this ratio, it can not be changed dynamically.


    Should the D92 (with ticket printer) give the same ticket using "shortcuts" and manual clicks? Now they are different: the tickets are from the Ticketpack, the ticket printer uses only one text.

    It would have been too complecated to solve the problems to "remote control" the ticket printer in such situations. So the driver grabs into the bag and give the passenger a "block" ticket!

    :)
  • Hallo Marcel!


    Planst du eine bessere Verwaltung der Addons?
    Z. B. Webdisk, AM,...
    Und zweitens interessiert mich, woran es liegt, dass manche Objekte sich um ihren Mittelpunkt ideal drehen, andere sich auch mit G weit weg von der Maus befinden. Damit wäre das geklärt. Danke!
    Letzte Frage: kommen von euch noch Objekte, splines oder Manager zum erstellen von Fonts, Objekten,.....?


    Weiterhin viel Erfolg und Spaß bei Weiterentwicklungen

    Einmal editiert, zuletzt von Michael ()