家を建てる

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

プロセスの初めに、多くの反復と迅速なテストを重ねて、家を楽しく、かつ不気味にし、探検しやすく、そして迷い込みたくなるような存在にしました。私たちがどのように空間を考え、パッケージを使用して個々の椅子や部屋全体をより迅速に更新するために構築したかをお見せします。

2D レイアウトから始める

家はプレイ可能エリアの大部分であり、1 つのキャラクターそのものであるため、リアルでありながら楽しいものを確保するために多くの思考を注ぎました。家にはいくつかの視覚的および音響的ギャグ、伝承、そして腐敗したパズルルームが含まれるべきだという考えから始め、プレイヤーが何が起こっているのかほとんど知らない状態で家に向かうことを望みました。プレイ中に家やその家族に何が起こったのかを学ぶ過程です。

これらの重要な要素をすべて調和させるために、私たちは 2D レイアウトで 3D 環境を想像し始めました! プレイヤーが経験してほしい一般的なストーリービート、つまり主要な瞬間を考慮し、空間のレイアウトを描き、プレイヤーをどこに導くかを考えながら、より大きな生活感を持つ環境を維持しました。

プレイ可能エリアと周囲の環境の初期ドラフト。

全体的なレイアウトの初期ドラフトができたら、Terrainを使用して周囲の丘、湖、道路、そして家までのドライブウェイを迅速にレイアウトしました。この時点ではデモの視覚的質感には気を使わず、家に到達するまでにかかる時間、またプレイヤーに家や空の出来事を垣間見せるにはどうするかに焦点を当てていました。

プレイヤーが家に近づくための初期コンセプト。プレイヤーが家をより近くで見たくなるように、木々を使って視界を遮る一方で、家や空の出来事を垣間見せるようにしました。

シンプルなパーツCreator Storeのアセットを使用して、環境を構成するためのコンテンツを迅速に追加しました。これには以下が含まれます:

  • 道路を曲げてプレイヤーが全容を見通せないようにしました。
  • アクセスできないことを明確にするために、密集した木々を追加し、探索を促す薄いエリアを設けました。
  • プレイヤーがアプローチする際に登らなければならないように、家のドライブウェイを高くしました。これにより、家がより威圧的な存在感を持ちました。
  • プレイヤーが近づくまで、空の嵐の後ろに巨大な出来事を配置し、部分的にしか見えないようにしました。
  • 最終的に決定した家の一般的な形状を配置し、考えました。

経験があっても、最初のアイデアが最適である保証はありません。このため、アセットを迅速にスタジオに持ち込み、シンプルなパーツと Creator Store のアセットを使用して環境を一時的なアセットで充填しました。これにより、すべてを事前に作る必要がなく、わずか数日でプレイテストを開始できました。

シンプルなパーツとCreator Storeを使用した最初のバージョン。

最終的には一時的なアセットを自作に置き換えたかったですが、初期段階で気にしていたのは基本をレイアウトし、体験をプレイして楽しめる環境になっているか、広すぎず、まっすぐすぎないかを確認することでした。

ドライブウェイアプローチの初期ショット。

各部屋を計画する

外観は全体のストーリーの味見をするためのもので、プレイヤーを没入させ、彼らがプレイしている世界に慣れ親しませるためのものでした。主要なキャラクターはその家自体であり、私たちはプレイヤーが主にその中で秘密を探り、あらゆる部屋のサプライズを見つけることを望みました。これを実現するために、家にはどの部屋が必要か、プレイヤーがそれらにいつ遭遇してほしいか、そしてそれらが家の中でどこにあるべきかを考える必要がありました。家の 2D レイアウトを描き、チームは発生するかもしれない面白いアイデアを出し合いました。この段階では、どんなアイデアも無視されることはありませんでした。

各部屋で起こってほしい不気味な出来事の説明を含む初期の2D「設計図」。

