コンピュータエンターテインメント開発者を対象に、ゲームに関する技術や知識共有をはかる国内最大級のカンファレンス・CEDEC。本記事では、7月22日から24日にかけて開催されたCEDEC 2025のセッションより、株式会社ソニー・インタラクティブエンタテインメントによる「触って楽しい!『アストロボット』の物理シミュレーションとグラフィックスの舞台裏」を紹介する。

関連記事
・「ポケモンカードゲーム」のモバイル版『Pokémon Trading Card Game Pocket』は、いかにして紙のカードの手触りをデジタルに翻訳したか【CEDEC 2025】
・ゲーム内外の映像制作を高品質&高効率化 『ウマ娘 プリティーダービー』ツール開発の裏側【CEDEC2025】
・レイアウトで印象を強化する、『ELDEN RING』の背景制作【CEDEC2025】
・『魔法少女まどか☆マギカ Magia Exedra』における、原作の必殺技をゲームで再現する工夫とは? キャラクターの魅力を活かす制作フローを解説【CEDEC 2025】
多彩な物理表現に対応するAdvanced Physics
PS5用ソフト『アストロボット』は2024年9月の発売以降、メタスコア94点を獲得し、発売からわずか2カ月で150万本を販売。世界各地でゲームアワードを受賞した傑作アクションゲームだ。
その魅力を支えているのが、PS5の性能を余すことなく引き出した物理シミュレーション表現である。本セッションでは、それらのしくみをいかにゲーム体験としてデザインし、実装したのかについて、ソニー・インタラクティブエンタテインメント Team ASOBI プリンシパルグラフィックスプログラマの山口 太氏と、シニアゲームプレイプログラマーの吉田 匠氏が解説した。
『アストロボット』における「触って楽しいインタラクション」には、サウンドやアニメーションなど多くの要素が関わっている。吉田氏はその点に触れた上で、本講演の主題を物理シミュレーションとインタラクティブなグラフィックスに絞り込んだ。

Team ASOBIがこれまで手がけてきた物理シミュレーションは、主に剛体やジョイント拘束といった挙動が中心だった。これに対し『アストロボット』では、新たにパーティクル、流体、布、弾性体、リアルタイム破壊といった表現にも挑戦。これらを総合的に扱う「Advanced Physics」の実現を目指したという。

こうした「Advanced Physics」に取り組んだ目的について山口氏は、先進的な物理シミュレーションをゲームプレイへ活用すること、子どもの頃に体験した砂遊びや水遊びのように触れているだけで満足感を得られる体験を提供すること、そしてPS5のハプティックフィードバックによってゲーム世界のリアリティを拡張することの3点を挙げる。

目的に向けた最初のステップはブレインストーミングだった。デザイナー、アーティスト、サウンドデザイナーなど職種を問わず5〜6人をランダムに集め、一歩進んだ物理シミュレーションを活用したゲームのアイデアを大量に出していく。1時間ほどのセッションを6回行い、その結果300ものアイデアが集まったという。

アイデアの整理を経て、次はゲームプレイのプロトタイピングに移った。吉田氏が主にメインプログラマを務め、プレイの面白さや操作感の心地よさを検証するための試作を開発。グラフィックやアニメーションは仮置きの状態で進められることも多く、1つのプロトタイプはおよそ2週間で完成。『アストロボット』では最終的に30以上のプロトタイプがつくられたが、その多くは実際のゲームには採用されなかったという。

プロトタイピングを終えると、開発はプロダクションフェーズへ移行する。ここでは、ゲームプレイや感触が良好だったものについて、仮モデルをアーティスト制作のモデルへと置き換えていく。さらにステージにギミックを配置し、ゲームプレイやハプティックフィードバック、サウンドを改良。あわせて最適化やバグ修正を重ね、製品版としての完成形へと仕上げていった。

物理を利用したギミックのコード構成は、図に示されている通りだ。Team ASOBIの内製エンジンとHavokの上にAdvanced Physicsのコンポーネントを配置し、その上で各種ギミックが実装されている。
ここからは、このAdvanced Physicsコンポーネントと、それを用いて実現された具体的なギミックの事例が紹介された。

