Skip to content

マダミスの UX ​

マーダーミステリー(マダミス)は、5 人前後が同じ卓に着き、時間割で進行し、情報の非対称性そのものが遊びになるゲームです。普通のマルチプレイゲームとは求められる画面が違うので、機能が揃っていても卓が成立しないことがあります。

このページは、UZU 上でマダミスを作って実際に遊んだときに出た失敗をまとめたものです。作品ごとの題材や操作名には踏み込まず、どの作品でも共通して要るものだけを書いています。AI エージェントに一式を書かせるなら、このページごと読ませてください。

このページの位置づけ

run() の書き方・サーバー側の実装は 開発パターン と API リファレンス にあります。ここはそれを前提に、画面と進行だけを扱います。

0. 書き始める前に決める 5 つ ​

あとから変えると全フェーズ・全データに波及します。画面を描き始める前に確定させてください。

決めること中身変えたときに波及する先
人数と配役manifest.json の characters[] と、シナリオ側のロール定義ハンドアウト、投票、勝敗、席の割り当て
フェーズ列種別・順序・抜ける条件の一覧進行、タイマー、BGM、情報の解放時刻
常設 HUD に何を出すか同室者 / 発話状態 / 自分がどれか / 何の時間か / 進行役全フェーズの画面構成
進行役と、詰まったときの救済誰が進めるか、止まったとき誰が動かすか読み合わせ、議論、投票の締め
時間割各フェーズの制限時間と、そこで読ませる分量体験そのもの

フェーズ列は表 1 枚に落としておくと、そのままエージェントへの仕様書になります。

#id種別タイトル制限時間抜ける条件
1phase_introdialogueプレイ前の確認—読み合わせ完了
2phase_ho_1textハンドアウト読み込み25:00満了 or 全員
3phase_discussiondiscussion自由行動20:00満了 or 進行役
…

1. 見た目の意味を先に決める — 軸とチャンネル ​

マダミスの 1 画面には「押せる / 押せない」「済 / 未 / 新規」「自分のもの / 他人のもの」「いまの主役」が同時に載ります。装飾をその場で発明すると意味が衝突し、赤いラベルがボタンに見える、選択中のタブが確定ボタンに見える、といった読み違いが起きます。

伝えたいこと(軸)と、伝える手段(チャンネル)を先に 1 対 1 で対応させてください。 制約は 1 つだけ、同じチャンネルを 2 つの軸に使わないことです。これさえ守れば軸は自由に重ねられます。

軸値チャンネルの例
押せる / 押せない押せる / 読むだけ印(押せるものにだけ付く小さな記号)
状態未 / 済 / 新規 / 無効明度・彩度(立てる / 沈める)
帰属自分 / 他人 / 全体色相(自分だけ 1 色を占有)
目立ち主 / 副 / 地地の有無(1 画面に「主」は 1 つ)
熱従事中 / 緊急持続する赤
重なり名前付きの段z-index トークン(数値の直書き禁止)
読ませる / 拾わせる本文 / HUD書体
通知瞬間 / 滞留 / 常設寿命(§3)

マダミスで特に効くのは帰属と状態です。

  • 「自分」に 1 色を占有させる。 5 人が同時に画面へ出るので、いちばん遠くから効くチャンネル(色相)を「自分かどうか」に使い切ります。他キャラに色相は割り当てません — 誰かは顔と名前で分かります
  • ロールごとの accent 色を作らない。 5 人ぶんの色を足すと、必ず「自分」の色や「緊急」の赤と衝突します
  • 選択中に最強の装飾を使わない。 選択中は状態軸(明度で立てる)で表します。主アクションの装飾を流用すると、タブが確定ボタンに見えます
  • 押せなくなった要素を透明度で沈めない。 opacity は暗い地の上でしか成立せず、明るい背景の上ではそこだけ透けて印ごと消えます。落とすのは色です

新しい UI を足す前に、この 7 問に答えてください。答えられない問いが残っているなら、まだ仕様が決まっていません。

  1. 押せるか? 押せない状態があるなら、その姿も一緒に作る
  2. どんな状態を持つか? 未 / 済 / 新規 / 無効は明度で。位置・形・色相は変えない
  3. 誰のものか? 自分に付くなら帰属色。他人は色相を持たない
  4. 主か副か地か? 「主」は 1 画面に 1 つ
  5. 熱いか? 出しっぱなしの赤は「自分がいま従事している操作」か「緊急」だけ
  6. どの段に乗るか? 数値ではなく段の名前で答える
  7. 読ませるか拾わせるか? 長文を HUD 書体で組まない

