ブラウザで人間を動かせた。次は10人置いたら何が起きる?

公開日 · 更新日 · 7 MIN READ · 理解の記録

RECORD / 2026

ブラウザの中で、人間を一人動かせた。すると、次に作りたい遊びが見えてきた。

走る。跳ぶ。箱へぶつかる。箱が動く。強く当たると壊れる。

下の実験を触ると、箱が動いた瞬間に「横に立つもう一人も、ついてきたら」と考えたくなるはずだ。

人間を走らせ、箱へぶつかってみる

下の「3Dを読み込んで動かす」を押すと、その場で3Dの実験が始まる。

まず、まっすぐ走る。次に、箱へぶつかる。箱が動いたら、ジャンプして越えてみる。

動画ではない。自分の操作で、その場の結果が変わる。

箱が別の箱へ当たっただろうか。横に立っている二人目も走ったら、この押された箱を避けられるだろうか。

3Dは、押すまで読み込みません。人と箱が動く場面を、自分で試せます。

大きな画面で試す

人間が動いた。箱も動いた。

次に考えたのは、技術の名前ではなかった。

立っている二人目も、つられて走り出したらどうなるんだろう。

箱が動くだけで、少しゲームになる

最初は人間を歩かせるだけだった。

そこへ物理を入れた。

箱へぶつかる。箱が押される。別の箱へ当たる。勢いが強ければ壊れる。

こちらが箱の動きを一つずつ決めたわけではない。衝突した結果が、その場で生まれている。

物理演算の面白さは、リアルさよりも少し予想外になることにあるのかもしれない。

さっき箱を押したとき、思った方向へ動かなかったなら、そのずれが遊びの種になる。

少ないルールから遊びが生まれていた

React Three Fiber公式のExamplesには、レーシング、ピンボール、宇宙ゲーム、Minecraft風ゲーム、Arkanoid、卓球などが並んでいる。

特に気になったのが「Arkanoid under 60 LOC」だった。

ボールが動く。壁で跳ね返る。ブロックへ当たる。

ルールは少ない。それでも遊びになる。

機能を増やすより、一つの現象を何度も触れる形にするほうが面白いのではないか。

人間を増やす前に、箱をもう一度押してみる。毎回同じように見えて、少しずつ違う。

人間を10人置いたら何が起きる?

次に置きたい人間は、強い戦士ではない。

パンツ一枚。武器なし。

できることも少ない。

走る。跳ぶ。転ぶ。

そんな人間を10人置く。

一人が走る。近くの人がついていく。さらに別の人も動く。

先頭が急に曲がる。後ろの人が曲がれずにぶつかる。一人が転ぶ。後ろも巻き込まれる。

全員転ぶ。

まだ、この10人は動いていない。Yukaも、追従も、転倒の連鎖も未実装だ。ここから先は次に試したい仮説になる。

でも、一人を実際に動かしたあとなら、10人が走り出す場面を少し想像できる。

人間の行動を人間へ伝染させたい

AIの人間を動かす候補としてYukaがある。

Yukaには追跡、逃走、経路移動、障害物回避、リーダーへの追従などが用意されている。

Flockingの実例は、次の3つを組み合わせて群れを作る。

  • 周囲と同じ方向へ進む
  • 仲間へ近づく
  • 近づきすぎたら離れる

これを鳥や魚ではなく、人間へ使ってみたい。

誰かが走ったらついていく。

誰かが止まったら集まる。

誰かが跳んだら真似する。

転ぶことまで伝染したら、たぶん面白い。

最初に足すルールは一つでいい。ついていく強さだけ変える。急に曲がると後ろが詰まる。それから転倒を足す。

動きを試してからゲームを見つける

最初からゲームの設計図を完成させるつもりはない。

人間を増やす。追いかける強さを変える。転びやすくする。障害物を一つ置く。

一つずつ動かす。

思わず笑った動きだけ残す。

ゲームを設計してから動かすのではなく、動かした結果からゲームを見つける。

人間を一人動かせた。

次は、立っている二人目を動かす。読んだ人が「なら、こうしたら」と思いつく場所を、そのまま残したい。

その二人が、意味もなく同じ方向へ走り始めるところを見てみたい。

実際に動かして分かった、困ったことと解決方法

人間が走り、箱が動くところまで作ると、動かす前には分からなかった問題が見えてきた。

処理が重すぎると、そもそも動かない

3Dの人間、物理演算、影、アニメーションを一度に動かすと、処理が重くなる。重くなりすぎると、動きが遅くなるのではなく、画面そのものが動かなくなる。

だから、動く画像や3Dをページ内で多用しないことにした。

この記事の3Dも、最初から読み込まない。「3Dを読み込んで動かす」を押したときだけ起動する。画面から離れて30秒たつと終了し、「停止して閉じる」を押せばstageごと隠れる。

実験が増えても、同時に動かすのは一つだけにする。

パーツに分けないと、デバッグに時間がかかる

人間、箱、壁、カメラ、操作を一つの塊として作ると、何かがおかしくなったときに原因が分からない。

人間の動きが悪いのか。箱の物理設定が悪いのか。カメラがずれているのか。全部を同時に疑うと、確認だけで時間がかかる。

そこで、人間、箱、壁、カメラを別のパーツとして考え、一つずつ動かして確認する開発環境にした。直す対象を一つに絞ると、デバッグが早くなる。

端まで行くと、パラレルワールドへ抜けてしまう

床の端まで走ると、そのまま世界の外へ抜けられた。画面だけが人間を追い続けるので、どこか別のパラレルワールドへ行ってしまったように見えた。

解決方法は単純で、世界の四方に壁を作った。

見た目だけの壁ではなく、物理的に通り抜けられない壁にする。これで端から落ちず、同じ場所の中で走り続けられるようになった。

箱は思ったより小さかった

箱だけを見ていると問題なくても、人間、床、カメラと一緒に置くと、思ったより小さく見えた。

3Dでは、物の大きさを単体で決めてもバランスが取れない。人間との比率、周囲の空間、カメラから見た大きさを一緒に確認する必要がある。

今回は箱を少し大きくし、現在は一辺1.08の大きさに調整した。正しい数値を探すというより、実際の画面で押したくなる大きさを探した。

現在の課題

いま、実際に操作していて困っている課題は特にない。

処理が重くなりすぎない。世界の端から落ちない。箱も周囲に合う大きさになった。人間を動かし、箱へぶつかるところまでは動いている。

10人の追従や転倒の連鎖はまだ作っていない。ただし、これは現在の不具合ではなく、次に試したい実験だ。

参照元

コメントを残す