パーティクル
最初に紹介されたのはパーティクルである。作中では、パンチで吹き飛ばせる小さなオブジェクトとして活用されている。Havok PhysicsのParticles機能を利用しており、1シーンで最大約7,500個を60fpsで動作させることが可能だ。応用すれば、重力・空気抵抗・風に応じて舞う落ち葉のような表現も実現できる。さらに、プレイヤーが触れたオブジェクトの数や動きの速さに応じてハプティクスとサウンドを生成するしくみも導入されている。
一方で、パーティクルとして利用できるのはシンプルな凸形状に限られ、パーティクル同士の接触判定も必ずしも正確ではない。この制約については、対象を小さなオブジェクトに限定することで、ゲーム体験上はほとんど目立たないよう工夫されているという。


流体表現
続いて紹介されたのは流体表現である。『アストロボット』には多彩な流体が登場するが、その特徴は大きく3つにまとめられるという。第一に、地形に沿って自然に流れること。第二に、プレイヤーとのインタラクションによってアニメーションやハプティクスが変化すること。第三に、見た目や粘性の異なる多様なマテリアルに対応することである。


流体の衝突検出には、前項と同様にHavok Particlesを使用している。ただし計算コストが非常に高く、CPUとGPUの双方に処理を分散する最適化には相当な時間を要したという。

もっとも、いくら最適化を重ねても処理能力には上限があるため、流体表現では粒子のサイズと数の間に常にトレードオフが生じる。吉田氏は「ゲームプレイ上、流体をたくさん出したかった」と述べ、粒子のサイズを大きめに設定する一方で、粒子をY軸方向にマイナスへずらして配置し、見た目を補う工夫を行なったという。

こうした最適化と処理の工夫により、『アストロボット』では異なる流体同士が混じり合う表現も実現された。例えば、水が溶岩に触れると蒸発し、冷えた溶岩が固まるといったシーンでは、マテリアルをシームレスにブレンドするしくみを採用。さらに、水でオイルを洗い流す、異なる色のインクが混色するなど、多様なインタラクション表現にも対応できたという。



噴水の上に乗るといったギミックについても、噴水全体を流体シミュレーションで表現するとパフォーマンスに大きな負荷がかかる。そのため、中央の水柱はメッシュモデルで表現し、流れ落ちる粒子のみを流体シミュレーションで処理するというハイブリッド方式を採用することで実現している。


布の表現
布表現については、PS5クオリティの高密度モデルで全頂点を直接シミュレーションすると負荷が大きいため、表示用のハイポリモデルとシミュレーション用のローポリメッシュを分けて用意。ローポリ頂点に生成したジョイントを介してスキニングする方式を採用している。
布の挙動はシンプルなバネ質点モデルを陽解法で計算し、地形との衝突はHavok Physics Particles、キャラクターとの衝突はコリジョンメッシュで処理。これにより、カーテンやカーペット、ジャンプボード、トランポリン、ジッパーなど、多彩な布系ギミックが実現された。


弾性体
弾性体の例としては、プレイヤーが乗ると形が変形するバルーンのギミックが紹介された。布のしくみをベースにしつつ、内部圧や形状保持力、アニメーション追従力、プレイヤー重量など複数の力を組み合わせて制御している。安定して美しく変形させるためのパラメータ調整は大きな課題だったという。
この技術は、往年の名作ゲーム『ロコロコ』を再現したステージにも応用されており、転がりやジャンプの動作に合わせて柔らかな触覚フィードバックを実現している。


リアルタイム破壊
リアルタイム破壊システムについては、従来のように破壊後モデルをあらかじめ用意し、アクションの瞬間に切り替える方式ではなく、攻撃箇所に応じてメッシュやコリジョンを動的に生成するしくみを導入した。これにより、プレイヤーの行動に応じた結果が即座に返るためインタラクティブ性が高まるだけでなく、破壊後モデルを別途作成する必要がない分、モデリングコストの削減にもつながっている。