押せる印と、押せる権限を一致させる ​

  • 権限が無い人に押せる見た目を出さない。押せる見た目の人は必ず押せる。 対で守ります
  • 「担当が離席しても止まらないよう、ホスト席は常に進められる」を残さない。 画面が「次は◯◯の番」と言っているのに誰でも進められると、表示と操作が矛盾します。救済は卓を外から動かせる席へ寄せ、その席が無いなら救済の条件を画面に書きます
  • 担当が居ない要素は、誰が操作するのかを先に決める。 「担当が居ないから全員が押せる」を放置すると、最初に押した人だけが進み、他は空振りします
  • 切替は押した先を動詞でラベルにする。 ON/OFF のランプより、次に何が起きるかの 1 語のほうが速く読めます

もう用のないものだけを「済み」にする ​

済んだものが押せる見た目のまま残ると、プレイヤーは何度も押して「壊れている」と判断します。沈めるときは、塗りを抜き・アニメーションを止め・色を落とす。位置と形は変えません(消さない・動かさない)。

逆に、まだ用がある要素を「済み」にしないこと。途中で閉じた会話がそのまま解決済みになると、進行不能の事故になります。

2. 卓の状況は常設 HUD が持つ ​

マダミスは 5 人がボイスで喋りながら進みます。「いま卓がどうなっているか」は、その都度どこかを開かなくても分かる必要があります。会話が途切れた 2 秒で確認したい情報を、パネルの奥に置かないでください。

出すもの出さないと何が起きるか
この場にいるのは誰かいま誰と喋れるのかが分からない。情報を出していいかの判断ができず、密談が成立しない
いま誰が喋っているか5 人の声が同じトラックに乗るので、声だけでは誰か特定できない。発言が重なると誰も譲らない
登場人物一覧と、自分はどれか初対面のキャラ名 5 つは覚えられない。自分の役すら 30 分は結び付かない
いま何の時間で、残りどれくらいか時間割で進むゲームなので、次に何が起きるかの予測ができない
いま誰が進行しているか行送り・発表順・投票の締めは誰かが動かさないと進まない。全員が「誰かが押すだろう」で止まる

誰がこの場にいるか ​

ボイスルームを分けて密談を作るなら、同席者の一覧は常設です。これが無いと「この情報を出していいか」が判断できません。

  • 枠は人数ぶん固定にして、居ない人のところは空枠を残します。人数で並びがずれると、位置で覚えられません
  • 操作ボタンの中にも対象を出すと強い。「これを押すと誰に届くのか」がボタンだけで読めます

誰が喋っているか ​

on('playersChanged') で各プレイヤーの audioStatus が届きます(PlayersChangedMessage)。値は speaking / listening / muted / unstable / null(未接続)の 5 つです。

  • speaking を立てるだけでなく、muted と null を区別できるようにします。「黙っている」のか「繋がっていない」のかで卓の対応が変わります
  • unstable は本人が気づけません。本人の画面にこそ出します
  • 表示は顔アイコンの上で完結させます。専用のパネルを開かせない

声の状態を全員へ配り直さない

audioStatus はプラットフォームからクライアントへ直接届きます。これをゲームの共有状態へ書き戻すと、5 人 × 発話のたびの更新が全員へ配信されます。描画専用のローカルな状態に持ってください。

自分はどれか ​

  • 「自分」を示す色を 1 つ決め、自分の枠・自分の番・自分の持ち物にだけ使います(§1 の帰属軸)
  • キャラ名は席番号より強い。 「PL1」では自分の卓の誰なのか結び付きません。ローザ(PL1) のようにキャラ名を主、席番号を従にします
  • 登場人物の一覧(名前・顔・肩書き)はいつでも開ける場所に。序盤は 1 分に 1 回開かれます

いま何の時間か / 誰が進行しているか ​

  • 札(常設)と幕(瞬間)は両方要ります。 札だけでは「いつ変わったか」が分からず、幕だけでは見逃した人が取り残されます
  • 札とタイマーは同じ場所に並べます。別々の隅に置くと視線が 2 往復します
  • そのフェーズのものでない残り時間を出さない。 「タイマーを持つフェーズを探して最初に見つかったものを使う」ようなフォールバックは、投票やチュートリアルに無関係な残り時間を出します。時間を持たないフェーズではカードごと出しません
  • 進行役はキャラ名で名指しします。「あなたが進めてください」を担当の画面にだけ出すのが確実です

