Implementieren von RPG Maker Auto Tiling

8

Ich arbeite derzeit mit Phaser und mache ein Spiel, das prozedural generiert wird. Ich wollte einige RPG-Maker-Grafiken in meinem Spiel verwenden (als Referenz verwende ich das RTP). Ich bin auf diesen Artikel gestoßen , in dem die Funktionsweise von Auto-Kacheln beschrieben wird. Ich bin auch auf diese Antwort gestoßen , die auf einen anderen Artikel verweist, in dem das automatische Kacheln erklärt wird.

Hier ist die Sache, ich habe keine Ahnung, wie ich so etwas implementieren würde. Ich bin sicher, ich müsste nachverfolgen, welche Kachelsätze mit welchen anderen Kachelsätzen verbunden werden können (dh einige Kacheln haben außen Gras und innen Sand, also müsste ich in diesem Beispiel dieses "Gras" beachten "Fliesen waren die äußeren Fliesen).

Ich habe einen Kartengenerator erstellt (siehe hier ) und wollte nahtlose Verbindungen zwischen meinen Kachelbereichen herstellen. Zum Beispiel wären die braunen Bereiche "dichte" Bereiche (Wälder, Höhlen usw.). Die violetten Bereiche wären Steinböden, und der grüne Bereich ist das Gras. Es gibt ein Kachelset, das für solche Dinge sehr gut funktioniert:

Geben Sie hier die Bildbeschreibung ein

Also möchte ich das obere linke Gras und das dritte Fliesenset, Stein, verwenden, das mit dem Gras verbunden ist.

Welche Art von Dingen müsste ich berücksichtigen, wenn ich automatische Kacheln mit diesen Kachelsätzen implementiere, und gibt es einen Algorithmus, den ich zur Implementierung betrachten kann?

Seiyria
quelle
Tiled ist ein Open-Source-Karteneditor mit einer automatischen Kachelimplementierung. Sie könnten versuchen, die Implementierung im Quellcode zu finden .
Philipp
Die Autotiling-Paradigmen von @Philipp Tiled und RPGMaker sind jedoch unterschiedlich. Mit Kacheln können Sie die vier Ecken einer Kachel als bestimmten Geländetyp angeben ("Sand", "Gras", "Wasser" usw.) und darauf basierend eine passende Kachel auswählen. Mit RPGMaker können Sie festlegen, dass die Mittelpunkte der Kachel eine bestimmte Variante sind, die vom Typ umgeben ist (z. B. "Sand im Gras", "Wasser im Gras" usw.). In beiden Fällen werden Ebenen verwendet, um mit dieser Einschränkung umzugehen. Eine Transformation ist natürlich möglich; hier zum Beispiel mit REFMAP Sand-in-Gras (mit Graspolsterung
Martin Sojka
2
Für die Aufzeichnung sind die RTP-Ressourcen nur für die Verwendung mit ihrer jeweiligen Software und anderen Versionen von RPG Maker lizenziert. Es ist in Ordnung als Platzhalter während der Entwicklung, aber Sie werden brauchen , um sie mit einem anderen Grafiksatz für die Verteilung ersetzen - zum Beispiel die REFMAP Satz oder Grafiken auf der Grundlage der Befreiten Pixel Cup.
Martin Sojka
Vielen Dank für das Heads-up @MartinSojka - Zum Guten oder Schlechten bietet RPG Maker die besten Kunstwerke (Kacheln, Gesichter, Sprites, Effekte usw.), aber ich habe meine Verwendung eingeschränkt, nur damit ich kann Bedecke meine Basen, wenn es Zeit ist, sie zu ersetzen. Ich wollte einfach nicht stundenlang nach Kunst suchen, wenn ich programmieren könnte. Vielen Dank für die Informationen zum Liberated Pixel Cup, darauf werde ich später noch eingehen. FWIW, ich habe nicht vor, dieses Spiel zu verkaufen, aber wenn ich das tue, werde ich definitiv die Kunst ersetzen.
Seiyria

Antworten:

1

Ich habe dies (unter Verwendung des RTP) auf einfache (aber ziemlich langwierige) Weise implementiert.

Ich habe eine Liste aller Nachbarn für die aktuelle Zelle erstellt und mit vielen ifAussagen die Kachel als 4 kleinere / viertel Kacheln gezeichnet.

Für mich führt diese Methode zu einigen kaum sichtbaren Fehlern, die jedoch behoben werden können, indem auf einige Randfälle getestet und entsprechend korrigiert wird.

Wenn Sie sich die Quellbilder und das resultierende Bild im RPG-Maker ansehen, sollten Sie in der Lage sein, dies (möglicherweise mit einigem Ausprobieren) mit ifAnweisungen zu tun , den aktuellen Fall für die angegebene Viertelkachel zu identifizieren und entsprechend zu zeichnen .

Diese Methode kann mit Bitmasken (wie von jzx erwähnt) weiter verbessert und weniger mühsam gemacht werden.


Beantwortung Ihres Kommentars:

Durch das Rendern von nur Viertelkacheln verringern sich die Möglichkeiten dramatisch.

Sie sollten nicht mit Kacheln auf Kacheln umgehen müssen, da sie sich auf verschiedenen Ebenen befinden sollten, die alphabliert oder mit Schlüsselfarben versehen sind.

Ich verstehe auch nicht, warum Sie eingebaute Nachbarn benötigen, aber das könnte in der Nachbarberechnung separat behandelt werden, möglicherweise unter Verwendung einer Art Karten (Liste der Paare, die sich vermischen).

Die Karte ist normalerweise statisch und die Bilder sind niedrig aufgelöst, sodass Sie sich keine Sorgen um die Leistung machen müssen.

Akaltar
quelle
Ich war sehr daran interessiert, Bitmasken zu verwenden, bis ich sah, dass die Komplexität mit jeder möglichen benachbarten Kachel zunimmt. Wenn ich mir das RTP anschaue, kann ich nicht genau erfassen, wie viele mögliche Fälle es geben würde, da einige Kacheln auf anderen Kacheln gestapelt werden können und einige Kacheln eingebaute Nachbarn haben.
Seiyria
@Seirya Antwort bearbeitet.
Akaltar
Danke für die Aktualisierung. Eines jedoch: Wenn Sie sich das Kachelset oben ansehen, sehen Sie, dass einige Kacheln Nachbarn eingebaut haben, wie Sand-auf-Gras- oder Stein-auf-Gras-Kacheln. Für einige Fliesen wie die Wasserfliesen, die auf alles gelegt werden können, ist dies kein wirkliches Problem.
Seiyria