Videotexturen?

  • Es ist ja mit PixiJS ziemlich einfach, Videos in Texturen zu laden. Ich überlege gerade, ob ich mich mal dransetzen soll, diese Funktion auch im RPG Maker leicht nutzbar zu machen. Mir fehlt allerdings etwas die Problemstellung dazu, bzw. weiß ich nicht, ob das überhaupt jemand haben wollen würde. Ist auch nicht gut für die Performance, je nach Video und Anzahl.


    Macht das Sinn? Würdet ihr sowas nutzen? Wenn ja, wofür?

  • Hmm - ich tu mir gerade schwer zu verstehen was damit genau gemeint ist

    Also, ok, Video einbinden - aber was ist mit "in Texturen laden" gemeint?


    Könnte mir vorstellen z.B. bei einem Fluss reale Grafiken einzubauen - sowas in etwa?


    Wäre interessant zu wissen wie das aussehen könnte. Nicht gut für die Performance ist gerade beim MV Maker natürlich leider generell eher suboptimal

  • Wenn ich das richtig verstanden habe, dann würde ich wohl eher auf GIFs zum Erweitern der Makergrenzen bei den Tilesets setzen, anstelle auf Videodaten. 3-6 Frames könnten hier bereits vieles möglich machen, ohne hoffentlich zu stark auf die Performance drücken.

    Vielleicht wäre das ja eher eine Überlegung wert, um beispielsweise sonst nicht animierte Boden-Texturen oder Detailobjekte wie Bäume leicht zu animieren. :)

    Meine Projekte:

    Hauptprojekt:Village Siege (Arbeitstitel)Tower-Defense Spiel mit kleinem TwistPrototyp: ~ 30%GDevelop
    Nebenprojekt:Misty Hollow: Makabere Abenteuer (Arbeitstitel)klassisches RPG mit einer Mischung aus Witz und GruselDemo: ~ 5%RPG Maker MZ
  • Wenn ich das richtig verstanden habe, dann würde ich wohl eher auf GIFs zum Erweitern der Makergrenzen bei den Tilesets setzen, anstelle auf Videodaten. 3-6 Frames könnten hier bereits vieles möglich machen, ohne hoffentlich zu stark auf die Performance drücken.

    Vielleicht wäre das ja eher eine Überlegung wert, um beispielsweise sonst nicht animierte Boden-Texturen oder Detailobjekte wie Bäume leicht zu animieren. :)

    Das funktioniert leider nicht (annähernd so einfach). Es gibt zwar ein PixiJS-Plugin für GIFs, aber das wirft keine Texturen aus, weshalb sich das hierfür nicht gut nutzen lässt.

    GIFs sind leider auch ineffizient verglichen mit quasi allen anderen Formaten und würden die Performance wahrscheinlich stärker drücken als Videos.

  • Ja, zum Beispiel. Man könnte dann auch Videodateien mit Show Picture nutzen. Wobei ich nicht weiß, wie das mit dem Abspielen aussehen würde, wäre wahrscheinlich eine unkontrollierte Dauerschleife. (Ich verwende den Maker immer auf Englisch, daher habe ich die deutschen Namen nicht immer parat.)


    Wenn die Bildrate und Auflösung Makertypisch gering sind, dann sollte es flüssig(er) laufen. Ich glaube nicht, dass die Daten durch den Hauptspeicher geladen werden müssen.

  • Dass Gifs weniger effizient laufen sollen als Videos - gerade wenn man nur von wenigen Frames ausgeht, überrascht mich ziemlich.


    Könnte man alternativ eine Bildfolge abrufen, wie sie in einigen Programmen für Animationen verwendet wird? Also beispielsweise durch reine Benennung und Ablage in einem eigens dafür vorgesehenen Ordner?


    Beispiel:

    Baum_animiert00

    Baum_animiert01

    Baum_animiert02

    usw.


    Ich kann mir aber gut vorstellen, dass sowas im Hinblick auf den Video-Speicher nur stark dosiert ratsam wäre, da sonst der Zwischenspeicher schnell überflutet wird, wenn man etliche "Slots" in den Tilemaps durch solche Grafiken ersetzt.

    Meine Projekte:

    Hauptprojekt:Village Siege (Arbeitstitel)Tower-Defense Spiel mit kleinem TwistPrototyp: ~ 30%GDevelop
    Nebenprojekt:Misty Hollow: Makabere Abenteuer (Arbeitstitel)klassisches RPG mit einer Mischung aus Witz und GruselDemo: ~ 5%RPG Maker MZ
  • Das ginge an sich. Eine Bitmap ist ja ein Maker-eigenes Bündel aus Eigenschaften, das kann ich (vermutlich) recht einfach auch anders implementieren und dann wechseln. Sehr effizient ist das auch, macht sich zur Laufzeit quasi nicht bemerkbar, sodass da die einzige Grenze wirklich der Videospeicher ist.


    Die meisten Maker-Texturen, bei denen das Sinn machen würde, sind nicht wirklich hochauflösend.

    Tilesetseiten im MV kosten wahrscheinlich zwischen 1,2 und 1,6 MB VRAM, sodass da ca. 500 zusätzliche Texturen von der Größe wohl realistisch sind, bevor man was an der Bildrate merkt (zumindest für installierte Spiele, im Browser ist das eventuell stärker begrenzt). Das größte Problem wären die Ladezeiten, im MZ (viel) mehr als im MV, da der MZ Ressourcen weniger effizient verwaltet. Videodateien werden soweit ich weiß oft auf der Grafikkarte dekodiert oder sonstwie beschleunigt, bei Bilddateien ist das leider sehr selten möglich.


    Bei Bildern, die auf Fenster gezeichnet werden (inkl. denen in img/faces/ und vielen Icons) funktioniert das alles aber leider erstmal nicht. Da müsste man erst das Bild durch einen Sprite ersetzen.

  • Da ich technisch nur über sporadisch es Halbwissen verfüge, finde ich es immer wieder spannend wenn Du einem hier neue/weitere Erkenntnisse über die Funktionsweise des Malers erläutern kannst.

    Besten Dank dafür!


    Es gibt ja auch (zumindest für MV und MZ wohl auch) Plugins für frei platzierbare Objekte (habe den Namen gerade vergessen), welche ähnlich wie Decals das Mapping erweitern.

    Wenn man die dahinter stehende Technik noch eleganter lösen könnte, hätte man wohl durchaus einen Mehrwert geschaffen. :)

    Meine Projekte:

    Hauptprojekt:Village Siege (Arbeitstitel)Tower-Defense Spiel mit kleinem TwistPrototyp: ~ 30%GDevelop
    Nebenprojekt:Misty Hollow: Makabere Abenteuer (Arbeitstitel)klassisches RPG mit einer Mischung aus Witz und GruselDemo: ~ 5%RPG Maker MZ
  • Da ich technisch nur über sporadisch es Halbwissen verfüge, finde ich es immer wieder spannend wenn Du einem hier neue/weitere Erkenntnisse über die Funktionsweise des Malers erläutern kannst.

    Besten Dank dafür!

    Dazu muss ich noch etwas nachtragen: Das Tileset wird in den meisten Frames tatsächlich der Effizienz halber nicht neu gezeichnet, mit animierten Bitmaps wäre das also (standardmäßig) im Takt der Wasseranimation, 2 mal pro Sekunde. Man kann aber einfach .refresh() aufrufen und dann wird es doch neu gezeichnet.

    Quote

    Es gibt ja auch (zumindest für MV und MZ wohl auch) Plugins für frei platzierbare Objekte (habe den Namen gerade vergessen), welche ähnlich wie Decals das Mapping erweitern.

    Wenn man die dahinter stehende Technik noch eleganter lösen könnte, hätte man wohl durchaus einen Mehrwert geschaffen. :)

    Diese Grid-Free Doodads von Yanfly bzw. VisuStella?

    Ich müsste da mehr dazu wissen, was da das Problem ist.


    Die Yanfly-Plugins sind technisch okay, soweit ich beurteilen kann. Das einzige Manko ist, dass die so programmiert sind, dass es leichter zu Konflikten mit anderen Plugins kommt. Zur Entwicklungs-UX kann ich allerdings nichts sagen, da ich das Plugin selbst nicht habe bzw. nutze. Ist nur in einem der Spiele dabei, die ich hier auf der Festplatte habe. Von der Laufzeiteffizient her ist YEP_GridFreeDoodads quasi genau so wie Ereignissprites, habe da nichts dran auszusetzen.


    Die VisuStella-Plugins haben alle diese nervige Quellcodeverschlüsselung, die wohl auch zur Laufzeit ordentlich Leistung kostet.

    "Nervig" daher, dass ich dadurch auch keine Kompatibilität mit diesen Plugins garantieren kann. In der Praxis gibt's meistens trotzdem keine Probleme, aber falls doch kann ich's halt nicht (so einfach) reparieren.

  • Immer diese Autokorrektur am Smartphone... "Der Maler" lässt mich jedes Mal zwischen Schmunzeln und Augenverdrehen pendeln. x)

    Diese Grid-Free Doodads von Yanfly bzw. VisuStella?

    Ich müsste da mehr dazu wissen, was da das Problem ist.

    Ich habe sie nie selbst verwendet und kann deswegen nicht ins Detail gehen. Meine Aussage bezog sich mehr darauf, dass man einen möglichen Mehrwert bieten könnte, wenn sich denn etwas am verwendeten Einsatz dieser Doodads (ich glaube der Begriff begegnete mir bislang nur beim Editor von WC3) optimieren ließe.

    Die Verknüpfung zog ich, da es an sich ja schon eine sehr komfortable Möglichkeit ist abseits des Tilesets weitere Grafiken für das Mapping zur Hand zu haben und dies unter Umständen die Idee animierter Bitmaps anstelle von GIFs stützen würde. :)
    Wenn man natürlich keine "bessere" Alternative zu den bestehenden Plugins erstellen kann, da diese bereits (abgesehen von der Verschlüsselung) recht gut laufen, dann würde ich die Zeit wohl auch lieber in etwas anderes stecken.

    Meine Projekte:

    Hauptprojekt:Village Siege (Arbeitstitel)Tower-Defense Spiel mit kleinem TwistPrototyp: ~ 30%GDevelop
    Nebenprojekt:Misty Hollow: Makabere Abenteuer (Arbeitstitel)klassisches RPG mit einer Mischung aus Witz und GruselDemo: ~ 5%RPG Maker MZ
  • Macht das Sinn? Würdet ihr sowas nutzen? Wenn ja, wofür?

    Man müsste schauen, wie es aussieht, wie kompliziert das Einbinden ist und wie stark es die Performance belastet, bevor ich dazu was sagen kann.


    Wäre es für dich denkbar, ein Beispiel als Anschauungsprojekt zusammenzuzimmern? Damit meine ich natürlich nicht die komplette Programmierung ins Blaue hinein, sondern ein "grafisches Zusammenschummeln", um zu zeigen, was überhaupt gemeint ist. Das könnte helfen, deine Idee zu verstehen. :laechelderork:

  • Ich denke nicht, dass ich eine Demo schneller hinbekommen würde als das Plugin selbst.


    Aber ja, es macht wahrscheinlich keinen Sinn. Bewegliche Objekte sind mit animierten Doodads schon gut abgedeckt, für Kämpfer und Charaktere habe ich schon meine eigenen Plugins, und quasi alles andere ist endweder eh animiert oder lässt sich wegen Caching auf diese Weise nicht animieren. Im Endeffekt wäre die einzige Verbesserung, dass man eine Animationsfunktion wie von Tilesetseite A1 auf allen anderen Tilesetseiten unabhängig nutzen könnte und dabei keine Vorgabe der Frameanzahl hätte.


    Wenn ich es mit Einzel-PNGs implementieren würde, dann wäre das in Sachen Performance quasi nicht messbar, denke ich, aber selbst ein optimiertes Plugin ist nutzlos wenn man es eh nicht braucht :P

  • Im Endeffekt wäre die einzige Verbesserung, dass man eine Animationsfunktion wie von Tilesetseite A1 auf allen anderen Tilesetseiten unabhängig nutzen könnte und dabei keine Vorgabe der Frameanzahl hätte.

    Ah, jetzt habe ich es verstanden, danke für die Erhellung! Für eine sehr große und sehr lange Explosion im "Auserwählten" hätten wir das zum

    Beispiel gut gebrauchen können, aber da es so etwas nicht gab, haben wir uns mit den Möglichkeiten des Makers durchgemogelt. Aktuell benötige so etwas also momentan nicht, kann mir aber vorstellen, dass das für Leute interessant sein könnte, die gern aufwändige Kampfsequenzen oder Effektanimationen verwenden möchten.

  • Ah, jetzt habe ich es verstanden, danke für die Erhellung! Für eine sehr große und sehr lange Explosion im "Auserwählten" hätten wir das zum

    Beispiel gut gebrauchen können, aber da es so etwas nicht gab, haben wir uns mit den Möglichkeiten des Makers durchgemogelt. Aktuell benötige so etwas also momentan nicht, kann mir aber vorstellen, dass das für Leute interessant sein könnte, die gern aufwändige Kampfsequenzen oder Effektanimationen verwenden möchten.

    Man kann sonst glaube ich auch recht einfach ein "Play Movie"-Video transparent über den Bildschirm legen.


    Ich habe das nicht getestet, aber wenn man Graphics._updateVisibility bzw. im MZ Video._updateVisibility so anpasst, dass der Haupt-<canvas> nicht versteckt wird, dann müsste man den hinter transparenten Videos noch sehen. Wenn man das nicht als veröffentlichtes Plugin ausarbeitet, dann sind das geschätzt 5-6 Zeilen JavaScript, um es an einen Schalter zu binden.

    Das müsste auch in einem parallelen Ereignis funktionieren, wenn dadurch der Spielablauf nicht blockiert werden soll. Das Spiel wird durch Videos soweit ich beurteilen kann nicht angehalten oder sonstwie pausiert, das blockiert nur den Interpreter der das Video angezeigt hat. Müsste auch als Dauerschleife klappen.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!