v1.49.0
2026-09-07リリース
卓上ディスプレイ向け機能が入りました。大きな画面を水平に寝かせてテーブルの真ん中に置き、四方から囲んで遊ぶための機能です。中身は、真上からの平行投影、四方向から開くメニュー、コマ名の周回、画面端の詳細表示、外周ティッカー、そしてID-1規格のカードを物差しにした実寸表示です。あわせて、盤面の下と上を絵が流れる背景レイヤーも入りました。
盤面では、動かす前に道すじを決められるようになりました。ラウンドは陣営ごとに回せるようになり、マップエディターは絵だけでなく卓のはたらきを塗れるようになりました。
決めごとの置き場も変わっています。テーブルごとに入れ直していた設定が部屋設定パネルへ集まり、 FABメニューからは2項目がその中へ移りました。どれがどこへ動いたかは設定の引っ越し先にまとめてあります。
この版の柱2つはokamichi氏の仕事です
卓上ディスプレイ向け機能と背景レイヤーは、okamichi氏がフォークで設計・実装されたものです(→ クレジット)。本家に入れるにあたって、卓上ディスプレイの設定は置き場と保存先を変えました。機能そのものは、卓上ディスプレイもレイヤーも氏のものです。
🖥️ 卓上ディスプレイで卓を囲めます
使うにはまず、卓を真上から見る必要があります。FABメニューの視点アイコンで2Dを選ぶか、テーブル設定の推奨ビューを2Dにして視点を自動のままにしてください。ここに挙げた機能はどれも、真上から見ているあいだだけ効きます。
設定はその画面だけのものです
卓上ディスプレイの設定は、部屋設定のUIタブにある個人設定にまとまっています。誰でも変えられ、GM権限は要りません。変えてもほかの参加者には伝わりません。
画面を囲む使い方はオフラインの卓のものです。同じセッションに遠隔から入っている人まで一緒に2Dにされては困るので、卓上の画面で入れた設定は卓上の画面にだけ残ります。オンラインとオフラインが混ざるセッションでも、離れた席の見え方は変わりません。
機能ごとに独立した設定なので、メニューは四方向にするがコマ名は回さない、といった選び方ができます。まだ触っていない項目は、いま出ているテーブルの値が使われます。この画面の設定を消すを押すと、まとめてテーブルの値に戻ります。
メニューが自分の側から開きます
2D表示で右クリック(長押し)すると、押した位置の上下左右に4つのハンバーガーアイコンが出ます。自分の側にあるアイコンを選べば、自分から読める向きでメニューが開きます。そこから開いたウィンドウも同じ向きを引き継ぎます。
回転メニュー表示を入れると、アイコンの代わりに項目そのものが時計回りに回ります。手元へ回ってきたところで押す、という操作です。速度は1〜24°/秒(初期値5°/秒)で、開いたまま右クリックすると 1項目ぶん先送りできます。
コマが密集して押しにくいときは、コマから右ドラッグして空いた場所で離してください。離した場所を中心に同じメニューが開きます。どのコマのものかは、メニューとコマを結ぶ点線で分かります。
コマ名とリソースが台座の外周を回ります
四方に座ると、こちらを向いているコマは向かいの席から逆さに見えます。コマ名を円周に沿って周回を入れると、コマ名が台座の縁に沿って曲がり、ゆっくり回ります。コマ画像と台座も一緒に回るので、四方のどこに座っていても、いつかは自分の側へ正面が来ます。
回り方は連続回転・90°ごとに止まる・コマだけ止まるの3つです。一周の時間はコマ名が1〜120秒(初期値12秒)、コマ本体が5〜300秒(初期値60秒)です。全部のコマが同時に同じ方向を向いてしまわないよう、開始角はコマごとにずらしてあります。
リソースバフ回転表示を足すと、横長のHPバーが台座の外周へ移ります。最大4件を扇形に分け、残量のぶんだけ色が付きます。数値は出ません。バフはアイコンだけを、その外側へ並べます。
詳細を画面の端に出せます
コマにポインタを乗せると出る詳細を、画面の端に4方向表示へ切り替えられます。同じ内容が四辺に同時に出て、それぞれの辺に座った人から読める向きになります。画面の長辺が短辺の1.5倍を超えると、長い2辺には2枚ずつ置くので、合わせて6枚になります。
端に出したものは読むだけで、値の変更もドラッグもできません。ポインタの真下に来た1枚だけは、手元のコマを隠さないよう、ポインタが離れるまで消えます。
発言を画面の外周へ流せます
外周ティッカーを表示を入れると、チャットの入力欄で色設定の隣にティッカーボタンが出ます。このボタンを入れたまま投稿した発言が、画面の四辺を時計回りに一周します。文字の上側は常に画面の中央を向くので、どの席からも読めます。速度は20〜240 px/秒(初期値55 px/秒)です。
専用のタブはありません。普通のタブで普通に話しながら、外へ出したい行だけボタンを入れて送ります。チャットパレットからの発言でも同じボタンが効きます。すでに投稿してある公開メッセージも、操作列のティッカーアイコンから流せます。
流すのは送り手、映すかどうかは受け手
流すという指示は全参加者へ届きますが、表示するかどうかはその画面の設定です。ティッカーを切っている画面には何も流れません。ボタンが出るのも卓を真上から見ているあいだだけで、遠近表示の席には帯そのものがないので、ボタンも出しません。
カットインを四席ぶん同時に出せます
カットイン一覧のカットインの多方向表示で、同じカットインを卓の各席へ同時に出せます。上下の 2枚、上下に左右のどちらかを足した3枚、四方向の4枚から選びます。カットインそのものの設定は触りません。音が重ならないよう、鳴らすのは下向きの1面だけです。
1マスを実寸で描きます
ミニチュアを画面へ直接置いて遊ぶなら、卓の1マスは画面の上でも本物の寸法でなければなりません。ブラウザは1ピクセルが何ミリかを知らないので、大きさが国際規格で決まっているカードを物差しに使います。ISO/IEC 7810のID-1は85.60 × 53.98mmです。クレジットカードでも免許証でも保険証でも同じ大きさです。
部屋設定のユーティリティから実寸再調整を開き、カードを画面に当てて破線の枠を合わせ、合ったを押すだけです。カードの番号や名義を読み取ることも、どこかへ送ることもありません。
合わせると実寸表示とビュー固定が同時に入り、盤面のパンとズームが止まります。指が触れて縮尺が狂えば、置いてあるミニチュアの意味がなくなるからです。1マスを何ミリで見せるかは、個人設定の 1マスの実寸(初期値25.4mm = 1インチ)で変えられます。この値を変えると、盤面はその場で新しい縮尺へ合わせ直します。
測った値はそのセッション限りで捨てます。別のディスプレイへ移した時点で合わなくなる数字なので、書き留めません。1マスの実寸だけはこの画面に残りますが、これも部屋へは配りません。手順は部屋設定にあります。
🌥️ レイヤーが盤面の下と上を流れます
テーブルにレイヤーが入りました。テーブル画像の下、または上を流れる画像です。飛空艇の下で雲が流れ、その下をさらに地面が別の速さで流れる、といった重ね方ができます。背面と前面を合わせて6枚まで置けます。
テーブル設定のレイヤーで1枚ずつ足します。画像を選び、横と縦の速さを1秒あたりのピクセルで決め、不透明度と拡大率を合わせるだけです。画像は上下左右に敷き詰められ、ちょうど1枚ぶん流れたところで元へ戻るので、継ぎ目は見えません。設定の一覧はテーブル設定を見てください。
背面はテーブル画像の下を流れるので、透過した画像をテーブルに敷いておく必要があります。前面が流れるのは、テーブル画像とグリッドの上、コマの下です。
レイヤーはテーブルのものなので、部屋の全員に同じ空が見えます。同期しないのは、いまどこまで流れたかだけです。数える人はいないので、そこはそれぞれのブラウザに任せてあります。FABメニューのエフェクトで演出を止めれば、レイヤーも止まります。
👣 戦略シミュレーションのような移動ができるように
コマを右クリック(長押し)して移動を選ぶと、持ち上げる代わりに移動の計画が開きます。コマはその場に立ったまま、ポインタまでいちばん安い道すじが線で伸びていきます。クリックでそこまで歩き、Escでやめます。Shiftを押しながら掴むのでも同じものが開きます。
途中で右クリック(指なら長押し)した場所は、曲がり角として残ります。いちばん安い道は壁の右を回るけれど左から行きたい、というときのためのものです。決めたぶんは濃い色に変わり、残りの移動力で行ける範囲が引き直されます。同じ場所をもう一度押せば、最後に置いた曲がり角だけ取り消せます。
厳密な移動
部屋設定の移動に厳密な移動が入りました。これを入れると、プレイヤーはコマを掴んだだけでシミュレーション移動ができます。掴んで運んで置く、という動かし方はなくなり、線を引いてから歩かせる1通りになります。
この規則を外せるのはGMだけです
GMがShiftを押しながら掴むと、線を引かずにそのまま運べます。壁の向こうへ置く、落とし穴から引き上げる、といった卓の外からの操作のためのものです。プレイヤーの側には抜け道を用意していません。誰でもキーひとつで抜けられる規則は、規則として働かないからです。
組み立てている様子は部屋の全員に見えます。 誰がどのコマをどう動かそうとしているかが各画面に出ます。卓が待っている操作だからです。他の人の移動範囲は破線、道すじは自分のものより細い線なので、自分の分と取り違えません。移動を終えるかやめると消えます。
送っているのはコマと道すじだけで、移動範囲そのものは送りません。移動範囲は見えている敵によって形が変わるので、そのまま配ると、範囲のへこみから見えていない敵の位置が伝わってしまいます。各画面が自分に見えているものだけで引き直します。霧や暗闇に隠れているコマの計画は、そもそも描きません。操作の一覧は移動範囲にあります。
⚔️ ラウンドを陣営ごとに回せます
部屋設定の戦闘で、進行のしかたに陣営ごと(フェイズ制) が加わりました。味方が全員動いてから敵が全員動く、スーパーロボット大戦のような進み方です。
陣営を別に作る必要はありません。すでに編成してあるパーティが、そのまま1つの陣営になります。どのパーティにも入っていないコマは「無所属」に集まります。回る順は矢印で入れ替えます。
フェイズの中は自由か並び順どおりかを選べます。自由なら手番は自動では渡りません。動かしたいコマをクリックした人が、そのフェイズの手番を取ります。行動順ウィジェットとインベントリの一覧も陣営ごとに区切られ、いまどの陣営のフェイズかが見出しに出ます。
戦闘中にパーティが増えても順番は固まりません。書き留めるのは矢印を押したときだけで、新しいパーティはそのまま末尾に加わります。項目の意味は部屋設定、卓での回し方は行動順にあります。
🏠 卓の決めごとが部屋のものになりました
FABメニューに部屋設定が増えました。移動範囲、ZOC、1マスの距離、コマの向きの示し方。テーブルを1枚増やすたびに入れ直していた決めごとが、ここにまとまります。もともと部屋のものだった既定のダイスボットも、テーブル設定から移してここへ置きました。テーブル設定の下には部屋設定を開くボタンを置いたので、探しに行った先から飛べます。
移す作業は要りません。この部屋でまだ決めていない項目は、テーブル側の設定がそのまま使われます。以前から使っている部屋を新しい版で開いても、このパネルを触らないかぎり挙動は変わりません。
いまどちらが決めているかは、移動範囲とZOCの欄の上に出ます。テーブルのものなら「いまはテーブルごとの設定です。ここで変えると部屋全体の設定になります」、一度この画面で決めたあとは「部屋全体の設定です。どのテーブルを出しても同じルールになります」に変わります。
テーブルごとへ戻す操作はありません
一度この画面で決めた項目は、以後その部屋の決めごとになります。テーブルごとの値へ戻すボタンは用意していません。卓を増やすたびに入れ直す手間をなくすための移動なので、戻り道は作らない、という判断です。
タブは6枚です。一般(ダイスボット)、戦闘(ラウンドの進行)、移動(移動範囲・ZOC・厳密な移動)、UI(コマの向きと卓上ディスプレイ)、自動保存、ユーティリティ(画面の実測とキャラクター取り込み)です。変えられるのはGMだけです。ただし、UIタブの個人設定と、ユーティリティタブの画面まわりは誰でも触れます。この2つはその画面のためのものだからです。
🗂️ 設定の引っ越し先
分け方はこうなりました。どの卓でも同じであってほしい決めごとは部屋設定へ、卓ごとに違ってよいものはテーブル設定へ。 テーブル設定に残っているのは、その1枚の卓に属するものだけです。盤面の大きさ、床とグリッド、壁と天井、暗闇と霧、そして新しく入ったレイヤー。
前の版から場所が変わったものは、この9件です。
| 設定・機能 | v1.48.0まで | v1.49.0 |
|---|---|---|
| 既定のダイスボット | テーブル設定 | 部屋設定 › 一般 |
| 移動範囲の表示・斜め移動・コマの重なり | テーブル設定 | 部屋設定 › 移動 |
| 1マスの距離とその単位 | テーブル設定 | 部屋設定 › 移動 |
| ZOC(広さ・常時表示・余分な移動コスト) | テーブル設定 | 部屋設定 › 移動 |
| コマの向きの示し方 | テーブル設定 | 部屋設定 › UI › 共通設定 |
| コマ画像を常にカメラへ向ける | テーブル設定 | 部屋設定 › UI › 共通設定 |
| キャラクターの取り込み | FABメニュー | 部屋設定 › ユーティリティ |
| 自動保存 / 復元 | FABメニュー | 部屋設定 › 自動保存 |
| 立入禁止ブラシ | GMツールバーで直接塗る | GMツールバー(押すとマップエディターが開く) |
この版で増えた設定は、次の場所にあります。
| 設定・機能 | 置き場 |
|---|---|
| 厳密な移動 | 部屋設定 › 移動 |
| ラウンドの進行・陣営の順番 | 部屋設定 › 戦闘 |
| 卓上ディスプレイ一式(メニュー・周回・ティッカー等) | 部屋設定 › UI › 個人設定 |
| 1マスの実寸 | 部屋設定 › UI › 個人設定 |
| 画面の実測(実寸再調整) | 部屋設定 › ユーティリティ |
| オンライン / オフラインの切り替え | 接続情報パネル |
FABメニューの並びも、押す場面の順に変わりました。上から「誰がいるか」「何を話しているか」「部屋と卓」「卓に出すもの」「出し入れするもの」の順です。キャラクターの取り込みと自動保存がメニューから消えたのは、どちらも遊びはじめる前後に一度使うもので、卓を囲んでいる最中に押すものではないからです。ボタンそのものの置き場所も変えられるようになりました(→ そのほかの変更)。
🧱 マップエディターが卓のはたらきを塗れます
これまでマップエディターが作れたのは床の絵だけでした。機能塗りは、絵ではなく卓のはたらきを塗るツールです。塗れるのは立入禁止・地形(壁)・マップマスクの3種類で、種類ごとに別のレイヤーへ溜まります。壁を消しても、同じマスの立入禁止は残ります。それぞれの塗り方はマップエディターにまとめました。
地形塗りで置かれるのは地形オブジェクトそのものです。壁の高さ、視線と光を遮るか、6面ぶんのテクスチャまで、手で置く地形とできることは変わりません。テクスチャの枠が8つあるのは、面ごとの6枠に加えて、指定のない面に使う「壁」「床」の既定が並ぶためです。パレットにはランダムダンジョンが使っている切石積みやレンガ壁、洞窟の岩肌があり、自分の画像も足せます。北面だけ壁画にする、といった塗り分けもできます。
10マス塗れば、1マスの地形が10個ではなく、10マス分の地形が1つ置かれます。卓が描くものも、光を計算する対象も、それだけ減ります。同じマスを2枚のレイヤーが覆えば、2枚目は1枚目の上に載って 2階建てになります。ヘクスの卓では1マスごとに1つ置きます。ヘクスの地形は花びらのように描かれるので、1つの塊にすると塗ったはずのマスが空くためです。
テーブルを取り込むで、いま出ているテーブルをエディターへ読み込めるようにもなりました。床画像はロックした画像レイヤーとして最背面に入り、地形・マスク・立入禁止は見た目ごとのレイヤーへ分かれます。回した地形も扉もスロープも、取り込んだレイヤーのブロックが丸ごと覚えているので、触らずに反映すれば同じものが戻ります。
反映は2通りです。テーブル背景に設定はこれまでどおり、床画像ごと焼いて反映します。機能だけ反映は床画像に触らず、塗った3種類だけを置きます。すでにある地図へ立入禁止を足したいだけのときに、床を焼き直さずに済むので、画質も落ちません。
GMツールバーの立入禁止ボタンは、卓へ直接塗るのをやめました。押すとマップエディターが立入禁止のブラシを持った状態で開きます。まだ何も描いていないシーンなら、いまのテーブルを読み込んでから開きます。
🔌 接続情報からオフラインへ切り替えられます
接続情報パネルの上部が、オンライン / オフラインの切り替えになりました。オフラインを選ぶと、 SkyWayにもバックエンドにもつながらず、そのブラウザだけで動きます。ひとりで盤面を組む、卓を囲む画面で自分たちだけ遊ぶ、といった使い方のためのものです。
切り替えると再読み込みします。オンラインから移るときは部屋を抜けることになるので、確認が出ます。オフラインのあいだは、部屋名・招待リンク・参加者の一覧といった通信に関わる項目そのものが消えます。部屋の保存と読み込みはそのまま使えます。
⚡ 最初の読み込みが軽くなりました
四方向メニュー・外周ティッカー・ノベルモードの画面を、要るまで読み込まないようにしました。どれも使う人だけのものなので、全員に配る理由がありませんでした。四方向メニューは初めて開くときに読み、残る2つは条件が立つまで待ちます。初期バンドルは2.76 MB、転送量にすると614 kBです(3.1 MBを超えると警告、3.5 MBを超えるとビルドが止まる決まりにしてあります)。
🪟 そのほかの変更
メニューのボタンを好きな場所へ置けます。 左上に固定されていたFABが、時計やホットバーと同じウィジェットになりました。ドラッグした場所を覚え、引き出しは窓の空いている側へ開きます。下半分に置けば上へ、右半分に置けば左へ。項目の名前も引き出しの外側へ書かれます。窓の大きさを変えたときも、開く向きを測り直します。
スマートフォンからも視点を切り替えられます。 シートの一番下に、FABと同じ自動 / 3D / 2Dの切り替えが並びます。
ホットバーの枠から、コマの見た目を変えられます。 コマ画像・立ち絵・大きさの番号を指定でき、空欄の項目はそのままです。マルチアクションでエフェクトと並べれば、効果音と光と同時に姿が変わる演出が1押しになります。
エフェクトの照準を、コマのメニューから掛けられます。 これまではAlt + クリックだけだったので、キーのない画面からは手が出ませんでした。掛かっているかどうかはチェックで分かり、解除は掛かっているあいだだけ出ます。キー操作はこれまでどおりです。
テクスチャを指定しない地形が、透明な壁になりました。 これまでは白いブロックが地図の真ん中に立っていました。壁としてのはたらきはそのままで、卓に見えるのはGM向けの枠だけです。見えない仕切りを作るのに使えます。
インベントリの簡易表示で、値の欄が見出しの下に揃いました。 項目の種類によって幅も揃え方も違っていたものを、中央揃えの同じ幅にしています。
マップエディターで塗り替えた材質が、Ctrl+Zで1手ぶんだけ戻ります。 これまでは塗り替えが取り消しの履歴に残らず、1回のCtrl+Zが塗りごと巻き戻していました。
🐛 主な修正
暗闇と霧のまわりで、建物の扱いを直しました。
- 建物の上に立ったコマの足元で、霧が晴れませんでした。壁のマスは「開いた側」から判定していたため、屋根の上に立つと自分の足元がどの側からも塞がって見えていました
- 地形の上に置いた光源が、その屋根を照らしませんでした。光の届く距離を床まで下ろしてから測っていたので、屋根へ上がったぶんが往復で差し引かれていました
- 霧がかかった地形を、霧の色で塗り潰していました。上から見ると霧の海から四角い塊が生えている状態で、塊の形を見れば「そこに壁がある」と分かってしまっていました。いまは塗るのをやめ、マスごとに薄れながら消えます
- テーブルからはみ出した地形が、灰色に潰れていました。盤の外のマスにも霧の記録を尋ねていたためです
- 暗い卓で、建物の面が黒く沈んでいました。テーブルに設定した影の色ではなく黒で暗くしていたためです
そのほかは、前の版から持ち越していたものです。この版で入った機能の中で見つけて直したものは、ここには挙げていません。
- 読めない属性を持つ部屋が丸ごと開けなくなっていたのを直しました。数値や真偽値の欄が空のままだと、その項目だけでなくオブジェクトごと失われていました
- 真上から見ている卓で、地形を回せなかったのを直しました
- 日本語のダイアログが、単語の途中で改行されることがあったのを直しました
- SkyWayが鍵を受け付けない、といった種類のエラーで、再接続が上限なく繰り返されていたのを直しました。同じ2行がチャットを埋め、繰り返す再接続そのものが通信を生んでいました
🙏 クレジット
卓上ディスプレイとレイヤーは、okamichi氏の仕事です。 画面を寝かせて四方から囲む、というこの版の柱そのものです。四方向メニュー、コマ名とリソースの周回、画面端の詳細表示、外周ティッカー、多方向カットイン、実寸表示、そして流れるレイヤー。フォークでの49コミットを、著者名もハッシュも保ったまま取り込んでいます。
開発者向け
決めごとの解決順
部屋の決めごとはresolveRoomRules(room, table)が、部屋の答え → テーブルの値 → 既定値の順に落とします。部屋側は「まだ答えていない」を空文字で表すため、真偽値は'1' / '0'、数値は-1を番兵にしています。古い部屋や古いテーブルでは部屋側の項目が「まだ答えていない」になるので、テーブル側の値が読まれます。
画面ごとの設定も同じ形です。TabletopDisplaySettingsの16項目を resolveTabletopDisplay(table, own)が解決し、この画面がlocalStorageに持っているぶんを、テーブルが持っているぶんの上に重ねます。書くのはその画面だけで、部屋へも卓へも配りません。フォーク版が卓へ書いた値は、この画面でまだ設定していない項目の答えとして読まれます。
流れるレイヤー
TableBackgroundLayerはGameTableの子として同期する@SyncObjectです。持たせてあるのは画像・速さ・不透明度・拡大率・重ね位置だけで、いまどこまで流れたかはCSSのアニメーションなので送りません。この別名を知らない版のピアは、ObjectFactoryがnullを返すので、そのノードだけを読み飛ばします。
描画は1層につき合成面ひとつです。横の流れはtransform、縦の流れはtranslateと別のプロパティに分けてあるので、斜めに流れる層でも箱はひとつで足ります。タイルは盤面より大きくは敷きません。流れる軸には必ずタイル1枚ぶんの余白が要るので、抑えないと4000pxの画像を10倍にしたときシートが 40000pxに伸びます。見えるのは盤面ぶんだけなのに、ブラウザはその大きさの合成面を抱えることになります。 1周は0.05秒より速くは回しません。不透明度を0にした層と、画像のない層は、そもそもDOMに出しません。
機能塗りのブロック化
塗ったマスは、左上から順に「そのつど入る限りいちばん広い矩形を取る」形で地形へまとめます。同じ塗りからは必ず同じ形が出るので、反映を繰り返しても壁が建て直されません。取り込みでは逆をたどり、積み上がった壁は下のぶんを引いた高さでレイヤーへ入ります。ヘクスの盤ではまとめず、1マスにつき1ブロックを置きます。
屋根の光と霧
地形の天面は、それが立っている高さの面として読みます。terrainFogCover(terrain, planeZ)と objectBrightnessFor(..., pz)に面の高さを渡し、視線をふさぐマスの高さをblockingTopsとして持たせて、目線がその上にあるかを判定します。屋根を照らすのは、その読み手から見えている光源だけです。
属性の読み込み
ObjectSerializer.parseAttributesは、文字列でない欄をJSON.parseで読みます。空の属性で例外が出るとオブジェクトごと失われていたので、読めなかった欄だけ既定へ落とすようにしました。
過去の全変更や開発者向けの詳細は、GitHub ReleasesとCHANGELOGを参照してください。