リアルタイム破壊①:自由切断
リアルタイム破壊の事例としては、自由切断、パーシャルブレイクボード、ボクセルの3種類が紹介された。なかでも自由切断は、ホバーや手裏剣を使ってオブジェクトを任意の形状に切断できるしくみで、丸太やカード、竹といったオブジェクトが対象として用意されている。
処理の流れは、まず切断平面とポリゴンの交差線を検出し、そこにエッジを追加してポリゴンを分割。新たに生成された部分を三角形ポリゴンとして構築する。その後、エッジを接続して切断面を形成し、こちらも三角形化を行う。竹のような中空形状では、穴に対応する分割処理が加わる。最後に生成ポリゴンを内包する凸包を作成し、それをアクティブなコリジョンとして利用する。
自由切断には、切断回数や対象数が増えるにつれてメモリ使用量や計算コストが増大するという課題がある。そのため、60fpsを維持するには切断可能数や回数を制限し、破片も一定時間後に消去する必要があった。さらに、分散処理を導入することで1フレーム内に負荷が集中しないよう調整するなど、パフォーマンス面での最適化も施されている。
リアルタイム破壊②:パーシャルブレイクボード
リアルタイム破壊のもう一つの事例が、床や壁に穴を開けられる「パーシャルブレイクボード」である。破片のメッシュやコリジョンはステージ読み込み時に生成され、サイズはレベルデザイナーが任意に設定可能だ。対応する素材は木やサンゴ、氷、ガラスなど多岐にわたり、木板をホバーで破壊したり、薄いガラスなら塗るだけで崩れるなど、素材ごとに異なるゲームプレイを展開できる。
破片生成にはボロノイ分割を応用したアルゴリズムが採用されている。まずポアソンディスクサンプリングでランダムに配置した点を破片の中心とし、ドロネー三角形分割で全体を三角形領域に分割。その垂直二等分線を結んでボロノイ領域を形成し、これを押し出して三角形化することでメッシュが完成する。生成されたメッシュはそのままコリジョンにも利用可能だ。
破壊時には、攻撃を受けた破片から隣接セルへと接続情報をもとに伝播し、連鎖的に崩壊していくしくみになっている。高い計算コストやメモリ使用量を抑えるため、分割数には制限を設け、初期化処理を並列化。また破片を一定時間後に消去することで、パフォーマンス面でも安定した動作を実現している。




リアルタイム破壊③:ボクセル
リアルタイム破壊の最後の事例として紹介されたのがボクセルだ。無数の小さなキューブで構成されており、攻撃を受けた周辺部分だけを破壊できるため、局所的な崩壊表現が可能となる。破壊後はキューブが物理的にばらけ、パーティクルシステムを応用した挙動によって自然な飛散を再現している。
モデリング工程も簡易化されており、Maya上で球やシリンダー、直方体といったプリミティブを配置するだけで、ランタイム時には自動的に内部がキューブで充填されるしくみになっている。

前半パートの締めくくりとして、吉田氏は「Advanced Physics」によってパーティクル、流体、布、弾性体、リアルタイム破壊といった多様な技術が、幅広いゲームプレイに活用されてきたことを改めて強調した。
一方で、触れるだけで楽しい感覚や、PS5のハプティックフィードバックによってもたらされるリアルな質感は、映像や言葉での説明だけでは伝えきれない部分が大きいとも語る。最終的には、プレイヤーが実際に操作し、ゲームの中で体験することでこそ実感できる要素だと話した。

60fpsを下回れば即バグ扱い インタラクティブなグラフィックスの実現
後半は山口氏にバトンタッチし、ゲームプレイと直結するグラフィックス機能の紹介が始まった。
山口氏がまず強調したのは、プレイヤーの操作に確実に反応する「インタラクティブなグラフィックス」を実現することの重要性だ。単なる美しい映像表現ではなく、入力と即応する画面上の変化が、アクションゲームに欠かせない没入感を生み出すという。
この反応性を実現するため、ゲームプレイプログラマーと綿密に協力し、発想を確実に動作するしくみに落とし込んでいった。さらに、もうひとつの絶対条件が「常時60fpsの維持」である。わずかでも下回れば即バグ扱いとして修正対象となり、応答性と軽快さを両立する効率的な実装が求められた。

流体パーティクル
流体パーティクルはペンキや水、油といった多様な液体を表現し、それぞれの性質に応じて動きや見た目を変化させ、プレイヤーの操作やギミックに自然に溶け込むように設計されている。
開発初期には「水の使い方をどうすれば面白くできるか」を探るため、複数のプロトタイプが制作された。パーティクルは単純な球体モデルとして表示され、プログラマーが自由に挙動やしかけを加えられるかたちで試行が行われている。
そして本格的にゲームへ組み込む段階では、任意の場所に配置したパーティクルが自然に集まり、水たまりのように見える——そんなしくみを理想とし、それをどのように実現するかが大きな課題となった。