私たちは各部屋の 2D ボックスを使ってどのように相互配置したいかを考えました。各部屋は何かをする機会であり、各部屋の主な使用目的、不気味なギャグを使ってプレイヤーを驚かせるアイデア、そして彼らが直面する可能性のあるパズルなど、大量のアイデアを出し合いました。

各部屋は協力する必要があり、私たちは物語をゆっくりと進行させたいと思っていました。誰が最初にどこに行くかを制御することはできないことを知っていたため、より難しいパズルは玄関から遠くに配置され、偶然見つけるのが難しいように計画しました。これには、家のいくつかの階を追加することが含まれ、プレイテーマやストーリー的理由からも屋根裏と地下室を設けました。地下室に見た目が悪くて恐ろしい最終的なパズル? ぜひお願いします!

3D レイアウトの構築

全ての初期計画とアイデアが楽しい体験を保証するわけではなく、アイデアを 3D にする時間です! 外観のレイアウトがブロックされ、家を拡張または収縮させるためのスペースを確保しました。初期のバージョンは別の 3D アプリケーションで行われ、シンプルなボックスや形を作ってその 2D イメージをプレイ可能な空間に変えていきました。スタジオで初期バージョンを構築し、シンプルな部品を使うことが好きになるかもしれません。アイデアを素早く 3D の形で具体化すれば、どんな方法でも間違いではありません!

レイアウトの俯瞰図。コンセプトとは逆さまになっていることに気づくでしょう。
グレーのメッシュは、3D空間の構築を開始するために使用できるシンプルなメッシュです。

作業が複雑になると、簡単になることはありません。したがって、私たちは頻繁に実験し、作成したい環境の構造を見つけることが重要でした。家の初期のバージョンは、上記の画像と同じくらいシンプルであり、シンプルな形は私たちができるだけ柔軟に動いて、デモをプレイする際に部屋のサイズに素早く変更を加えることを許可しました。スケールも初期段階では重要だったため、3D アプリケーションとスタジオの両方でアバターを用いて、ドアのサイズや階段の高さを確認しました。

現実的なキャラクターとブロックキャラクターが、家の外観に自然なスケールで感じるようにしたいと思いました。
家の中にいるとき、すべてが広々と感じてほしいが、ばかげた大きさではないようにしたいと思いました!

最終デモにおける決定を下した後の最初のドラフトと、広間のもっと後のバージョンを比較すると、多くのオリジナルの決定が保たれていることがわかります!

家のレイアウトの後のバージョン。最初のグレーのボックスのレイアウトとほとんど同じ状態を保っていました!

家具と小道具

私たちはこのサイズの家を埋めるために多くの家具と小道具が必要でしたので、コンテンツのグレーのボックスを始める前に、各部屋の種類に合ったものと現在作成中のパズルを補完するために使用できるすべてを追跡する文書を作成しました。すべての考えを 1 つの場所にまとめることで、組織の優先順位を付け、さまざまな部屋でコンテンツを再利用できる場所を確認できました。これは前もっての計画がそれなりに多かったものの、十分なコンテンツを作らない、または不必要なアイテムが多すぎることから私たちを救いました。

このリストは、コンテンツのグレーのボックスを作成し、家全体に配置する際の優先事項を把握するのに役立ちました。優先度の高いコンテンツを早期に追加することで、アセットが反復的であるか、不正確な比率を持っているか、特定の部屋でセカンダリーのバリエーションやテクスチャの交換が必要な場合を容易に確認できました。初期段階でブロックアウトしたコンテンツの中には、体験にとって重要ではなくなったものもあり、削除しましたが、迅速なブロックアウトであったため、大きな作業を失うことはありませんでした。保持したすべての家具や小道具は、ブロックアウト段階でパッケージにまとめ、最終バージョンに置き換える際に簡単にしました。

初期のグレーのボックスバージョン。
最終バージョンのコンテンツ。

