TRS2019 Kompatibilitätsmodus

  • In TRS19 wurde nun in den Entwickler-Einstellungen im Launcher ein neuer Punkt hinzugefügt.
    Ich möchte hier einmal darauf eingehen, was diese Einstelllungen bewirken und welche Einstellung ich für die Zukunft auf Basis von N3V Games Aussagen über die zukünftige Entwicklung von Trainz empfehle.
    Es dürfte nun allgemein bekannt sein, dass Trainz eine neue Technik bekommen hat, die Inhalte des Spiels dynamisch zur Laufzeit zu verwalten, um der Performance (mit Erfolg!) einen dicken Schub zu verpassen. Trainz lädt und entlädt Objete nun zur Laufzeit. Objekte sind technisch gesehen nun nicht mehr unbedingt global existent. Das bedeutet dass Objekte, die per Script zusammenarbeiten aufpassen müssen, dass Kommunikationen zwischen beiden nicht ins leere verlaufen. N3V Games hat dafür die Script-Funktionen erweitert, um Trainz zB anzuweisen, dass ein Objekt geladen werden soll, wenn ein anderes Objekt dieses gerade benötigt (zB ein Trigger wird ausgelöst und muss eine Aktion an einem entfernten Objekt auslösen). Dies ist natürlich sehr einfach erklärt, dürfte aber so von den meisten Nutzern besser verstanden werden.


    Und genau das lässt sich mit der Einstellung "Kompatibilitätmodus" im "Entwickler"-Tab der Einstellungen beeinflussen.


    (! Ich habe die Informationen nicht von N3V Games erhalten, sondern basieren sie auf eigenen Tests und analysen, sobald da etwas seitens N3V Games kommt, werde ich diesen Artikel ggf. anpassen!)

    In besagter Einstellung stehen vier Möglichkeiten zur Verfügung:


    • Spielkompatibilität maximieren
      In diesem Modus werden Objekte und vor allem ihre Scripts wie bei T:ANE geladen und ausgeführt und eventuell veraltete Scriptstechniken toleriert. Sprich: Die neue Technik wird nicht in dem Umfang angewendet, der vorgesehen ist. Dafür funktionieren in diesem Modus die meisten Scripts am besten, da gerade ältere Inhalte nicht an die neue Technik angepasst worden sind. Für die Zukunft ist diese Einstellung aber gerade für CCs nicht von Vorteil, da Ihnen hiermit die Neuerungen entgehen. Man kann nicht davon ausgehen, dass es immer diesen Kompatibilitätsmodus geben wird.
    • Stream Objects
      Dieser Modus schaltet die neue Technik ein, behält aber offensichtlich einige Kompatibilitätseinstellungen bei. Auch meine alten Scripts funktionieren in diesem Modus weitestgehend.
    • Spielleistung maximieren
      Dieser Modus schaltet offenbar die neue Technik total ein, meine alten unangepassten Scripts schmeißen alle Fehler, mein roter "Bug" ist zu hunderten gefüllt mit Einträgen zu den verschiedensten Scripts, die dann auch Ihre Arbeit einstellen. Das ist die Richtung die N3V Games die Entwicklung von Trainz laut Aussagen der Entwickler einschlägt. Daher mein Appell an die CCs: Testet eure neuen Kreationen auch hier, es ist schade um die Arbeit, wenn diese beim Wegfallen dieser Einstellungsmöglichkeiten unbrauchbar würden!
    • Show errors on legacy calls
      Hier werden Scripts offensichtlich solange ausgefüghrt, wie diese Funktionen nutzen, die nicht "obsolete" sind. Veraltete (also legacy) Funktionen werden demnach nicht ausgeführt und das Script bricht ab. Hier laufen fast keine meiner Scripts mehr.


    Wie gesagt. die Daten beruhen auf eigenen Analysen und sind keines Falls aus offizieller Quelle.
    Wenn jemand weitergehende Informationen hat, wäre ich für entsprechende Hinweise dankbar :)

Kommentare 2

  • Pascal, danke für diesen Beitrag! Ist dir vielleicht bei deinen Recherchen auch eine Möglichkeit begegnet, bei der man während dem Entwicklungsprozess eines 3D Models - also gerade beim Testen im Simulator - Dinge, wie erforderliches LOD oder Fehler bei einfarbigen Texturen, außer Kraft setzen kann?


    cheers

    Christian

    • Hallo Christian,


      in der Tat kann ich dazu etwas sagen, aber eher unerfreuliches:
      Die Mechanik von Trainz scheint so auszusehen, dass BuiltIn-Assets aus den Paketen "base" und "core", sowie PayWare-Pakete, durch Trainz in einer anderen Art und Weise gehandhabt werden, als jegliche andere Inhalte. Das sorgt dafür, dass diese keine Fehler und Warnungen haben. Bei externen Inhalte, die von der DLS oder extern installiert worden sind, scheint der Mechanismus auch bei großen bemühungen keine Anwendung zu finden. Die Datenbank von Trainz lässt sich aber austricksen, zwar nicht so einfach wie in T:ANE und TS12, aber es geht. So kann man mit großem Aufwand manche Assets ersetzen, dann dürften Patches aber nicht mehr funktionieren.
      Ob ich dazu mal einen Artikel schreibe, weiß ich noch nicht, die einzige sinnvolle Anwendung dafür wäre zB das Reparieren fehlerhafter Assets von Multiplayer-Strecken an der Datenbank vorbei (sodaß diese nicht als bearbeitet geflagged werden).

      In T:ANE konnte ich hingehen das Hauptmenü umbauen, warum ich das machen wollte, kA, wahrscheinlich hat's mcih interessiert wie stark sich Trainz umbauen lässt.
      Das neue Hauptmenü und Interface lässt sich gar nicht mehr umbauen, alles hardcode.

      N3V Games hat wohl bei einigen Dingen Riegel vorgeschoben, was sehr schade ist, stellenweise.

      Aber genau daher hab ich so ein wenig verstanden, wie Trainz hier und da funktioniert. Es gibt haufenweise Assets in der Datenbank, die erstmal nirgendwo abhängig sind, aber trotzdem funktion haben, wenn man diese selbst referenziert. Daher kann man draus schließen, dass solche Objekte eben im Quellcode direkt angesprochen werden und somit anders behandelt werden als externe Inhalte.


      Kurz: An der Fehlerprüfung vorbei, wie bei BuiltIn-Assets, kommen wir leider nicht. Eine solche Funktion wäre aber mal ein Vorschlag gegenüber N3V Games wert. Gerade an Entwicklertools fehlt es in Trainz ja doch sehr. Dank den Jungs um PEV haben wir immerhin ein paar Hilfen, aber auch von Trainz selbst sollte da etwas mehr dabei sein.


      Gruß

      Pascal