とはいえ、この理想を実現するのは容易ではなかった。流体の物理計算は主にCPUで処理されるため、パーティクル数が増えるほど負荷が急激に高まる。大量のパーティクルを配置することには制約があり、その中で「いかに水面を滑らかに見せるか」が重要な検討ポイントとなった。
初期段階では、パーティクルを粒の大きな球体として表示し、描画後にスクリーン上で滑らかに補正する方式も試された。しかし、パーティクル径が大きすぎるため不自然さが目立ち、現実的な解決策には至らなかったという。

最終的に水のパーティクル表現には Signed Distance Field(SDF)が採用され、Ray-Marchingによる合成で粒子同士を滑らかにつなげる手法に落ち着いた。SDFの合成ではスムース最小値を利用し、接続部分が不自然に見えないよう細かく調整している。
さらに、ボリュームテクスチャは使わず、スクリーン上での Ray-Marching によって広範囲を処理できる構成とした。これにより、プロトタイプ段階で「ボールプール」のように粗かった描画が、水たまりのように自然で滑らかな水面へと大きく進化した。


流体パーティクルの描画は、まず物理システムやゲームプレイのプログラムによって、シーン内に配置された各パーティクルに位置・半径・色・透明度といった見た目のパラメータを割り当てるところから始まる。これらの情報は通常のモデルと同様にレンダリングパイプラインへ送られるが、直接フレームバッファに描かれるわけではない。

最初にGPU上のパーティクルリストへ情報が格納され、その後、画面は「タイル」と呼ばれる小領域ごとに分割される。このしくみによって、膨大な数のパーティクルを効率的に並列処理できる構成となっている。
その後、深度情報や画面分割情報を利用してタイル単位でのカリングを実行し、残ったパーティクルをローカルストレージ上でソートしてリンクリスト化する。各タイルごとにレイマーチングを行い、スムース最小演算によってSDFをブレンドすることで、有機的な形状を生成。ここで得られた形状はISO Surfaceとして抽出される。
ISO Surfaceはハーフ解像度のGバッファに出力され、法線はSDFの勾配から計算される。また、追加のモデルやエフェクトを重ねることで、表現のリッチさをさらに高めることも可能だ。最終的にはアップサンプリングを経てフル解像度の画面に統合され、完成した水面や流体表現が描画される。
ルックに多様なバリエーションをもたせるため、オイルや溶岩、泥といった流体パーティクルにはマテリアルテクスチャーが用いられている。ただし、流体パーティクル自体にはテクスチャ座標が存在しないため、トライプラナーマッピングなどの技法を利用して質感を付与しているという。
さらに、流体の動きに応じてテクスチャ座標をスクロールさせることで流れを表現し、タイルの繰り返し感を抑える工夫も加えられている。こうした処理により、単なる粒子の集合ではなく、それぞれの流体特有の質感を伴った説得力ある描画が可能になった。


しかし、パーティクル数が増える場面では、レイマーチングの計算コストがレンダリングのボトルネックとなった。これに対して開発チームは、カリング、ソート、レイマーチングといった処理をレンダリング初期段階で非同期キューにオフロード。さらに、不透明オブジェクト描画やシャドーマップ生成と並行処理できるようにした。
この最適化により最大で約2msの高速化が確認され、効率的な並列化によって全体の処理時間を大きく削減できたという。


SDFを利用した柔軟な形状表現によって、ゲームデザイナーやプログラマーが新しい遊びを設計できる環境が整い、表現とゲームプレイの幅は大きく広がった。もっとも、さらなる応用に向けては形状生成の高速化や処理速度の改善といった課題が残されているという。

水面の描画
ペンキや泥のような小規模な液体表現には流体パーティクルが有効だったが、広大かつ動的に変化する水面描画には別のアプローチが必要だった。従来はアーティストが細分化したメッシュを手作業で用意していたが、ステージの拡張やレイアウト変更のたびに作り直しが発生し、大きな工数負担となっていた。
そこで本作では、キャラクターの挙動やシチュエーションに応じて動的に変化する水面を実現するため、動的テッセレーションによる自動細分化手法を採用。GPU上のコンピュートシェーダで三角形を細分化し、Tジャンクションの発生を抑えつつ効率的に処理できるしくみを構築した。


この水面システムでは、細分化された三角形ごとに「サブトライアングルインデックス」と呼ばれる番号を割り当て、その位置や大きさを管理している。手法としては、まず元の三角形を0と1に分割し、その後ルールに従って再帰的に細分化していく方式を採用。割り振られた番号はGPUバッファ上に2進数形式で保存され、効率的にアクセス・管理できるようになっている。

分割処理はサブトライアングルインデックスのビットシフトによって行われ、逆に結合時もビット操作で復元できるため、アルゴリズムは非常にシンプルかつ高速に動作する。さらに分割時には、Tジャンクションの発生を避けるために最長辺の中点を基準に判定を行うしくみを導入。これにより、細分化の不整合を防ぎながら安定した描画が可能となった。
また、カメラの位置や反射の目立ち方に応じて分割・結合を自動的に切り替える設計となっているため、必要な場所だけを高解像度に保ち、処理負荷を抑えられる。実際の環境では、広大な水面全体を対象にしても処理に要する時間は20マイクロ秒程度とされ、極めて軽量なシステムに仕上がっている。
各フレームでは、細分化された三角形の位置をサブトライアングルインデックスから直接算出するしくみを採用している。バイナリ細分化のルールに基づいた変換行列を段階的に適用することで座標を導き出し、効率的に頂点位置を決定できる。
細分化後は、画面外にある三角形をカリングする処理も行われる。海のような広大な水面では、毎フレーム半分以上のポリゴンを除外できるため、描画コストを大幅に削減できるのが特徴だ。
さらにワイヤーフレーム表示で確認すると、カメラ付近では高いディテールを維持しつつも、全体の頂点数は前作と比較して半分以下に抑えられていることがわかる。加えて、水面メッシュにはガースナッハ法による自然な波動表現や、大型キャラクターの着水・移動による変形を再現するモディファイヤを適用。これらはレベルエディタやAPI経由で動的に制御でき、ゲームプレイに応じた柔軟な水面演出を可能にしている。
このしくみによって、海や沼地、溶岩地帯といった多様な環境を手作業の再構築なしで表現できるようになり、アーティストの負担を大幅に軽減しつつ、描画品質とパフォーマンスの両立を実現した。メッシュ密度が一定化されたことで、テッセレーションやカリング処理も安定し、より効率的な描画が可能になっている。
さらにマテリアルシステムの改良も進められており、今後はより複雑な地形や特殊な環境表現へ応用できる見込みだという。

スキンメッシュアニメーション
最後に、本作で採用されたスキンメッシュアニメーションについても紹介された。基本はスキンメッシュによる変形だが、柔軟な変形を求められる場面ではカスタムデフォーマを併用している。プレイヤー操作に応じて形が変化するオブジェクトが多数登場するため、その変化を正しく視認できることが重要であり、シェーディング精度を維持するため頂点データは随時更新されている。
リアルタイム変形に対応するため、専用のデフォーマAPIを実装。レンダリング直前にGPU上で頂点バッファやインデックスを動的に更新し、法線やタンジェントも再計算する。このしくみにより、変形しないオブジェクトは静的メッシュとして扱えるため、破壊オブジェクトが多い場面でも効率的な処理を維持できるようになっている。



このしくみにより、多様なメッシュ変形を正しいシェーディングで表現できるようになり、GPU処理によってパフォーマンスへの影響も最小限に抑えられた。処理は形状変化時にのみ発生するため、多数の同時変形にも安定して対応できる一方で、変形数が増えるほどメモリ負荷が高まる点は課題として残る。開発チームはデータ構造やメモリ運用の工夫によって改善を図っている。

各機能はいずれも「ゲームプレイの楽しさを高めること」を軸に設計されており、物理挙動はおもちゃ的な面白さを、グラフィックスは視覚的な快感や不思議さを演出する役割を担った。こうした要素の積み重ねが作品全体の魅力と完成度を押し上げる結果となった。開発中に機能が実際に動作する瞬間は大きな喜びであり、その楽しさを聴衆と共有できたことへの感謝が語られた。
最後は、開発・講演に携わった全てのチームメンバーと聴講者への謝辞をもって発表を締めくくった。

TEXT_稲庭 淳 / Jun Inaniwa
EDIT_小村仁美 / Hitomi Sagano(CGWORLD)、山田桃子 / Momoko Yamada