Shared Textures Tutorial

  • Dieses Tutorial ist eine grundlegende Anleitung zur Arbeit mit Shared Textures bei der Erstellung von Custom Content für RCT3.
    Dadurch lässt sich sehr viel Speicherplatz sowohl in den OVLs, als auch im Speicher des Computers sparen. Bei manchen Sets kann damit durchaus 90% des Speicherbedarfs eingespart werden.

    Vorwort


    Jede Textur verbraucht Speicher, sowohl in den OVLs, als auch im Spiel selbst. Das sind bei einer 4x4 Pixel großen Textur etwas über 1 kB, bei einer 1024x1024 Pixel großen Textur bereits über 1 MB. (Faustregel: Länge x Breite der Textur + 1 kB). Wenn mehrere Objekte dieselbe Textur verwenden, brauchen diese nicht mehrmals (bei jedem Objekt) gespeichert zu sein. Es reicht, wenn sie einmal gespeichert ist, und das Spiel weiß, wo es diese findet. Ist dieselbe Textur in mehreren OVLs gespeichert, dann kann das Spiel nicht feststellen, dass diese Texturen identisch sind, und liest jede einzelne davon in den Speicher. Um das zu vermeiden, gibt es die Möglichkeit Texturen zu sharen. Dabei werden Texturen in einer separaten OVL gespeichert, und bei den Modellen nur angegeben, wo das Spiel diese findet.

    Die Verwendung von Shared Textures benötigt nur etwa 200 byte mehr Speicher, als wenn die Textur direkt beim Modell gespeichert ist, so dass dies selbst dann sinnvoll ist, wenn nur eine einzige sehr kleine Textur eingespart wird.


    :!: Sobald ein Set aus mehreren Objekten besteht, und mehr als eines dieselbe Textur verwendet, sollte diese Textur in separaten Texture-OVL stecken und nicht im Objekt selbst.


    Ein besonders großes Einsparpotential ergibt sich natürlich, wenn sehr viele Objekte dieselbe Textur verwenden, wie es oft bei Wand- oder Zaunsets der Fall ist. (Ich habe schon Sets gesehen, bei denen so 90% des Speicherbedarfs eingespart werden könnten.)



    Auch wenn Texturen in einer separaten OVL gespeichert sind, können die Texturen trotzdem noch normal eingebunden werden, die wirklich nur das eine Objekt benötigt.


    Das Modell


    Beim Modell ist nichts zu beachten. Wir können es ganz genauso wie gewohnt im 3D-Programm modellieren und für den Importer als ASE-Datei oder MODXML-Datei exportieren.


    Die Textur-OVLs


    Wir öffnen im Importer das „Create OVL“-Fenster.


    Dort bestimmen wir die Texturgrafiken genauso, wie wir es sonst gewohnt sind und legen die Eigenschaften (Alpha, Colorable, ...) fest. Darauf gehe ich hier nicht weiter ein, weil das identisch zum gewohnten Ablauf ist.


    Das tun wir jetzt aber nicht nur für die Texturen eines Objekts, sondern für alle Texturen, die von mehreren Objekten benötigt werden.

    Den Unteren Teil des Fensters lassen wir frei, wir geben kein Modell und auch keine LODs an.

    Als Namen tragen wir den Namen unsers Sets gefolgt von einem Bindestrich und „texture“ ein, z.B. „MeinNeuesSet-texture“.

    (Es sind zwar auch andere Namen möglich, mit diesem Namen ist es aber am einfachsten, weil der Importer diesen im späteren Verlauf als Standard vorschlagen wird.)


    :!: Als Path müssen wir den Ordner angeben, in dem wir unsere THM-Datei („Save Theme File ...“) speichern werden oder gespeichert haben. Der Importer sucht nur in diesem Ordner nach Textur-OVLs, um sie bei „Install“ mit ins Spiel zu kopieren.


    Wir speichern unsere Einstellungen als XML-Datei („Save Scenery File As ...“). Diese XML-Datei werden wir später noch brauchen.

    Und dann erzeugen wir die Textur-OVLs (Button „Create Scenery OVL“, Anzeige „Create Texture OVL“).


    Die Objekte


    Die Objekt-OVLs für die Modelle erzeugen wir fast genauso wie gewohnt, mit ein paar kleinen Unterschieden.


    Anstatt als Erstes die Texturen für unser Modell zu bestimmen, tun wir Folgendes:

    Im „Create OVL“-Fenster klicken wir auf den Reiter „References (0)“


    Dort ist unten bereits ein Eingabefeld mit einem Pfad und dem Namen der Textur-OVLs ausgefüllt („../shared/JG59MeinNeuesSet-texture“). Es ist der Pfad, in den die Texture-OVLs spaäter kopiert werden. („..\“ - von der Objekt-OVL einen Ordner zurück, „shared/“ - der Ordnername für die Textur-OVLs, „JG59“ - mein Pefix, „MeinNeuesSet“ - der Name des Sets)

    Mit einem Klick auf den Plusbutton („Add Reference“) daneben, fügen wir dies ins obere Feld ein.

    Oben der Reiter zeigt uns jetzt an, dass wir eine Referenz hinzugefügt haben. Bei allen Objekten, die diese Texturen verwenden sollen, muss dort „References (1)“ stehen. Wenn das nicht so ist, dann haben wir vergessen die Referenz hinzuzufügen, und im Spiel wird dieses Objekt den grünen Klecks statt unserer schönen Texturen zeigen.


    Wir können nun wieder den Reiter „Textures“ auswählen. Wenn unsere Texturen noch nicht in grauer Schrift angezeigt werden, dann kennt der Importer sie noch nicht.


    Dann müssen wir sie in den Texture Cache laden. Dazu klicken wir oben auf das grüne Plus („Load SCN into Texture Cache“] und wählen dann unsere Textur.xml aus, die wir beim Erstellen der Textur-OVLs gespeichert haben..


    Eine Meldung bestätigt uns, dass unsere Texturen in den cache geladen wurden, und wie viele es waren. Diese Meldung bestätigen wir, und wir sehen alle Texturen in grauer Schrift, die in unserer Textur-OVL sind.


    Anmerkung:

    Wenn die Texturen einmal in den Texture Cache geaden sind, dann bleiben sie dort, bis wir den Importer schließen. Sie müssen nur einmal hineingeladen werden.

    (Mit einem Klick auf das rote Symbol rechts neben dem grünen Plus-Zeichen („Clear Texture Cache“) können wir sie bei Bedarf entfernen.)


    Jetzt können wir noch wie gewohnt Texturen definieren, die nur dieses eine Objekt benötigt.

    Bei der Definition des Modells können wir dann alle Texturen auswählen, sowohl die mit der grauen Schrift, wie auch eventuell hinzugefügte mit schwarzer Schrift.


    Der Rest unterscheidet sich überhaupt nicht vom gewohnten Ablauf.


    Set erstellen und installieren


    Das Set erstellen wir genauso, wie wir es gewohnt sind. Wir definieren die „Icon Textures“, die „Icon References“, die „Text String“ und die „Scenery“.


    Beim Installieren sehen wir dann eine Meldung „... Texture OVL found & installed”. Dies sagt uns, dass wir beim Dateinamen oder dem Pfad in dem die Textur-OVL gespeichert wurde keinen Fehler gemacht haben, und auch diese in die RCT3-Ordner kopiert wurde.


    Hinweise


    Wenn es nicht sofort funktioniert, dann liegt es meist nur an irgendeiner Kleinigkeit. Und solche Kleinigkeiten übersieht man meist sehr hartnäckig, um so mehr, je länger man draufschaut.

    Deshalb auf keinen Fall in Hektik verfallen, und immer wieder probieren, sondern lieber ein paar Stunden oder einen Tag etwas anders machen, und es danach noch einmal versuchen. Mit einem kleinen zeitlichen Abstand fallen einem oft Fehler auf, für die man im Moment absolut blind ist.


    Wenn keine Meldung erfolgt, dass die Textur-OVL installiert wurde:

    - kontrollieren, ob die Textur-OVLs wirklich in demselben Ordner sind, in dem auch die THM-Datei ist

    Wenn ein Objekt nicht die richtige Textur trägt, sondern den „grünen Klecks“ anzeigt:

    - kontrollieren, ob beim fehlerhaften Objekt wirklich die „Reference“ eingetragen ist

    - kontrollieren, ob der Name der Textur-OVLs mit dem Eintrag bei „Reference“ übereinstimmt


    JG59

Teilen