Waystone

夕暮れの山道で、道を示すのに十分な高さのケルンを積み上げる。この積み上げには何も偽りがない:各石はBlenderで彫刻されたメッシュで、その凸包そのものがコライダーとなっており、ケルンが立つか崩れるかは接触摩擦、質量、慣性のみで決まる。3個積むごとに風が強まる——幅広く平らな石版はそれをものともしないが、細長い柱はそうはいかない。

今すぐプレイ

矢印キー / WASDでケルンの上の石をスライドさせる · Q / Eで回転 · SPACEで下ろす · Pで一時停止 · Mでモーション低減。8個の石が立てば成功;3個失えば明かりが消える。

▶ プレイ

コンセプトこそが契約

この作品を制作した日、プラットフォームのコンセプト画像サービスはクレジット切れだったため、コンセプトパックは代わりにラボ内で制作された:最終的なアートが存在する前にレンダリングされた、作品が約束するすべてのシルエットの粘土マケット、そしてhex値とアートフェーズが満たすべきマテリアルおよびライティングのルールを記したパレットが添えられている。これはそれでも一つの契約であり——完成した石はシルエットごとにこれと照合して監査された。

Waystoneのコンセプトボード
制作されたコンセプトボード:粘土マケット、パレットのhex値、マテリアルとライトのルール
エンジン上で稼働するWaystone
実際の花崗岩と実際のシャドウマップの下、エンジン上で稼働する同じケルン

アート適用前のグレーボックス

ループ全体はまずプリミティブで実行された:ホイスト、落下、安定テスト、風、石ロストルール、リスタート。ラウンド2はスクリーンショットでは見つけられない実際のバグを発見した——突風が placed % 3 テスト中に発火し、突風は石を配置しないため、ターンループが同じ突風を永遠に再トリガーし続けたのだ。ホイストがフレーム上部からはみ出してホバリングしていることと、カメラが低すぎることも判明した。石を一つも彫刻する前に、この3つ全てが修正された。

ブロックアウトのプリミティブ
ブロックアウト:台座と石をボックスと円柱として表現——物理演算はすでに本物の物理演算
アートを適用した同じケルン
Blenderの花崗岩を適用した同じケルン

彫刻、削り出し、ベイク

各waystoneは重なり合うプリミティブを融合し、ボクセルでリメッシュした後、2層のノイズで変位を加え、平面デシメーションによって表面がブロブに溶け込むのではなく、彫り込まれたファセットに割れるようにしている。そのハイポリの彫刻はローポリのハルへとベイクダウンされる——ノーマル、アンビエントオクルージョン、ベースカラー——そしてコケは表面の法線にゲートされたノイズマスクによって駆動され、セージ色と錆色は上向きの面にのみ生え、石が接地する面には決して生えない。

waystoneのターンテーブル、各4アングル
6個のwaystone、各4アングル、ベイク直後の状態

コライダーは石そのもの

ボックスコライダーを持つ彫刻された石は、近道ではなく欠陥クラスだ:スタックはプレイヤーには見えないジオメトリの上でバランスを取ることになってしまう。ここでは全ての石の ConvexPolygonShape3D はロード時に自身のベイク済みメッシュから生成され、エンジンのスタック計算——高さの読み取り、ホイストのホバー位置、重心の傾き——は全て 計測済み Blenderビルドが書き出したハーフエクステントを使用しており、ゲームに打ち込まれた数値ではない。

傾いたケルン
6個の石を積んで傾いた状態——プラムゲージが接触の実際の状況を示している
突風
突風:全ての石に対する実際のインパルス、質量とその高さに応じてスケーリングされる

風についてのゲーム、しかし風のノイズは一切ない

この作品を制作した日、プラットフォームはループするアンビエントノイズベッドを禁止した。敵役が天候であるゲームにとっては都合の悪い決定だ。そのためここでの風は決して録音ではない:突風は作曲されており——トレモロ弦の高まりがティンパニとホルンの一撃へと解決する——そして視覚的に示される:横に吹き飛ばされる草や砂粒、HUD内の方向を示す矢印として。夕暮れの雰囲気は、ハープのフレーズの下に流れるゆっくりとしたコントラバスとビオラのドローンだ。それ以外の音はすべてプレイヤーが今引き起こしたイベントである。

誠実に計測

このホストのソフトウェアレンダラー上でPlaywrightにより監査——GPUなし、しかも当時は他の4つのラボのBlenderジョブが同時実行されているマシン。以下のフレームレートは最低値だ。

測定
エクスポートペイロード(pck)6.41 MB
エンジンランタイム(wasm、固定)33.7 MB
ペイロード内の制作アート11.48 MB
オーディオステム0.45 MB
ブロックアウトのラウンド数6回——r2は永遠に再発火し続ける突風を捉えた;r5は50分間に104回の完全な夜を再生し、毎回石5個目で崩壊した
アート監査のラウンド数9 - r8クリア、r9確認中
彫刻・ベイク済みのウェイストーン6個、それぞれハイポリからローポリハル(201〜443トライアングル)へ
コライダーソース全ての石のハルはロード時に自身のベイク済みメッシュから生成される
セルフテストプレイスルー8/8個の石、2個ロスト、1.44m、t=408秒で勝利
監査におけるゲーム時間と実時間の比較約85% - この作品はレンダリング律速ではなかった
使用されたモーションキャプチャクリップなし - この作品にキャラクターは登場しない(P5該当なし)

地道に獲得した本物のエンジン機能

RigidBody3Dのスタッキング

実質量、摩擦係数0.92、連続衝突判定を持つ6種類の石。ケルンはスクリプトではなく接触によって支えられている。

アートから生成された凸包

全てのコライダーはロード時に石自身のベイク済みメッシュから生成される——見た目の形状がそのままバランスをとる形状だ。

リアルタイムシャドウマップ

西から差し込む1つの冷たいDirectionalLight3Dがケルンの影を岩全体に落とす:この影が傾きを読み取る手がかりとなる。

敵役としての物理演算

突風は質量スケールされたインパルスと、高さで重み付けされたトルクを全ての石に与える——自慢の高い柱こそが崩れ落ちるものだ。

トライメッシュのセットドレッシング

棚と台座は独自のBlenderメッシュとして衝突判定を持つため、滑り落ちた石はその上に描かれた岩の上に着地する。

GPUParticles3D

着地ごとに舞う土埃、突風の中を横に流れる乾いた草と砂利。

調整済み定数

ホイストはスタックの0.52m上でホバリング gravity_scale 0.55 —「落とす」ではなく「下ろす」 摩擦0.98、反発0、角減衰0.75 中心から0.46mまでの照準制限 1.42m以上外れる、または台座の上端より下でロスト 安定判定:0.13m/sおよび0.42rad/sを0.38秒維持 安定タイムアウト5秒——揺れがターンを止めることはない 3個ごとに突風、1.2秒の予告 突風インパルス = 質量 × 0.62 × 高さ係数 傾き = 重心移動量 / 0.55m 8個の石で勝利、3個ロストで失敗 シャドウ最大距離16m、バイアス0.04 キー光0.85 + 環境光0.38——約1.4を超えると御影石が白っぽくなる max_physics_steps_per_frame 30