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:
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:
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.
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.
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 ^^).
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...
Solche nützlichen Skripte wie das Pathfinding und der LE-Manager sind wirklich das, was RPGSS braucht, bis sich Leute finden, die eigene Skripte schreiben. Sehr toll das Ganze!
Damn, lösch' mal den Ordner Scripts/extensions/gameclock (brauchst du eh nicht). xD
Das Problem ist die Zeile 8 in GameClock.lua, das versucht nämlich folgendes:
Da du aber kein System-Windowskin verwendest, gibt's Probleme. Muss ich mal überarbeiten...
Einfach die alten durch die neuen Skripte ersetzen.
Mit
kannst du ein/ausfaden. opacity geht von 0 (unsichtbar) bis 255 (komplett sichtbar). duration ist die Zeit in Millisekunden, die das Fading dauern soll.
hm, wäre es nicht einfacher gewesen, wenn die lightmap einen standart-namen hätte, den man dann mit den normalen spritebefehlen ansteuert?
...
Lightmap ist im Moment nicht als Sprite implementiert, sondern wird direkt als Image gezeichnet. Es ist aber natürlich möglich sie als Sprite zu implementieren. In dem Fall könntest du sie dann als gewöhnlichen Sprite ansteuern, ja. Hm, ich glaube das wäre sogar wünschenswert, weil die Lightmap dann einen Z-Wert hätte und man Sprites sowohl hinter der Lightmap, als auch davor zeichnen könnte (was im Moment nicht möglich ist). Ist es das, warum du fragst?