Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

321

[RMXP] Autotiles und ihre ID's

Bewertung:

Von ITgenie98, Sonntag, 29. Oktober 2017, 20:19

Welcome back!

Wegen dem Maker X, musste ich mich auch mit den Autotiles beschäftigen und ihrer korrekter Darstellung,
und da fiel mir auf das ihre (binäres) Darstellungs-verfahren gar nicht in diesem Forum erläutert wurde!

Folglich: Marktlücke für mich und meinen Blog :3

========================================================================================================================
Anmerkung: ich habe keine Ahnung wie der Maker es genau macht, dies hier sind lediglich annahmen und Analysen aufgrund von Daten die der Maker ausspuckt!
Es kann auch anders gelöst worden sein, denn es führen ja bekanntlich mehrere Wege zum ziel.
========================================================================================================================

Nun fangen wir einfach mal bei 0 an: jedes Tile auf einer Map besitzt eine eindeutige ID.
Diese ID's teilen sich pro Tileset folgendermaßen auf:

0 - 47 = Frei
48 - 95 = Autotile 1
96 - 143 = Autotile 2
144 - 191 = Autotile 3
192 - 239 = Autotile 4
240 - 287 = Autotile 5
288 - 335 = Autotile 6
336 - 383 = Autotile 7
384 - ??? = Tileset

Wie uns auffällt besitzt jedes Autotile (und der freie platz) genau 48 ID's.
Die 48 am Anfang sind vollkommen frei, dienen dem Autotile-algorhytmus anscheinend für eine Saubere Berechnung, da ID=0 ja unser "Empty"-Tile ist.
Ganz genau hab ichs auch noch nicht herausgefunden aber das macht an dieser Stelle auch nichts da wir uns nun die Berechnung anschauen.

Welche Berechnung meine ich eigentlich? Nun die Berechnung die aus unserer Autotile-Grafik die späteren Tiles macht. Das macht der Maker nämlich aufgrund der ID's.

Als erstes muss der Maker herausbekommen welches Autotile überhaupt benutzt wird.
Dabei wird einfach

Quellcode

1
autotileNr = ID / 48
benutzt. Das Ergebnis ist dann unser Autotile.
Bei einem Ergebnis über 7 wird ganz normal das Tileset verwendet.

Der nächste schritt ist, das wir unsere ID normalisieren (nID), also so umrechnen das sie im bereich 0-47 liegt um alle 48 Tiles eines Autotiles anzusprechen.
Nutzen kann man dazu folgende Formel:

Quellcode

1
ID % 48 = nID
(%, oder auch Mod genannt gibt als Ergebnis den Rest der Division beider zahlen zurück)

Ein paar beispiele:

Quellcode

1
2
3
4
50 % 48 = 2
62 % 48 = 14
95 % 48 = 47
99 % 48 = 3
Klappt schon mal hervorragend!

Nun wird es kniffliger: für weitere berechnungen benötigen wir die zahlen im Binär-System (auch Dual-system ganannt).
Als kleines tool zum schnellen umrechnen nehme ich gerne Binary Hex Decimal Converter Calculator .

Wenn wir nun alle Binärzahlen den späteren Autotiles mal zuweisen erkennt man schnell sein Prinzip:

(Im folgenden zähle ich von links nach rechts, also nicht wundern!)

Die ersten beiden Bit (00, 01, 10) unserer nID Legen grundlegend den "Modus" fest.
00 => Nur ecken
01 => Kanten, auch mit ecken
10 => restliche formen

Sehen wir uns mal simpel die 1. Gruppe an (00 = Nur ecken):

Uns bleiben 4 bits übrig die in folgender Reihenfolge Auswirkungen haben:
- ecke unten links
- ecke unten rechts
- ecke oben rechts
- ecke oben links

Da wir bei einem bit entweder 0 oder 1 haben funktioniert das hier wie ein hebel: ist das bit gesetzt (also 1) ist die dazugehörige ecke existent.

Nun kommen wir zu Gruppe 2 (01 = Kanten die auch ecken besitzen)

Hier ist es ein wenig komplizierter:

Die ersten 2 bits legen die Position der Kante fest, die 2 übrigen die Sichtbarkeit der 2 verbleibenden ecken (hierfür siehe unten die Tabelle)

-> Kanten
00 = links
01 = oben
10 = rechts
11 = unten

Nun zur letzten Gruppe die ein wenig zusammengewürfelt ist (10 - restliche formen):

Für eine genaue Auflistung hierfür seht einfach in die Tabelle unten, ich notiere hier nur ganz grob die einzelnen formen:

- 2x parallele Kanten
- 2x Eck-kante links-oben
- 2x Eck-kante rechts-oben
- 2x Eck-kante rechts-unten
- 2x Eck-kante links-unten
- 4x "Sackgasse" oder U-Form
- 2x Punkt form (kein Unterschied zwischen beiden)

===========================================================
Tabellen screenshot

Bild

===========================================================
Ich hoffe euch hat der kleine einblick in die Technik hinter die Autotile-Generierung gefallen!

Mfg IT8

Dieser Artikel wurde bereits 48 mal gelesen.


Kommentare (1)

  • 1

    Von Playm (Montag, 30. Oktober 2017, 19:48)

    Sehr schöner Artikel! :3

    Leider die Zahlen nicht mit Ruby und .to_s(2) umgewandelt deswegen nur 4/5 Sternen. :-P Aber ansonsten top.

Blog Navigation

Vorheriger Artikel

[EntwicklerBlog] UI Überlegungen

Von ITgenie98 (Mittwoch, 25. Oktober 2017, 16:36)