置き場所を動かさない ​

参照パネルの入口・場所名・タイマー・同席者の列は、全フェーズで同じ座標に置いてください。フェーズごとに動かすと、位置で覚えられず毎回探すことになります。画面を占有する演出では、まとめて引っ込めて構いませんが、戻ってきたときは同じ場所にします。

3. 通知は寿命で形を選ぶ ​

見た目より先に「この情報はどれだけ残るべきか」を決めます。

寿命形用途
瞬間(自動で消える)トースト / フェーズの幕操作の結果報告、場が切り替わったこと
滞留(見るまで残る)印(未読・新規のバッジ)新しく配られたもの、まだ見ていないもの
常設(ずっと居る)札・ランプそれは通知ではなく状態。画面に置く
  • 消えて困る情報をトーストに載せない。 「新しい情報が配られました」をトーストだけで流すと、別のことをしていた人が取り残されます。印を残して滞留させます
  • トーストは 1 か所に積む。 複数の経路から別々の場所に出すと、中央で重なります
  • プレイヤーの語彙で書く。 内部 ID・開発文言・英字の飾りを出さない
  • 幕で視界を奪わない。暗幕で全画面を潰すと、対象が 10 個以上あるとき毎回数秒止まります。操作もブロックしないでください

失敗を黙らない ​

操作の結果は、成功も失敗も必ず出します。無反応は禁止です。 押せる印が付いた要素が無反応だと、印の語彙そのものが疑われます。

サーバーが弾く操作は、放っておくとプレイヤーの画面に何も出ません。次の順で守ります。

  1. 押す前に分かるようにする。 確認の時点で「できるかどうか」を見せる。コストの表示だけでは足りません
  2. それでも押されたら、その場で結果を返す。 送信せずクライアント側の判定でトーストを出し、文言はサーバー側と揃えます
  3. サーバー側の検証は必ず残す。 クライアント側は UX のため、正はサーバーです

4. フェーズ種別ごとの UX ​

マダミスはフェーズが線形に進むゲームで、種別ごとに求められる形が決まっています。作品ごとに題材も操作名も違いますが、下の型はどれにも当てはまります。

読み合わせ — 台本を全員で声に出す ​

進行が唯一の操作なので、「誰が読む番か」の解像度がそのまま体験の質になります。

  • 次に読む人を先に見せる。 1 つ前に分かれば声の準備ができます
  • 送りの合図は担当だけに出す。 全員に出すと誰が押すのか分からなくなります。待つ側に毎行「◯◯を待つ」と出すのも冗長です(上の表示が既に示している)。最初の 1 本だけは例外で、卓の誰が進行役かまだ共有できていないので待つ側にも名乗ります
  • タップは 2 段階にする。 1 回目は文字送りの全文表示(ローカル・全員できる)、2 回目で次へ(担当だけ)。読むのが速い人が待たされません
  • 担当の居ない行(ナレーション・NPC)は 1 人に固定する。 誰でも押せるままにすると、最初に押した人だけが進んで残りは空振りします
  • 現在の話者を立て、他は沈める。 立ち絵の縮尺は登場人数で変えます
  • 遡れるようにする。 聞き逃しは必ず起きます。先の行は見せない(現在行までで打ち切る)
  • 済んだ台本は、後から読める場所に配ります

ハンドアウト・配布物の読み込み — 各自が黙って読む ​

  • 時間は分量から決める。 「だいたい 2 分」で置かれがちですが、実際は足りません。文字数から見積もり、テストプレイで測って直します
  • 残量が見える形にする。 ページ送りにするか、進捗を出します。制限時間があるのに残りが見えないと配分ができません
  • 今回の新規を立て、初期フォーカスをそこに置く。 配布物は回を追うごとに累積します。これが無いと毎回全部読み直すことになります。時間を延ばす前にここを直すと、必要な延長幅が小さくなります
  • フェーズ名と配布物の名前を揃える。 語彙がずれると、いま何を読む時間なのか結び付きません
  • 読み終わった人のために、他の参照(地図・手元の情報・メモ)は開けたままにします

調査・自由行動 — 情報を取る ​

