Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 98

Thema: [DynRPG] RPGSS

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Das ist einfach nur eine Datei, die du mit jedem Texteditor öffnen und bearbeiten kannst. Schritt für Schritt:







    Quellcodedateien sind in der Regel (mir ist eigentlich keine Programmiersprache bekannt, bei der das nicht der Fall wäre) reine Textdateien mit einer informativen Dateiendung, die einfach nur aussagt, um welche Programmiersprache es sich bei dem Quellcode handelt (.lua sagt also nur aus: "Hier handelt es sich um Lua-Quellcode", die Datei ist aber weiterhin nur eine reine Textdatei, die du mit einem beliebigen Texteditor bearbeiten kannst). Nichts also, wofür man besondere Programme/Editoren bräuchte.

    Du musst dich übrigens nicht mit Lua (ja, Lua ist eine echte Programmiersprache) auseinandersetzen, wenn du nicht vor hast eigene Skripte zu schreiben, oder vorhandene Skripte zu bearbeiten. Um die Sprite-Bibliothek nutzen zu können, reicht es, wenn du weißt, wie man DynRPG-Plugin-Befehle nutzt.

    Solltest du aber mal Lust bekommen Lua zu lernen (Lua ist übrigens eine der einfachsten Programmiersprachen), hier ein paar Anlaufstellen:
    • Programmieren in Lua (englischsprachig, frei verfügbare ältere Ausgabe des offiziellen Buchs zu Lua)
    • LUA: für Anfänger (deutschsprachig, auf die Schnelle gefunden, scheint aber ganz OK zu sein)

    Geändert von Kyuu (19.05.2014 um 01:05 Uhr)

  2. #2
    hab es soweit erstmal zum laufen bekommen, danke. Mit den skripten befasse ich mich die tage noch.

  3. #3
    nehme mir grad mal wieder zeit dafür ^^ bin an einer stelle unsicher: du schreibst, der code
    Zitat Zitat
    require "std.world"
    require "std.spritelib"

    function onTitleScreen()
    world = World.new()
    end

    function onLoadGame(id, data)
    world:loadState(data)
    end

    function onSaveGame(id)
    return world:saveState()
    end

    function onSceneDrawn(scene)
    world:update()
    world:render()
    end
    ... soll in die datei boot.lua

    soweit so gut.

    darunter sprichst du dann jedoch von der datei "Scripts/std/spritelib.lua"

    ich hab weder den unterordner std angelegt noch wurde bisher die datei spritelib erwähnt. oder hab ich was verpasst? ^^

  4. #4
    Zitat Zitat von IndependentArt Beitrag anzeigen
    nehme mir grad mal wieder zeit dafür ^^ bin an einer stelle unsicher: du schreibst, der code

    ... soll in die datei boot.lua

    soweit so gut.

    darunter sprichst du dann jedoch von der datei "Scripts/std/spritelib.lua"

    ich hab weder den unterordner std angelegt noch wurde bisher die datei spritelib erwähnt. oder hab ich was verpasst? ^^
    Wenn du den Ordner assets/Scripts, wie im How To beschrieben, aus dem Release-Paket in dein Spielverzeichnis kopiert hast, müsste diese Datei eigentlich unter ~/spielverzeichnis/Scripts/std/ zu finden sein.

    Aber vergiss die mit dem Release ausgelieferten Skripte und lade dir stattdessen die aktualisierten Skripte aus dem Repository runter. In der Zwischenzeit habe ich einige Sachen verbessert/umstrukturiert, die Sprite-Bibliothek um neue Befehle erweitert und eine generische boot.lua hinzugefügt, so dass du diese nicht mehr selbst erstellen musst.

    1. Lösche den kompletten Ordner Scripts in deinem Spielverzeichnis.
    2. Auf der RPGSS-Hauptseite klicke auf den Button "Download ZIP" (unten rechts).
    3. Extrahiere aus dem heruntergeladenen Archiv den kompletten Ordner Scripts in dein Spielverzeichnis.


    Ich habe die Funktionen aus spritelib.lua umbenannt, d.h. die Referenz aus diesem Post stimmt nicht mehr. spritelib.lua ist nun dukumentiert, sodass du stattdessen diese direkt als Referenz hernehmen kannst.

    Hier ist auch eine überarbeitete Sprite-Demo. Schau dir einfach die Events im Maker an, um besser zu verstehen, wie die Funktionen, die in spritelib.lua definiert sind, aus dem Event Code aufgerufen werden können.

  5. #5
    Neuer Release

    rpgss-0.7.0.7z

    Code:
    Changes between 0.7.0 and 0.6.0
    -------------------------------
    
      * Refactored scripts.
      * Added generic boot.lua.
      * Switched to Azura image I/O library.
      * Added option to write palletized images.
    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.

  6. #6
    Zitat Zitat von Kyuu Beitrag anzeigen
    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.

    Geändert von goldenroy (08.06.2014 um 22:54 Uhr)

  7. #7
    Zitat Zitat von goldenroy Beitrag anzeigen
    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.

  8. #8
    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.

  9. #9
    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:

  10. #10
    Stimmt, in der DynRPG-Referenz zu Image::useMaskColor steht auch etwas, woraus man das ableiten kann:
    Zitat Zitat
    If true, color 0 will be used as transparent color.
    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. :/

  11. #11
    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...

  12. #12
    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.

  13. #13
    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)

  14. #14
    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:
    Klicke auf die Grafik für eine größere Ansicht 