このデモには必要なアセットの量が非常に多いため、可能な限りテクスチャを再利用することが記憶の予算を維持するために非常に重要でした。多くの家具は、木材、金属、石、ガラス、生地の同じトリムやタイル化されたシートを共有し、利用可能な限り透明なテクスチャを活用しました。例えば、生地には透明なテクスチャを使用し、セカンダリーの Albedo テクスチャを作成することなくカラーバリエーションを持つようにしました。テクスチャを再利用する方法の詳細については、計画、再利用、予算を参照してください。

いくつかの部屋で再利用した4つのテクスチャ。

フォトグラメトリ

私たちは、作成する時間がかなり足りなかったので、1:1 のテクスチャシートの高品質コンテンツを作成するプロセスを迅速化するために、**クリエイティブコモンズ (CC0)からフォトグラメトリを利用することにしました。フォトグラメトリ**は、あらゆる角度からオブジェクトの数百枚の画像をキャプチャし、高品質のモデルと正確な比率を作成するプロセスであり、クリエイティブコモンズモデルは通常法的に使用および/または共有できる無料モデルで、主に教育的な性質のものです。これらのモデルは、手作りのアセットからフォトグラメトリを使用して作成されたアセットまでさまざまにわたり、このプロセスでそれらを使用することで、詳細で高解像度のモデルを作成する時間を省くことができました。

私たちが作成した家族のバックストーリーは、彼らが「偏屈な収集家」で、オカルトに手を出しているというものでした。彼らは世界中からアーティファクトを集めてきたため、私たちはその物語を反映するために家をさまざまな物で満たしたいと考えました。私たちは、CC0 博物館コンテンツからスキャンデータを取得し、アンティーク彫像剥製などのモデルを使用し、UV マッピングやリトポロジー、スタジオの最適化に必要なテクスチャ作業を開始しました。

Diffuseテクスチャを持つ元のスキャンデータメッシュ。

**UV マッピング**は、3D モデルのメッシュを開放し、2D 画像をその上に投影するプロセスです。「U」と「V」は 2D テクスチャの軸を表します。なぜなら「X」、「Y」、「Z」は 3D モデルの軸を表すからです。UV はスキャン時に自動化される傾向がありますが、ゲーム開発の目的には不適切に行われていることが多いです。例えば、特定のフォトグラメトリモデルの UV は、一連の個別の平面のように見えるかもしれませんが、クリエイターが 10,000 の頂点に制限されているモバイル体験には最適ではありません。時にはスキャンデータが幸運につながることもありますが、ほとんどの時間、体験の目的のために、これらの 2 次元テクスチャ座標を更新するか、完全に再作成する必要がありました。

自動UVを持つ元のスキャンデータ。

さらに、モデルのほとんどのメッシュには、最初のスキャン時にテクスチャに焼き込まれた照明情報を含む Diffuse テクスチャのみが含まれていました。これはメッシュの Albedo テクスチャのベースとして使用するのに役立ちますが、光と影をペイントしないといけないため、手動でのクリーンアップが必要です。メッシュに強い方向性の照明があった場合、ワールド照明と一致しないため、奇妙に見えるかもしれません。このため、私たちは CC0 博物館コンテンツから使用したモデル用に、ほとんどの PBR テクスチャを再作成する必要がありました。

焼き込まれた照明を持つ元のスキャンデータテクスチャ。

物理ベースのレンダリング (PBR) は、現実世界の材料や照明をより正確にシミュレートし表現することによって、リアルなシェーディングとライティングを使用するという概念です。PBR テクスチャを作成する際、Studio のエンジンが画像ベースのライティング (IBL) からこれを計算するため、Albedo テクスチャに照明情報をほとんどまたは全く焼き付けないことが重要でした。また、テクスチャのNormalRoughness、およびMetalnessの表面値を使用して、現実の材料を正確に表現します。比較として、Diffuse テクスチャにはこれらの個々のマップからの詳細がすべてまたは一部焼き付けられている場合があり、IBL や他の個々の PBR テクスチャの助けなしに、Diffuse テクスチャ自体でその詳細を持つ必要がある場合に役立ちます。Diffuse テクスチャを保持するか、自分自身の PBR テクスチャを作成するかを決める際には、各自のデザインやメモリ予算の制限を考慮してください。

