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:
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?
quelle
Antworten:
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
if
Aussagen 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
if
Anweisungen 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.
quelle