「次に何をすればいいか分からない」がいちばん出るフェーズです。取り方(場所を回る / 人物や物を調べる / 能力を使う)は作品によりますが、画面に常に出しておくものは同じです。

常に見えているもの無いと起きること
いま何を調べられるか総当たりになる
あと何回できるか使いどころの判断ができない
もう調べたか同じところを何度も押す
手元に何があるか何を持っているか思い出せない
誰が何をしたか5 人が同じ場所を重複して調べる
  • 入口は 1 つだけ、目立つところに置く。 端の小さいトグルにすると気づかれません。動き出したら定位置へ退かせます
  • 済みは沈める。消さない・動かさない(§1)
  • 打ち止めを明示する。 調べ尽くしたことが分からないと、居座り続けます
  • 「誰が何をしたか」は卓の会話になる。 重複の無駄が消えるだけでなく、「そこは私が見た」が発話を生みます
  • 移動がボイスルームの切り替えを伴うなら、出入りを通知します

情報の受け渡し — 誰に渡すか ​

マダミスの駆け引きそのものです。取れる操作は作品ごとに違いますが(全体公開 / 個別に見せる / 譲る / 押し付ける / 奪う)、手元にあるか、卓に出ているかの 2 状態はどの作品にもあります。

  • いま成立する操作だけを、同じ位置に出す。 全部を常に並べると、押す前に状況を確かめる必要が出ます
  • 宛先が要る操作だけ相手を選ばせる。 「その場の全員へ」で足りるなら宛先は不要です。相手選択はドロップダウンではなく顔と名前で並べ、初期選択は空にします
  • 誰に届くのかをボタンから読ませる。 対象を操作ボタンの中に出します
  • 取り返しのつかない操作は確定を分ける。 相手が決まるまで確定を押せなくします
  • 結果は卓に見える形で返す。 当事者だけに出すと、場で何が起きたのか共有されません
  • 成立しない状況では、ボタンを消さずに沈めて理由を添えます。位置は動かしません

回数制の操作 — 行動回数・能力・トークン ​

  • 名前と残数を常設 HUD に出す。 アイコンと数字だけでは何の数字か分かりません。ツールチップはタッチ端末で読めません
  • 何をどれだけ消費するのかを、操作の直前に見せる。 残数と一緒に並べます
  • 足りないときは押す前に分かるようにする。 実行してから弾くと §3 のとおり無反応になります
  • 消費する操作としない操作を画面で区別する。 ルール説明ではなく画面で伝わるようにします
  • 情報がスナップショットなら、いつ時点かを出す。 あとから変わることを UI が黙っていると誤解されます

議論・推理発表 — 時間が主役 ​

  • 残り時間を大きく出し、終盤は見た目を変える。 ここだけは計器を沈めない
  • 順番に回すなら、いま誰の番か・次は誰か・持ち時間の 3 つを出す
  • 全員で喋る場面ではボイスルームを分けません
  • 「誰が喋っているか」の表示がいちばん効くのがこのフェーズです

投票・開票 — 卓の結論 ​

  • 候補は顔と名前で並べる。 ID や席番号で選ばせない
  • 選択と確定を分ける。 取り消せるのかどうかを画面に書きます
  • 誰が提出済みかは出し、誰が誰に入れたかは開票まで出さない
  • 開票結果は止めて見せる。 そのまま次へ流すと、何が起きたのか分からないまま話が進みます
  • 同数のときどうするかを先に決めます。決めていないと当日に止まります

フェーズの抜け方 — 待っている人を放置しない ​

抜け方は 3 通りあり、フェーズの性格で選びます。

抜け方向く場面
全員が完了を押す読み合わせ、配布物の読み込み、投票
制限時間の満了議論、時間で区切りたい調査
進行役が進める自由度が高く、終わりが揃わない場面

どれを選んでも共通で必要なのは 2 つです。

  • 待っている人に「あと何人 / あと何分」を出す。 何を待っているのか分からない時間を作らない
  • 待ち時間に何もできない状態を作らない。 誤操作を防ぐ入力ガードをフェーズ単位で掛けると、先に終えた人まで固まります。少なくとも読み返しは開けるようにします

エンディング・解説 ​

  • 分岐したことが分かるようにします。どの結末に入ったのか本人たちが分からないまま終わることがあります
  • 解説は読み返せる場所に置きます。感想戦は解説を見ながら行われます
  • 終わったあと、卓に「終わった」と分かる画面を出します