私たちが使用したスキャンデータのメッシュは通常かなり良好でしたが、一部のメッシュはクリーンアップが必要でした。例えば、一部のメッシュには埋める必要がある問題のある穴や、滑らかにする必要があるギザギザのエッジ、厚くする必要がある薄いエッジがありました。このプロセスには、Zbrush を使用してスキャンデータを編集しました。

左から右へ: 薄すぎてギザギザ | モデル全体に少しポリッシュが必要 | また薄すぎてギザギザ。埋めて滑らかにする。| 穴を埋める。
スキャンデータをクリーンアップした後の同じメッシュ。

このプロセスは決して完璧ではありませんでしたが、高解像度モデルをクリーンアップすることで、モデルのメッシュを自動的または手動でリトポロジーするのが大幅に容易になりました。リトポロジーは、3D モデルのエッジ分布と構造を修正するプロセスです。私たちの目的にとって、リトポロジーは高解像度モデルの低解像度版を作成する際に、より良いテクスチャベイクを可能にします。低解像度モデルはモバイルデバイスでは特にパフォーマンスが向上し、メッシュとテクスチャの高解像度の詳細を保持します。

手動または自動でリトポロジーする場合は、任意の 3D アプリケーションを使用できます。私たちは、手動でリトポロジーするために3DS Maxを使用し、Zbrush では Zremesher または Decimation Tool を使用して自動的にリトポロジーを行いました。Zremesher ツールを使用することで、形状を維持するためにより多くの頂点を必要とする四角形を維持しながらメッシュを自動リトポロジーすることができ、Decimation ツールを使用することで、頂点数が少ない三角形を使用して自動リトポロジーし、形状を維持することができました。

ZbrushのZremesherツール。
ZbrushのDecimationツール。

モデル/メッシュの自動ルートを選択した場合でも、自動リトポロジーは高解像度メッシュ、その構造、およびアルゴリズムに大きく依存するため、ある程度のクリーンアップが必要でした。メッシュの三角形化されたリトポロジーの経路を選ぶことが多く、元の形状を維持しつつ、頂点数を減らした方が重要でした。

オーバーラッピングと不良トポロジーは、オートリトポロジー時に発生する可能性のあるサーフェスノーマルエラーを引き起こします。これを修正しないと、モデルのメッシュとライティングに問題が発生する可能性があります。
高解像度のサーフェスノーマルに沿った面を手描きで描くプロセス。

メッシュを新しい UV でリトポロジーした後、次に高解像度メッシュの詳細とテクスチャをベイクして転送する必要がありました。Marmoset は、メッシュマップのベイクおよび高解像度モデルから低解像度モデルに元のテクスチャを転送するプロセスを容易にしましたが、他の 3D アプリケーションでより良いワークフローや方法を見つけるかもしれません。ツールに関係なく、高解像度モデルの元のテクスチャがベイク時にモデルに割り当てられていることを確認してください。

ベイク時に高解像度モデルの元のテクスチャをカラスモデルに割り当てる。
新しいUVと、ライティングを塗りつぶした512サイズのPBRテクスチャ。
手動でリトポロジーされ、テクスチャが転送されたもの。手作業で行うことで、ジオメトリの流れや頂点の使い方を制御できました。特に高解像度メッシュが複数のオブジェクトで構成されている場合や、問題のある形状を持っている場合、手動で行う方が良い選択です。
3Dアプリケーションで自動的にリトポロジーを行う。これを自動的に行うことで、手動で低解像度のメッシュを作成する時間を節約しましたが、シルエットを維持するための頂点数が多くなり、UVを作成するときの作業が難しくなります。

私たちが**Substance Painter** で Albedo、Normal、Metalness、Roughness の PBR テクスチャを最終化した後、新しいアセットが Studio にインポートされる準備が整いました!スキャンデータアセットとリトポロジーされたアセットの間には品質の違いがいくらかありましたが、アセットが 1,000 vertices ではなく 1,000,000 vertices であった場合、最終的には価値のあるトレードオフでした。また、メモリの予算を維持し、体験がよりスムーズに実行されるようになりました。

