【サイトについて】
* RPGツクールMVを使った、ゲームを一層楽しくするためのアイディアや、豆知識、プラグインなどを紹介していきます。あくまで個人の考えに基づく記事ですので、参考程度にお読みいただければ幸いです。
<< 用語辞典を作ろう! | main | 親切なチュートリアルを作るための3つの手法 >>
スポンサーサイト
0

    一定期間更新がないため広告を表示しています

    | - | |- |
    MV1.1.0→1.2.0 Javascript変更部分
    0
      RPGツクールMVのメジャーアップデートが公開されました。
      バージョンは1.1.0から1.2.0となります。

      Javascriptの差し替えが必要という事で、
      「差し替える事でプラグインが動かなくなるんじゃ…?」
      と心配されている方も多いかも知れません。
      それでは今回も実際にjsフォルダの中身がどのぐらい書き換わっているのか、確認してみました。


      ■main.js
      変更なし


      ■rpg_core.js
      4754行目に下記文追加
       
      TilingSprite.prototype.generateTilingTexture = function(arg) {
          PIXI.TilingSprite.prototype.generateTilingTexture.call(this, arg);
          // Purge from Pixi's Cache
          if (this.tilingTexture.canvasBuffer)
              PIXI.Texture.removeTextureFromCache(this.tilingTexture.canvasBuffer.canvas._pixiId);
      };

      これはリリースノートの[バグ対応]欄にある、タイルスプライトのメモリリークの修正でしょう。
      liplyさんが以前公開されたメモリリークパッチがそのまま入れられていますね。
      (この処理について、記事一番下に補足説明を記載)


      ■rpg_managers.js
      変更なし


      ■rpg_objects.js
      1091〜1095行目が少し書き換えられています。

      旧)バージョン1.1.0
      Game_Picture.prototype.updateRotation = function() {
          if (this._rotationSpeed > 0) {
              this._angle += this._rotationSpeed / 2;
          }
      };

      新)バージョン1.2.0
      Game_Picture.prototype.updateRotation = function() {
          if (this._rotationSpeed !== 0) {
              this._angle += this._rotationSpeed / 2;
          }
      };

      ピクチャの回転で、1.2.0において半時計回りの機能を追加した事による処理変更かと思います。

      ■rpg_scenes.js
      変更なし


      ■rpg_sprites.js
      1431行目 Sprite_Animation.prototype.updateCellSpriteの処理です。
      変更部分は一箇所ですが、切り所が難しいためちょっと長いですが丸ごと処理を貼り付けておきます。

      旧)バージョン1.1.0
      Sprite_Animation.prototype.updateCellSprite = function(sprite, cell) {
          var pattern = cell[0];
          if (pattern >= 0) {
              var sx = pattern % 5 * 192;
              var sy = Math.floor(pattern % 100 / 5) * 192;
              var mirror = this._mirror;
              sprite.bitmap = pattern < 100 ? this._bitmap1 : this._bitmap2;
              sprite.setFrame(sx, sy, 192, 192);
              sprite.x = cell[1];
              sprite.y = cell[2];
              if (this._mirror) {
                  sprite.x *= -1;
              }
              sprite.rotation = cell[4] * Math.PI / 180;
              sprite.scale.x = cell[3] / 100;
              if ((cell[5] && !mirror) || (!cell[5] && mirror)) {
                  sprite.scale.x *= -1;
              }
              sprite.scale.y = cell[3] / 100;
              sprite.opacity = cell[6];
              sprite.blendMode = cell[7];
              sprite.visible = this._target.visible;
          } else {
              sprite.visible = false;
          }
      };

      新)バージョン1.2.0
      Sprite_Animation.prototype.updateCellSprite = function(sprite, cell) {
          var pattern = cell[0];
          if (pattern >= 0) {
              var sx = pattern % 5 * 192;
              var sy = Math.floor(pattern % 100 / 5) * 192;
              var mirror = this._mirror;
              sprite.bitmap = pattern < 100 ? this._bitmap1 : this._bitmap2;
              sprite.setFrame(sx, sy, 192, 192);
              sprite.x = cell[1];
              sprite.y = cell[2];
              if (this._mirror) {
                  sprite.x *= -1;
              }
              sprite.rotation = cell[4] * Math.PI / 180;
              sprite.scale.x = cell[3] / 100;
              if ((cell[5] && !mirror) || (!cell[5] && mirror)) {
                  sprite.scale.x *= -1;
              }
              sprite.scale.y = cell[3] / 100;
              sprite.opacity = cell[6];
              sprite.blendMode = cell[7];
              sprite.visible = true;
          } else {
              sprite.visible = false;
          }
      };

      リリースノートにある「アニメーションのバグ修正:正しくないターゲットを隠す問題」がこれにあたります。
      (※追記 4/21 16:30修正。この箇所のみソースが新旧逆でした。申し訳無いです)

      Javascript修正箇所はおそらく以上です。
      rpg_core.jsのバージョン情報変数Utils.RPGMAKER_VERSION も 1.1.0のままでした。
      JSに関しては軽微な修正のみかも知れませんね。


      2016/04/22 22:30追記

      今回メモリリーク修正について、1.2.0へのバージョンアップ当初、
      イベント「遠景の変更」を入れたゲームをCanvasモードで開くと、以下の様なエラーが発生していました。



      この問題についてツクール開発部様に報告し、
      メモリリーク修正を以下の様に記述する事でCanvasモードでのエラー落ちを回避できる旨記事にしました所、
       
      (function(){
          var TilingSprite_prototype_generateTilingTexture = TilingSprite.prototype.generateTilingTexture;
          TilingSprite.prototype.generateTilingTexture = function(arg){
              TilingSprite_prototype_generateTilingTexture.call(this, arg);
              if (Graphics.isWebGL())
                  if (this.tilingTexture.canvasBuffer)    PIXI.Texture.removeTextureFromCache(this.tilingTexture.canvasBuffer.canvas._pixiId);
          }
      })();

      本日夕方新しく行われたアップデート(バージョン変わらず1.2.0)で、この私の案が採用された様です。
      つまり「Canvasモードの時はメモリリークパッチは反映しない」という事です。

      Canvasモードではメモリリークの影響はWebGLと比較すれば浅いのですが、完全では無いので、おそらくは当面の応急処置だと思います。pixi.jsが絡んでいる問題という事もあり、バージョン1.3.0までの繋ぎという形かも知れませんね。
      | RPGツクールMV技術情報 | 15:10 |- |
      スポンサーサイト
      0
        | - | 15:10 |- |
        PR