5. 読ませる文字の設計 ​

マダミスは画面の大半が文字です。ここの粗さがそのまま体験の粗さになります。

症状直し方
本文にメリハリが無い本文は読ませる書体、HUD は拾わせる書体。強調はウェイト差で付ける
空行が潰れる原稿の空行を保持する。段落が繋がると一気に読みづらくなる
業界用語がそのまま出る「HO」は初見に伝わらない。プレイヤーに見える文言は「ハンドアウト」
立ち絵が本文を覆う縦横比の違う立ち絵を同じ枠で切り抜くと、キャラごとに写る位置が変わる。本文を隠さない配置に
台詞末尾の表記ゆれ方針を 1 行決めて一括で揃える。他のデータ変更と同じコミットに混ぜない
飾りの英字・内部カウントが出るプレイヤーに意味を伝えていない文字列は消す

台詞の話者は、表示名の文字列一致ではなく ID 参照にします。名前を変えた瞬間に全行が「話者不明」になる作りは、制作の後半で必ず踏みます。

6. 音とボイスチャット ​

密談はボイスルームの分割で作る ​

  • 同席者だけに聞こえてほしいフェーズでは changeRoom(部屋 ID)、全員で聞くフェーズでは changeRoom(null)
  • 出入りは通知を出す。誰がどこへ移ったか分からないと密談が成立しません
  • 通知にはプレイヤーの語彙(キャラ名・場所名)を使う。内部 ID をそのまま出さない
  • 発話・ミュートの見せ方は §2 を参照

テストは 1 人 1 アカウント・1 端末で

同じアカウントに 2 人がログインすると、UZU アプリは後から繋いだ端末を優先し、先の端末の通話を切ります。テストアカウントを共有すると、シナリオ側のバグに見える通話切断が起こります。

BGM の再生と停止は同じフェーズで対にする ​

停止条件だけ別のフェーズを指していると、その間のフェーズすべてで鳴り続けます。 再生を「A の開始」に置いたら、停止は「A の終了」に置きます。

SDK の BGM は 1 本だけ鳴る前提の API(playBgm() / 引数を取らない stopBgm())なので、止め忘れても次の playBgm() が置き換えてしまいます。BGM を持たないフェーズを挟んだときだけ露見する形で、気づきにくい種類のバグです。

7. 実機の画面 ​

マダミスは landscape 固定になりがちで、そこが最も検証の薄い場所になります。

  • レターボックスの計算を先にする。 16:9 のステージを中央に置くと、19.5:9 の端末では高さで頭打ちになり、左右は元から帯に吸われています
  • ノッチぶんは自分で空ける。 ホストは常に全画面で描きます。避けるのも帯の色を決めるのもゲーム側の仕事です。詳しくは SafeArea と HUD 回避
  • 見切れは実機の幅で出る。 dev harness の iframe と実機の landscape 幅は違います。中央寄せや最大幅が効いていないダイアログは、実機で左右が切れます
  • 横画面で先に足りなくなるのは高さです。 短辺 360px に対し、HUD とホームインジケータだけで約 2 割が消えます。文字サイズや余白を px 固定で書くと、画面が縮んでも中身が縮まず、下端のボタンが画面の外に出ます。「準備完了が押せないので卓が始まらない」はこれで起きます。寸法は舞台の高さに比例させ、基準サイズの一番小さいところで一度必ず見てください
  • 3D ビューを開閉のたびに作り直さない。 WebGL コンテキストごと作り直すと、ブラウザの同時コンテキスト上限(十数個)に当たり、ある時点から必ず失敗します
  • ピンチ拡大中に再レイアウトしない。 拡大中に段組やページ分割を計算し直すと、想定外の寸法を拾って画面が白くなります

8. アセット ​

  • 差し替えのたびに旧版が残ります。 「同じ名前のアセットが十数件あって、参照されているのは 1 件」は普通に起きます
  • 参照経路は 3 つあります。ID 参照だけを数えると、生きているファイルを消します
経路例
データからの ID 参照imageAssetId: 'asset_xxx'
データ内にパス直書き"./assets/xxxx.webp"
コード内にパス直書きCSS の background-image など
  • data URI をシナリオデータに埋めない。 1 枚で数 MB になり、そのファイルを触る全コミットの差分に乗り続けます
  • サイズの上限は 認証要件 を参照してください

