Zustände im Kampf werden zu schwarzen Rechtecken

  • Wie ihr vielleicht wisst, benutzt der RPG Maker MV PIXI.js, welches durch OpenGL in der Lage ist Sachen auf den Bildschirm zu rendern.

    Nun ist es so, dass Icons anfangen schwarz angezeigt zu werden, sobald das IconSet eine bestimmte Größe erreicht hat. Aber auch nur bei den Zuständen in Kämpfen:


    Wieso ist das so?

    Der Unterschied liegt darin, wie die Icons auf den Bildschirm gebracht werden. Wenn man sich anguckt, wie in dem Fall die Kettensäge dargestellt wird, findet man folgendes:


    Code
    1. Window_Base.prototype.drawIcon = function(iconIndex, x, y) {
    2. var bitmap = ImageManager.loadSystem('IconSet'); // IconSet wird als Bitmap geladen
    3. var pw = Window_Base._iconWidth; // Breite des Icons
    4. var ph = Window_Base._iconHeight; // Höhe des Icons
    5. var sx = iconIndex % 16 * pw; // X-Koordinate im Sheet
    6. var sy = Math.floor(iconIndex / 16) * ph; // Y-Koordinate im Sheet
    7. this.contents.blt(bitmap, sx, sy, pw, ph, x, y); // Auf der Bitmap des Text-Fensters werden Teile durch einen Ausschnitt der IconSet-Bitmap ausgetauscht. (Block transfer)
    8. };

    Zum Vergleich die Zustände im Kampf:



    Es sieht alles ziemlich gleich aus, nur dass das Endergebnis anders ist:

    Dadurch, dass das Icon direkt in die Bitmap der TextBox eingefügt wird, bleibt die Größe der Bitmap gleich. Bei dem Icon für die Zustände beinhaltet eine Sprite-Instanz die gesamte Bitmap und zeigt nur einen festgelegten Ausschnitt an. Und es ist auch die Größe der Bitmap, die letztenendlich Probleme macht:


    http://webglstats.com/webgl2/parameter/MAX_TEXTURE_SIZE



    Es ist garantiert, dass ein IconSet, welches eine größere Höhe als 16384 (13-Bit) Pixel hat, im Kampfsystem nicht korrekt angezeigt wird. Die unterstütze Textur-Größe ist aber variabel und kann für Benutzer zu Benutzer unterschiedlich sein. Für Android-Export könnte eine größere Höhe als 4096 Pixel bereits ein Problem sein...


    Viele Plugins, die Icons verwenden, haben da vom Maker-Code der Zustände adaptiert und benutzen genau dieselbe Technik. Wodurch zum Beispiel YEP_IconsOnEvents oder MOG_TreasurePopup an genau demselben Problem leiden.


    Um das Problem zu umgehen müsste man also die Bitmap der Sprite-Instanz verkleinern, am besten nur den Ausschnitt des tatsächlich gebrauchten Icons als Bitmap mitgeben. Allerdings weiß ich (noch?) nicht inwiefern das möglich ist, ich wollte euch nur auf diese Problematik hinweisen.

  • Dieses Problem hatte ich tatsächlich auch mal. Bei mir war damals der Fehler das mein Iconset zu groß war. Ich weiß aber bis heute nicht wie man das Fixen kann.

  • 8192 Icons ist viel zu wenig Auswahl!

    Ich benötige mindestens das doppelte ^^


    Ja es ist ein ziemliches Luxus Problemchen.