Neuer Release
rpgss-0.7.0.7z
Skripte wurden überarbeitet, es gibt nun eine generische boot.lua und man kann nun Bilder in 8-Bit speichern, die der RPG Maker lesen kann.
Neuer Release
rpgss-0.7.0.7z
Skripte wurden überarbeitet, es gibt nun eine generische boot.lua und man kann nun Bilder in 8-Bit speichern, die der RPG Maker lesen kann.
Yesssss! Gibts ein Beispiel dafür, wie man die in 8-Bit speichert?
EDIT: Ah, nevermind, schon gefunden. palletize P:
EDIT EDIT: Wäre es möglich eine Funktion einzubauen, um festzulegen, welche Farbe transparent wird? So gesehen wählt er einfach eine Farbe willkürlich aus, und das ist doof.![]()
Die Information, welche Farbe transparent ist, wird leider nicht im Dateiformat gespeichert, sondern wird erst im Resource Manager des Makers festgelegt. D.h. hast du im Maker festgelegt, dass beispielsweise die dritte Farbe der Palette transparent ist, lässt sich diese Information nicht in der Datei selbst bearbeiten. Beim Quantisieren (also Reduzieren der Farben auf 256) kann es außerdem dazu kommen, dass Farben vermischt werden, d.h., auch wenn man direkt eine transparenten Farbe, z.B. #FF00FF, angeben könnte, könnte diese nach dem Quantisierungsprozess nicht mehr vorhanden sein, weil sie mit einer anderen vermischt und z.B. zu #FF10FF wurde. ;(
Wofür genau brauchst du das denn? Eventuell lässt sich ja eine Lösung finden, ich möchte aber nichts versprechen.
Die Transparenzfarbe ist nicht willkürlich und die wird auch nicht ausserhalb der Datei irgendwo gespeichert. Es ist der erste Platz in der Farbpalette. Beim Import im Maker wird die geklickte Transparenzfarbe auf Palettenplatz 0 umbelegt.
--CortiWins GitHub DynRPG < Charguide < [2k3] Zahlen und Werte < [2k3] Kurven als Wertetemplates < [2k3] DynRPG Werkstatt
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Hello from the otter side
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Doch, die transparente Farbe wird in der jeweiligen Datei gespeichert. Transparent ist immer der Farbeintrag an Palettenindex 0. Beim Importieren tauscht der Maker lediglich die Einträge entsprechend aus.
Ein paar Bilder zur Verdeutlichung:
Testbild und dazugehörige Palette:
Beim Importieren habe ich dann das Gelb oben rechts als Transparenzfarbe gesetzt und der Maker hat die Palette ensprechend umgeändert (und auf 256 Einträge erweitert):
Edit: Verdammt Corti, nachdem ich so viele schöne Bilder gemacht habe D:
Stimmt, in der DynRPG-Referenz zu Image::useMaskColor steht auch etwas, woraus man das ableiten kann:
Danke! Jetzt muss ich mir nur überlegen (bzw. testen), wie man sinnvoll eine Farbe übergeben kann, da das Problem, dass die Farben nach dem Quantisieren möglicherweise nicht mehr die gleichen sein könnten, immernoch besteht. :/Zitat
Zum Beispiel zuerst eine Maske anlegen die besagt wo überall diese Farbe vorkommt, dann auf 255 Farben quantisieren, dann die 256. Farbe (#0) explizit für die Transparenz nutzen (anhand der Maske die Pixel auf die #0 Farbe setzen und ihr als Paletteneintrag den originalen Farbcode geben).
Vielleicht geht das aber auch einfacher, hängt von deiner Library ab...
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT
Gute Idee, danke! Wobei extra eine Maske anlegen nicht nötig ist, da das Ursprungsbild bereits die notwendigen Informationen hat, d.h. einfach das Ursprungsbild durchlaufen und im quantisierten Bild überall dort die Pixel auf Index 0 setzen, wo im Ursprungsbild die Transparenzfarbe vorkommt. Das einzige Problem dabei ist, dass ich auf 255 Farben statt auf 256 reduzieren müsste und das ist in der momentanen Schnittstelle meiner Image-Bibliothek nicht vorgesehen, um die Komplexität gering zu halten. Der Quantisierungsprozess selbst würde auch mit einem Farbenlimit != 256 funktionieren. In meiner momentanen Lösung gehe ich einfach die resultierende Palette durch und wenn ich auf die Transparenzfarbe stoße (und diese sich nicht bereits auf Index 0 befindet) schiebe ich diese (mit allen dazugehörenden Änderungen im Pixelbuffer) auf Index 0. Das funktioniert auch recht gut soweit ich das getestet habe, vermutlich aber auch nur solange die Transparenzfarbe sich deutlich von den anderen Farben unterscheidet, d.h. der Abstand im Farbraum zu den anderen Farben groß genug ist (in dem Fall wird die Farbe nämlich als ein eigener Cluster angesehen und nicht mit anderen Farben vermischt). Ich behalte mal deine Idee im Hinterkopf. Danke nochmal.
Kurze Frage:
Was zwingt dich, die Farbpalette für einzelne Bilddateien bei 8bit zu belassen? Angesichts der Tatsache, dass der Buffer des 2k(3) nativ insgesamt 15bit Farbtiefe zulässt und DynRPGSS ja scheinbar mit eigenen Buffern und anderem Grafik-Gedings arbeitet.
Edit:
Meinte das eher bezogen auf die Transparenzvergabe. Meine Frage hat sich damit eh erledigt.
Geändert von bugmenot (11.06.2014 um 19:14 Uhr)
Das ist nur ein kleines Feature für die, die es brauchen (also RPGSS-Images als 8-Bit-Bilder speichern zu können, die sonst immer als 24-Bit-Bilder plus Alphakanal gespeichert werden). Nützlich z.B. wenn man im Maker importierte Grafiken wie etwa Hintergrundbilder manipulieren will. In dem Fall muss nämlich das ersetzende Bild in 8-Bit sein, sonst kann der Maker die Datei nicht laden. ;)
ich unternehme grad versuche, mir ein bild mit alpha kanal anzeigen zu lassen. ich bin nicht sicher, was ich falsch mache, aber so recht will es noch nicht klappen.
anzeige im maker:
ausgangsbild:
irgendwie scheint die transparenz falsch interpretiert zu werden. wobei ich mich auch gefragt hab, warum es keine "normale" anzeige funktion gibt, sondern nur subtract, add etc., kann auch daran liegen. ist das nicht vorgesehen?
noch eine frage: womöglich hab ich das überlesen, aber kann ich pictures auch wie bei dynPEC mit variablen ansteuern? bzw. kann ich alle werte bei der picture anzeige auch mit variablen ersetzen?
Für Alpha-Kanal-Blending verwende den "mix" blend mode.
Fall du bereits "mix" verwendest (laut Resultat scheint es aber eher "subtract" gewesen zu sein), poste mal deinen Code.
Wenn du nähere Erläuterungen zu den einzelnen Blend Modes brauchst, gib einfach Bescheid!
Du meinst statt über eine Zeichenkette (Name), über eine numerische ID? Noch nicht, aber ich baue es für dich ein.
Klar, das sollte bei allen Werten bereits möglich sein, die keine Zeichenketten sind, also Position, Z, Skalierung, Rotation, Quellrechteck, etc.
Wenn du mehr Fragen hast, stell sie ruhig, ich werde sie dir gerne beantworten.![]()
Geändert von Kyuu (16.06.2014 um 18:04 Uhr)
hab das mit der anzeige erstmal soweit hinbekommen.
Ähm, nummern wären vielleicht auch nicht verkehrt, wenn bisher nur buchstaben möglich sind.Zitat
aber eigentlich meinte, ich, ob man bestimmen kann, welches picture aufgerufen wird auf der basis von einer variable. ehrlich gesagt, weiß ich selbst nicht mal genau was ich damit meine, aber bei dynPEC hab ich halt die anzeigen meiner gegner im kampf so in der art gemacht, wobei man nochmal differenzieren muss, weil es da eben über diese spritesheets ging, wo ich dann eben die spalte des sheets mit der variable angezeigt hab. ... so wichtig ist das auch nicht, vielleicht. ich seh bei diesen "Pointer"-geschichten, so nennt man das glaub ich, noch nich so recht durch.
wie geb ich denn bei den anderen werten die variable an? diese form: "var0000"?
Im Grunde sollte man bereits jetzt (durch zu optimistisches Programmieren von mir) numerische IDs verwenden können, es wird aber spätestens beim Speichern zu einer Fehlermeldung kommen, da von Zeichenketten als Bezeichner ausgegangen wird. Das wird sich auch in Zukunft nicht ändern um das Skript nicht zu kompliziert zu machen, nur werde ich die Schnittstelle (also die "Befehle", die du per Event-Kommentar verwendest) so überarbeiten, dass numerische IDs im Hintergrund zu Zeichenketten konvertiert werden.
Beim Lesen dachte ich erst, du meinst sowas wie "MeinBild" + V123 + ".png", also dass der Dateiname dynamisch zusammengebaut wird, aber nachdem ich mir DynPEC genauer angesehen habe, verstehe ich was du meinst. Im Prinzip ist das bereits möglich (durch Angabe des Quellrechtecks, siehe set_sprite_source_rect), wenn auch etwas umständlicher. Ich werde das aber noch weiter vereinfachen, so dass man ein Quellrechteck auch anhand einer ID auswählen kann.
Wenn du möchtest, können wir uns mal im IRC oder so treffen und ich erkläre dir alles, was du wissen möchtest, bzw. wo du noch Unklarheiten hast im Detail. Melde dich einfach mal, wenn du Lust hast.
Genau so wie auch bei allen anderen DynRPG-Plugins: V<ID> (ohne "<" und ">") Also z.B.:
Das holt sich die Werte für die Parameter visible, z, x, y, scale und angle entsprechend aus den Variablen #1, #2, #3, #4, #5 und #6. Variablen-Lookup (so nennt man das) funktioniert auch mit beliebiger Verschachtelungstiefe, also VV1, oder VVVVV1 würde auch funktionieren (wobei das nicht bedeutet "hole Wert aus Variable #1, sondern "solange Anzahl Vs > 1: hole Wert als Variable-ID und wiederhole Lookup, sonst: hole Wert"), ist aber wahrscheinlich ab einer Verschachtelungstiefe > 2 nicht mehr praktikabel.
Geändert von Kyuu (17.06.2014 um 12:04 Uhr)
Wollte die nächste Version eigentlich schon vor einer Woche oder so veröffentlichen, habe mich dann aber entschieden die ganzen Änderungen, die ich schon lange vor mir herschiebe, endlich hinzuzufügen. Und hier ist das Ergebnis:
Neuer Release
rpgss-0.8.0.7z
Ein großer Schritt Richtung Version 1.0 und Richtung solides Framework!
Skripte wurden erheblich überarbeitet und viele neue hinzugefügt. Mit dem Callback Manager kann man nun isolierte Erweiterungen schreiben, die wie das Plugin-System von DynRPG Plug & Play erlauben. Ein gutes Beispiel dazu ist die Game Clock-Erweiterung.
Mit dem Hinzufügen von Character:move ist nun auch Pathfinding möglich! Dazu habe ich für euch eine Demo vorbereitet:
Download (alte Version, siehe weiter unten für die aktuelle)
Edit:
Ich habe das Pathfinder-Skript erweitert, so dass nun, sollte kein Pfad zur Zielposition existieren, ein Pfad zur nächstbesten Position zurückgegeben werden kann. Dazu einfach beim Aufruf von move_character (siehe Scripts/extensions/pathfinder/interface.lua) für den Parameter allownearest eine 1 übergeben.
Hier ist die aktualisierte Pathfinding-Demo: Download
Ihr könnt entweder einfach die aktualisierten Pathfinder-Skripte aus dieser Demo verwenden, oder aus dem Repository (immer auf dem neuesten Stand) herunterladen.
Geändert von Kyuu (01.07.2014 um 17:29 Uhr)
Ich habe für jemanden ein Skript zum automatisierten Anzeigen von Lightmaps geschrieben. Ich denke, das können auch andere brauchen:
Download
Installation
- RPGSS 0.8 installieren (inklusive Assets).
- In der Datei Scripts/boot.lua sicherstellen, dass entweder eine Zeile mit require "extensions", oder eine Zeile mit require "extensions.lightmapmanager" als Inhalt existiert. Einfach mit einem beliebigen Text-Editor öffnen/bearbeiten.
- Alles aus LightmapDemo/Scripts/extensions/lightmapmanager in das selbe Verzeichnis deines Projekts kopieren.
Verwendung
- Falls über eine Map eine Lightmap gelegt werden soll: Lightmap in "mapXXXX.png" umbenennen, wobei für XXXX die Map-ID einsetzen, inklusive führender Nullen, und ins Verzeichnis Picture/lightmaps kopieren.
Geändert von Kyuu (06.07.2014 um 00:51 Uhr)
probiere es grad aus, hatte allerdings noch keinen erfolg.
ich hab also meine lightmap im ordner lightmaps. sie heißt "map0066.png" und ist für die map 66.
ich hab die sachen aus dem demoprojekt kopiert. wie finde ich den fehler? ^^
Guck mal in boot.lua ob da require "extensions" steht. Wenn nicht (ich gehe stark davon aus), dann einfach irgendwo oben require "extensions" hinzufügen.
Wenn man nicht alle, sondern nur bestimmte Extensions haben will, einfach die Zeile require "extensions.name" für jede Extension einfügen. Also zum Beispiel:
Um die Extensions Lightmap Manager und Game Clock hinzuzufügen.
Manche Extensions benötigen andere Extensions, in dem Fall muss aber nichts weiter getan werden, denn diese werden automatisch hinzugefügt (vorausgesetzt der Extension-Autor hat alles richtig gemacht ^^).
Geändert von Kyuu (03.07.2014 um 13:10 Uhr)
Ich sollte mal meine Installationshinweise in der Dokumentation überarbeiten und die Assets-Installation zur Pflicht machen. :> Einfach den Ordner Fonts und am besten auch gleich den Ordner WindowSkins (zu finden im Ordner assets im 0.8-Release) in dein Spielverzeichnis kopieren.
Manche Extensions zeichnen Text/Fenster und benötigen entsprechend die mitgelieferten Standardfonts/-windowskins.
Übrigens: Die Scene Manager Extension kann die aktuellen FPS am Bildschirm ausgeben. Dazu einfach F10 drücken. Nur so am Rande...
Geändert von Kyuu (03.07.2014 um 13:20 Uhr)