スキャンデータのカラス。
手動でリトポロジーされたゲーム内アセット。
スキャンデータのキャンドルスタンド。
自動的にリトポロジーされたゲーム内アセット。

パッケージの活用

パッケージ は、単一のオブジェクトまたはオブジェクトのグループのバージョンを保存して使用することを可能にするシステムです。バージョンを更新すると、そのオブジェクトまたはグループの全てのインスタンスが一度に更新されます。例えば、木のオブジェクトを作成し、そのオブジェクトの何百ものインスタンスを体験の中に配置した場合、パッケージを更新するだけで、何百本の木が一度に新しいバージョンに更新されます。私たちは、家のほとんどの部屋に二つの状態(通常の状態と破壊された状態)があることを早い段階で知っており、両方のコピーを保持する必要がありました。このため、各家の状態ごとに共有する必要のあるオブジェクトを決定し、それらをパッケージに変換しました。

全体の寝室のパッケージの例。通常状態または破壊された状態に特有のものはこのパッケージの外にあります。

パッケージを使用することで、壁パネルの木のトリムから部屋全体まで、すべてを変更でき、部屋の両方の状態がその変更に更新されました。また、SurfaceAppearanceオブジェクトをパッケージに変換できたため、体験全体で材料の外観を更新することができました。材料の再利用は、デモをできるだけ効率的にするために重要でした。

例えば、以下の画像は、デモ内のいくつかの場所で使用している金属のサーフェス外観パッケージを含む、複雑な子アセットのグループを持つアーマリーのモデルパッケージを示しています。金属のサーフェス外観パッケージを更新するところでは、一括更新を実行することもでき、アーマリーモデルパッケージが子サーフェス外観パッケージを更新します。

アーマリーアセット
アーマリーモデルパッケージ
金属サーフェス外観パッケージ

個々のオブジェクトまたは ModelsFolders のようなオブジェクトのグループをパッケージに変換する方法、またはパッケージの作成者を編集アクセスのために選択する方法についての詳細は、パッケージを参照してください。私たちは、グループ全体がパッケージにアクセスして編集できるように、すべてのパッケージの作成者として Vistech Demo Group を指定することにしました。これにより、グループが所有する全ての体験間でこれらのパッケージを共有することができました!

私たちは、アーマリーのような親パッケージや部屋全体を自動的に更新する設定を行い、モデルやフォルダの変更がそのパッケージのすべてのインスタンスに自動的に共有されるようにしました。このプロセスにより、各部屋の通常状態と破壊状態の変更をスムーズに行うことができました。以下の 2 つの画像は、同じパッケージを介して作成された書斎の通常状態と破壊状態を示しています。パッケージの外では、たとえ壊れた状態が横向きであっても、いくつかのアイテムが異なるだけです。

パッケージを使用することで、コンテンツの処理を一つだけ行いながら、部屋の2つのバージョンを作成できました。

体験の同じ場所ファイルですべて作業するのではなく、パッケージリンクを持つすべてのコンポーネントを持つアセットストレージ場所を構築しました。このストレージ場所でパッケージを変更すると、それがすべての場所で自動的かつ即座に更新されます。オブジェクトを修正したり、機能を追加したり、詳細に取り組んだりすることができ、メイン体験の気分やライティングを気にする必要がなく、作業の内容をより見やすくすることができました。

デモ内のすべてのコンポーネントを持つアセットストレージ場所。

パッケージを使用することで、多くの余分な作業をせずに 3D でさまざまなアイデアを探求する自由を得ました。計画を立てたりテストしたり、実験が実際にはうまくいかなかったり体験を破壊した場合に、アセットの以前のバージョンに戻すことができました。パッケージのバージョンを戻すことで、数時間の作業が復元されたことが何度もありました。最終的に、私たちはパッケージがなければ、このデモの最終的な仕上げを達成することはできなかったでしょう。

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。