9. リリースとバージョン ​

  • SDK と CLI は一緒に上げます。 uzu publish が申告するプロトコル版は CLI 側に埋まっているので、SDK だけ上げても publish 結果は古いままです
  • publish し直さないと、既存リビジョンの申告値は変わりません。 依存を上げたら再 publish してください
  • 破壊的変更が入ったときは、手持ちの作品をまとめて同じタイミングで揃えます。1 本だけ古いまま残ると、そこだけ動かなくなります
  • CI から publish するなら publish token を使います(開発・テストガイド)

10. テストプレイの回し方 ​

作者の手元で通ることと、5 人で遊べることは別です。

  1. uzu dev で全席を一度通す。 席ごとに見えるものが違うので、1 席だけ見ても分かりません
  2. 収まりを最小サイズで見る。 ウィンドウを狭めてグリッドに縮小表示が掛かると各ペインが下限の寸法で並ぶので、擬似ノッチを ON にしてそのまま見切れを確認できます。ウィンドウが広いままだとペインは下限より大きく、見切れを取りこぼします。縮小表示なので文字の大きさは判断できません。読めるかどうかまで見るなら、単体表示 (?player=N) のウィンドウを 基準サイズの一番小さいところに合わせます。下端のボタン(準備完了・投票の確定・次へ)まで見えていることを必ず確かめてください
  3. 実機で 1 回通す。 見切れ・タップ判定・SafeArea・通話は実機でしか出ません
  4. window.__uzu_dev で自動化する。 20 前後のフェーズを毎回手で通すのは続きません(Dev Hooks)
  5. プレイヤーの言葉をそのまま記録する。 「無反応だった」「押せると思った」「何の数字か分からない」「誰が喋っているか分からない」は、実装者からは絶対に出てこない指摘です

拾う順番

「進行不能」→「無反応」→「読めない・分からない」→「見た目」の順に潰すと、次のテストプレイで拾える情報の質が上がります。

11. エージェントに書かせるときのチェックリスト ​

一発のプロンプトで通すコツは、判断が要るところを先に埋めて渡すことです。

渡すもの ​

  • フェーズ表(# / id / 種別 / タイトル / 制限時間 / 抜ける条件)
  • ロール表(ID / 表示名 / 配布物の分量)。ID は manifest.json と同じ文字列
  • 常設 HUD に出すもの(同席者 / 発話 / 自分 / 時間 / 進行役)
  • 進行役の方針(誰が進めるか、詰まったとき誰が動かすか)
  • ボイスルームの割り当て(フェーズ → 部屋)
  • 軸とチャンネルの対応表(§1)を作品の配色で埋めたもの
  • このページと 開発パターン

生成後に必ず確認させること ​

画面

  • 全フェーズで「いま何の時間か」「残り時間」「同席者」「自分がどれか」が画面に出ている
  • 発話中・ミュート・未接続が顔アイコンだけで見分けられる
  • HUD の置き場所がフェーズ間で動かない
  • 制限時間を持たないフェーズにタイマーが出ない
  • プレイヤーに見える文字列に内部 ID・意味のない英字・デバッグ表示が無い
  • **基準サイズの一番小さいところで、どのフェーズも中身が画面外に出ない。**とくに下端の主ボタン(準備完了・投票の確定・次へ)と、道具や手札の列
  • 寸法が舞台の高さに比例して縮む(px 直書きが残っていない)

操作

  • 進行役がキャラ名で名指しされ、送りの合図が担当だけに出ている
  • 押せる見た目の要素が必ず押せて、できない操作は押す前に分かる
  • 弾かれた操作がプレイヤーへ伝わる(無反応が無い)
  • 済んだものが沈み、まだ使えるものが沈んでいない
  • 情報を渡す操作で「いま誰に届くのか」がボタンから読める

進行

  • 調査フェーズで「何を調べられるか / あと何回 / もう調べたか / 手元に何があるか」が常に見えている
  • 読み合わせのログを遡れて、先の行は見えない
  • 新しく配られたものに印が付き、初期フォーカスがそこにある
  • 待ちのあるフェーズで「あと何人 / あと何分」が出て、待っている間も読み返せる
  • 投票の開票結果が止まって見える

運用

  • BGM の再生と停止が同じフェーズで対になっている
  • 未使用アセットと、データ内の data URI がゼロ
  • uzu dev で全フェーズを通せる