Name:	bam.JPG 
Hits:	21 
Größe:	40,4 KB 
ID:	20559

    ausgangsbild:
    Klicke auf die Grafik für eine größere Ansicht 

Name:	Sequenz 0.1.png 
Hits:	24 
Größe:	15,4 KB 
ID:	20560

    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?

  15. #15
    Zitat Zitat von IndependentArt Beitrag anzeigen
    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?
    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!

    Zitat Zitat von IndependentArt Beitrag anzeigen
    noch eine frage: womöglich hab ich das überlesen, aber kann ich pictures auch wie bei dynPEC mit variablen ansteuern?
    Du meinst statt über eine Zeichenkette (Name), über eine numerische ID? Noch nicht, aber ich baue es für dich ein.

    Zitat Zitat von IndependentArt Beitrag anzeigen
    bzw. kann ich alle werte bei der picture anzeige auch mit variablen ersetzen?
    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)

  16. #16
    hab das mit der anzeige erstmal soweit hinbekommen.

    Zitat Zitat
    Du meinst statt über eine Zeichenkette (Name), über eine numerische ID?
    Ähm, nummern wären vielleicht auch nicht verkehrt, wenn bisher nur buchstaben möglich sind.
    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"?

  17. #17
    Zitat Zitat von IndependentArt Beitrag anzeigen
    Ähm, nummern wären vielleicht auch nicht verkehrt, wenn bisher nur buchstaben möglich sind.
    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.

    Zitat Zitat von IndependentArt Beitrag anzeigen
    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.
    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.

    Zitat Zitat von IndependentArt Beitrag anzeigen
    wie geb ich denn bei den anderen werten die variable an? diese form: "var0000"?
    Genau so wie auch bei allen anderen DynRPG-Plugins: V<ID> (ohne "<" und ">") Also z.B.:

    Code:
    @call add_sprite, "bla", "Picture/bla.png", "mix", V1, V2, V3, V4, V5, V6
    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)

  18. #18
    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

    Code:
    Changes between 0.8.0 and 0.7.0
    -------------------------------
    
      * Added onSystemBackgroundDrawn callback.
      * Added keyboard.getVirtualKeyCode.
      * Added keyboard.getState.
      * Added mouse.getState.
      * Mouse position is now clipped to screen dimensions.
      * Added Sound.pitch.
      * Renamed Sound.repeat to Sound.loop to avoid collision with Lua's
        "repeat" keyword.
      * Added graphics.newSystemFontImage.
      * Added option to graphics.writeImage to force a particular color as
        the first palette entry in palletized images.
      * Added game.frameRate.
      * Added game.millisPerFrame.
      * Added game.frameCounter.
      * Added game.playTime.
      * Added game.system.graphicFilename.
      * Added game.menu.scene.
      * Added game.menu.allowed.
      * Added game.menu.saveAllowed.
      * Added game.menu.teleportAllowed.
      * Added game.menu.escapeAllowed.
      * Added game.battle.layout.
      * Added game.battle.atbMode.
      * Added game.battle.speed.
      * Added game.map.existsEvent.
      * Added game.map.findEvent (replaces game.map.findEventById and
        game.map.findEventByName).
      * game.map.moveCamera now behaves as expected (positive offsets move toward
        positive infinity, negative offsets move toward negative infinity).
      * Renamed control mode and layer constants for brevity.
      * Added Character:move.
      * Renamed game.music.fadeOut to game.music.fade for consistency.
      * Added a temporary workaround in game.screen.drawq that fixes the issue
        that the TexturedQuad primitive ignores the source rect position.
      * Moved screen drawing code into its own module for reasons of clarity
        and improved maintainability.
      * Anything rendered to the screen is now affected by the screen brightness
        to avoid sticking out during transitions.
      * Added bitmap versions of the system fonts msmincho and msgothic, as well
        as initial versions of the system window skins.
      * The # (length) operation now works on proxies returned by properties
        like game.party, game.map.events, game.battle.enemies, etc.
      * Refactored and restructured existing system scripts for improved
        modularity and maintainability.
      * Added class.lua (allows for solid object-oriented programming in Lua;
        powered by Yonaba's 30log library).
      * Added Cache.lua (allows caching of frequently used resources like images,
        fonts and window skins).
      * Added Timer.lua (keeps track of and provides an interface to query the
        frame/time delta between updates).
      * Added CallbackManager.lua (allows writing encapsulated extensions).
      * Added InputManager.lua (allows listening/reacting to input events).
      * Added AudioManager.lua (allows playback of BGM, BGS, ME and SE).
      * Added GameClock.lua (keeps track of the total play time and optionally
        displays it in the main menu).
      * Added PathFinder.lua (adds powerful and feature-rich pathfinding tools;
        powered by Yonaba's Jumper library).
    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)

  19. #19
    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)

  20. #20
    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? ^^

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •