ゲーム中のタイルサイズ変更

Alan

ユーザー
アプリケーション内では、タイルサイズの変更が可能になりましたが

ゲーム内のタイルサイズ変更は聞いた事が無いのですが
不可能なのでしょうか?
 
 はじめまして。
『RPGツクールMZ』ではデータベースの [システム2] からタイルサイズを変更することができますが、ゲーム中のタイルサイズ変更はサポートされていないですね。それらしきプラグインも特に見当たらないので、変更できるかどうか以下の環境で検証してみました。

RPGツクールMZ v1.10.0


 ツクールMZではどのようにタイルサイズを判別しているのか調べてみたところ、データベースで設定した値はコアスクリプトの rmmz_objects.js の中でグローバル変数として読み取っていました。以下のメソッドです。

JavaScript:
    // RPGツクールMZ v1.10.0 rmmz_objects.js
    Game_Map.prototype.tileWidth = function() {
        if ("tileSize" in $dataSystem) {
            return $dataSystem.tileSize;
        } else {
            return 48;
        }
    };
 $dataSystem.tileSize がデータベースでの設定値です。正確にはプロジェクトの data フォルダに格納されている System.json というファイルから値を引っ張っています。
 グローバル変数なので、手荒な方法ですが直接これに値を代入することでゲーム中のタイルサイズ変更が可能です。例えば以下の画像のようにイベントコマンドの [スクリプト] を使用します。

2026-06-10-01.png

 [スクリプト] が実行された時点でタイルサイズの判定が切り替わり、プレイヤーやイベントの位置が更新されます。

2026-06-10-02.png

 [スクリプト] のみだとこの画像のように描画されたマップはそのまま、タイルサイズの判定だけ変わってしまうので、[場所移動] などでマップの更新を行うことで、以下の画像のようにマップも変更したタイルサイズに合わせて描画されます。

2026-06-10-03.png

 タイルサイズの変更自体はできるものの、タイルセットから切り出す範囲も同様に変更されるため、これを応用したシステムを作る場合はタイルサイズ変更後のマップおよびタイルセットを用意しておくのが無難でしょうか。
 タイルサイズの変更処理は一瞬で終わるので [場所移動] のフェードは間に合わず、プレイヤーやイベントの配置が移動しているのが見えてしまうので、違和感なく画面を切り替える場合はイベントコマンドの [画面のフェードアウト] などを使って工夫する必要があります。
 また、この変更は一時的であり、ゲームの起動中は変更後の値で計算されるため、セーブデータのロードによって意図していないマップで変更後の描画が行われるリスクがあります。実装する場合はセーブ/ロードができないマップに限るのがよいでしょう。恒久的な変更を加える場合は System.json を書き換えるようなシステムを自作する必要があるかもしれません(未検証)。

 ついでと言っては何ですが、プラグインコマンドを利用した実装をする場合の例も作ってみました。

コード:
/*:ja
 * @target MZ
 * @plugindesc プラグインの説明。
 * @author プラグインの製作者。
 * @url http://
 * @help プラグインのヘルプ。
 *
 * @command ChangeTileSize
 * @text タイルサイズを変更
 * @desc タイルサイズを指定した値に変更します。
 *     @arg tileSize
 *     @text タイルサイズ
 *     @desc タイルサイズの設定値です。
 *     @default 48
 *     @type select
 *         @option 48×48
 *         @value 48
 *         @option 32×32
 *         @value 32
 *         @option 24×24
 *         @value 24
 *         @option 16×16
 *         @value 16
 *
 */
  
(() => {
    "use strict";

    PluginManager.registerCommand('Forum_ChangeTileSize', 'ChangeTileSize', args => {
        const newSize = Number(args.tileSize);
        $dataSystem.tileSize = newSize;
    });

})();
 上記を txt ファイルなどにコピペして拡張子変更で js ファイルにすればプラグインになります。データベースの [システム2] でサポートされている4つのタイルサイズのパターンが設定できます。

2026-06-10-04.png

▲プラグインコマンドの例。



 以上となります。よろしければお試しください。
 
返信、有難う御座います!
変更、出来るんですね~

あと、顔グラとアイコンがrmmz_managersで見つかりまして
こちらは違うみたいなのですが、同じように
変更などは出来るのでしょうか?
 
最後に編集:
あと、顔グラとアイコンがrmmz_managersで見つかりまして
こちらは違うみたいなのですが、同じように
変更などは出来るのでしょうか?
 こちらについてもグローバル変数の操作で一時的な対応ができます。
 タイルサイズ変更時の $dataSystem.tileSize のように、アイコンサイズであれば $dataSystem.iconSize へ、顔グラフィックであれば $dataSystem.faceSize へ任意の値を代入することによって、それぞれゲーム中にサイズの変更ができます。

 例として以下のコードをイベントコマンドの [スクリプト] で実行した結果の画像を貼っておきます。

JavaScript:
$dataSystem.iconSize = 16;
$dataSystem.faceSize = 72;

2026-06-12.png

▲顔グラフィックと装備のアイコンが指定した値で切り取られています。

 こちらもゲームを再起動するまでそれぞれのサイズが変更されたままなので、演出として利用する場合はご注意ください。
 
Back
トップ