v1.45.0
2026-08-28リリース
自動生成したマップが重かった問題を直しました。地形が数百個並ぶ卓でも、なめらかに動きます。あわせて、暗闇での見え方を5点直しています。
⚡ 生成したマップが軽くなりました
これまでは、自動生成したダンジョンやフィールドを開くと、何も触っていなくても画面がカクつきました。コマをつかむと、指に遅れて引きずられるようについてきます。地形が多いほどひどくなり、広いダンジョンではまともに動かせないほどでした。
地形287個のヘクスダンジョンで、1秒あたり7.5回しか描き直せていなかったのが、60回になりました。地形の陰影を付ける方法を変えました。見た目は今までと同じです。
ひとつだけ、透けている部分を含む画像を壁や床のテクスチャに設定している場合、その透けた部分も暗く表示されるようになります。同梱のテクスチャはすべて不透明なので、標準の見た目は変わりません。
🔦 暗闇の見え方
暗闇を使っている卓は、明るさの出かたが変わります。 また、松明の向きと位置は生成したときに決まるので、すでにある卓を直すにはマップを作り直してください。
壁の松明が足元を照らします
壁に掛けた松明は、そばにある物を明るくするだけで、足元の床は真っ暗なままでした。松明の周りの床が照らされます。
自動生成のダンジョンでは、松明が部屋ではなく壁沿いを向いていました。壁から半マス浮いてもいました。いまは壁に付いた状態で、部屋の側の床を斜め下に照らします。
箱や壁の上に立ったコマが見えます
地形の上に立ったコマは、足元の地形に隠れて他のコマから見えませんでした。どれだけ近づいても、懐中電灯を正面から向けても見えないままでした。見えるようになりました。
高い所に登ったコマが下を見下ろせるのは、これまでどおりです。
明るさの変わり方がなめらかになりました
明るさが飛び飛びに切り替わっていました。松明のすぐ隣にある物だけが極端に明るく、一歩離れると急に暗くなるので、扉や岩が自分から光っているように見えていました。光源から離れるにつれて少しずつ暗くなるようにしました。
暗い床の上でブロックだけが明るくならなくなりました
壁に掛けた明かりの近くで、床は真っ暗なのに、そこに立っている壁や扉だけが明るい、という状態が起きていました。床と、その上に立っている物の明るさが揃います。
上に向けた光に光の筋が出ます
光源を上向きにすると、空中に伸びる光の筋が描かれませんでした。真上に向けても、水平に向けても描かれます。
🌫️ 環境エフェクト
毒沼や噴気孔などの環境エフェクトを、GMツールのオブジェクト一覧から探せるようになりました。これまでは卓に置けるのに一覧に出てこないため、名前を変えることも、消すこともできませんでした。
右クリックの「コピー」も直っています。これまでは選んでも何も起きませんでした。
開発者向け
🔧 重さを調べるパネル
URLに?stats=1を付けると、動作の重さを測るパネルが出ます。一度出すと、閉じるまで残ります。閉じている間は数を数える処理も止まるので、URLに付けたままにしても負荷にはなりません。
出る数字
| 行 | 意味 |
|---|---|
| Terrains / Table elements | 卓にある地形の数と、卓の中のDOM要素の総数 |
| Per terrain | 地形1個あたりの要素数。壁のある四角い地形で12前後 |
| Grid canvases | 地形が持っているグリッド用canvasの枚数 |
| Terrain updates / Table updates | 地形と卓のテンプレートが1秒間に組み直された回数 |
| Vision scenes / Memo misses | 視界の計算に使う場面データを作り直した回数と、キャッシュを外した回数 |
dirty:種別 | その場面データを作り直させた原因。dirty:characterならコマの移動 |
〜.ms | その処理に1秒間で使ったミリ秒。wlは壁の光、silは壁に映る影、brightは地形の明るさ、sceneは場面データの組み立て、overlayは暗闇の描画、gravityは重力、hitTestはドラッグ中の当たり判定 |
| FRAME MS | フレーム間隔の中央値・95パーセンタイル・最大値と、50msを超えたフレーム数(直近180フレーム中) |
| JAVASCRIPT | 1秒のうちJavaScriptが主スレッドを占有していたミリ秒と、50msを超えた処理の本数 |
切り分けの手順
- JAVASCRIPTのblockingを見ます。1秒あたり900ms前後なら処理側、ほぼ0なのにフレームが遅いなら描画側です。ここを取り違えると、いくら処理を削っても体感は変わりません。
- 処理側だった場合は、
〜.msの内訳で場所を特定します。内訳を合計してもフレーム時間に足りないなら、まだ測っていない経路で時間を使っています。その経路にperfTimed()を足して測り直してください。 - 描画側だった場合は、
layoutFlush.msを見ます。これはフレームの先頭で、保留になっていた配置の計算を片付けた時間です。大きければ配置の計算が、ほぼ0ならピクセルを塗る処理が原因です。 - 塗る処理が原因なら、量と単価を切り分けます。DevToolsのコンソールから地形の半分に
visibility: hiddenを掛けたときと、特定のCSSだけを外したときで、どちらがフレーム時間を戻すか比べてください。塗る量を半分にしても戻らないなら、1要素あたりの塗り方に原因があります。
過去の全変更や開発者向けの詳細は、GitHub ReleasesとCHANGELOGを参照してください。