家を建てる

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

プロセスの初めに多くの反復と迅速なテストを行い、家を楽しく不気味にし、探索しやすく、迷いたくなるようなものにするために多くの考慮をしました。私たちは、空間をどのように考え、パッケージを使用して個々の椅子や部屋全体の更新を迅速に行う方法を示します。

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

家はプレイ可能なエリアの大部分であり、全体として一つのキャラクターでもあるため、現実的でありながら楽しいものにするために多くの考慮をしました。私たちは、家にはいくつかの視覚的および音響的なギャグ、伝承、そして腐敗したパズルの部屋が含まれるべきだというアイデアから始め、プレイヤーが何が起こっているのかほとんど知らない状態で家に近づき、プレイしながら家とそこに住んでいた家族に何が起こったのかを学ぶことを望みました。

これらの重要な要素のバランスを取るために、私たちは2Dレイアウトを使って3D環境を想像し始めました!プレイヤーに体験してほしい一般的なストーリービート、つまり重要な瞬間を考えながら、空間のレイアウトを描き、プレイヤーをどこに導くかを考えつつ、より大きな環境を維持する方法を考えました。

私たちが望んでいたプレイ可能エリアと周囲の環境の初期ドラフト。

全体のレイアウトの初期ドラフトができたら、地形を使用して、周囲の丘、湖、道路、そして家へのドライブウェイを迅速にレイアウトしました。この時点ではデモの視覚的品質にはこだわらず、家に到達するまでの時間と、プレイヤーに家や空のイベントを垣間見せるために何が必要かに焦点を当てました。

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

シンプルなパーツとクリエイターストアのアセットを使用して、環境を構成するのに役立つコンテンツを迅速に追加することができました。具体的には:

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

経験があっても、最初のアイデアが最良であることは保証されません。これが、私たちがアセットをスタジオに迅速に取り込み、シンプルなパーツとクリエイターストアのアセットを使用して環境を一時的なアセットで埋める理由です。これにより、すべてを前もって作成する必要がなく、最初の数日でプレイテストを開始できました。

シンプルなパーツとクリエイターストアを使用した最初のバージョン。

最終的には一時的なアセットを自分たちのものに置き換えたかったのですが、初期段階で私たちが気にしていたのは基本をレイアウトし、ゲームをプレイして環境が楽しく移動できるものであり、あまりにも大きすぎたり「直線的すぎる」ものではないことを確認することでした。

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

各部屋を計画する

外観は全体のストーリーの味わいを提供し、プレイヤーを没入させ、彼らがプレイしている世界に慣れさせるためのものでした。主なキャラクターは家そのものであり、プレイヤーにはその中で秘密を探し、各部屋で驚きを見つけるために多くの時間を過ごしてほしかったのです。これを実現するために、家にどの部屋を含めるべきか、プレイヤーがそれらにいつ出会うべきか、そしてそれらが家の中でどこに存在すべきかを考える必要がありました。私たちは家の2Dレイアウトを描き、チームでクールなアイデアを出し合いました。この時点では、どんなアイデアも無視されませんでした。

各部屋で起こる不気味なイベントの説明を含む初期の2D「設計図」。

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

各部屋は協力して機能し、私たちは物語をゆっくりと進行させたいと考えていました。誰が最初にどこに行くかを制御できないことは分かっていたので、難しいパズルのいくつかは玄関から遠く、偶然に見つけにくい場所に配置することにしました。これにより、ゲームプレイとテーマ的な理由から、家にいくつかの階を追加する必要がありました。地下室にある最終パズルは不気味で怖い?ぜひ参加させてください!

3Dレイアウトを構築する

すべての初期計画やアイデアが楽しいゲームを作るわけではないので、アイデアを3Dにする時が来ました!外観のレイアウトはブロックアウトされ、家を拡張または縮小するためのスペースが作られました。最初の反復は、別の3Dアプリケーションで行われ、シンプルなボックスや形状を作成して2D画像をプレイ可能な空間に変換し始めました。スタジオでの初期バージョンを構築し、シンプルなパーツを使用することが好きな方法かもしれません。アイデアを迅速に3Dでプレイ可能にする限り、間違った方法はありません!

レイアウトの上からのビュー。コンセプトから反転していることに気づくでしょう。
グレーのメッシュは、3Dで空間を作り始めるために使用できるシンプルなメッシュです。

作業が複雑になるにつれて簡単になることはないので、私たちにとっては頻繁に実験し、作成したい環境の構造を見つけることが重要でした。家の最初の反復は、上記の画像のようにシンプルであり、シンプルな形状は可能な限り柔軟で、デモを通じて部屋のサイズを迅速に変更することを可能にしました。スケールも初期段階では重要だったので、常に3Dアプリケーションとスタジオ内でアバターを使用して、ドアの大きさや階段の高さを知ることができました。

現実的なキャラクターとブロックキャラクターの両方が、家の外観に対して自然に感じるようにしたいと考えました。
家の中にいるときは、すべてが広々と感じられるようにしたいが、あまりにも大きすぎないようにしたい!

私たちは、最終デモにあるものに落ち着くまでに多くの小さな反復と大きな反復を経ました。上記の初期ドラフトと、後のフォイヤーのバージョンを比較すると、家をプレイした後に行った多くの元の決定が維持されていることがわかります!

家のレイアウトの後の反復。ほとんどのレイアウトは初期のグレーボックスのままでした!

家具と小道具

このサイズの家を埋めるためには多くの家具と小道具が必要だったので、コンテンツのグレーボックスを開始する前に、どのような部屋のタイプに合うか、そして私たちが作成中のパズルにどのように役立つかを追跡するためのドキュメントを作成しました。すべての考えを一つの場所にまとめることで、整理、優先順位付け、異なる部屋でコンテンツを再利用できる場所を確認することができました。これはかなりの前もっての計画でしたが、十分なコンテンツを作成することや不必要なアイテムを作りすぎることを防ぐのに役立ちました。

このリストは、コンテンツのグレーボックスを行い、家全体にそれを配置する際に優先すべきものを理解するのに役立ちました。高優先度のコンテンツを早期に追加することで、アセットが繰り返し使用されているか、比率が間違っているか、特定の部屋にあるときに二次バリエーションやテクスチャの交換が必要かを簡単に確認できました。初期にブロックアウトしたコンテンツの中には、ゲームにとって重要でないものがあり、削除されましたが、迅速なブロックアウトだったため、プロセスで多くの作業を失うことはありませんでした。保持したすべての家具と小道具は、ブロックアウト段階でパッケージに変換し、これにより家全体で最終バージョンに置き換えるのが容易になりました。

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

このデモに必要なアセットの膨大な量のため、できるだけテクスチャを再利用することが非常に重要でした。多くの家具は、木材、金属、石、ガラス、布の同じトリムやタイル可能なシートを共有しており、可能な限り透明なテクスチャを利用しました。たとえば、布用の透明なテクスチャを使用して、二次のアルベドテクスチャを作成することなく色のバリエーションを持つことができました。テクスチャの再利用方法についての詳細は、計画、再利用、予算を参照してください。

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

フォトグラメトリ

私たちは、自分たちで構築する時間が足りないことを知っていたので、**クリエイティブ・コモンズ (CC0)から取得したフォトグラメトリを利用して、1:1のテクスチャシートで高品質のコンテンツを作成するプロセスを加速することに決めました。フォトグラメトリ**は、オブジェクトのすべての角度から数百枚の画像をキャプチャして、高品質のモデルを作成するプロセスであり、クリエイティブ・コモンズのモデルは主に教育的な性質を持つ無料のモデルであり、合法的に使用および共有できます。これらのモデルは、手作りのアセットからフォトグラメトリで作成されたアセットまでさまざまであり、このプロセスでそれらを使用することで、詳細な高解像度モデルを作成するという時間のかかるステップをスキップできました。

私たちが作成した家族のバックストーリーは、彼らを「風変わりなコレクター」として描写し、オカルトに手を出しているとしています。彼らは世界中からアーティファクトを集めており、私たちはそのストーリーを反映するものを家に詰め込みたかったのです。私たちは、CC0博物館コンテンツからスキャンデータを取得し、骨董品、像、剥製などのモデルを取得し、スタジオ用に最適化するために必要なUVマッピング、リトポロジー、テクスチャ作業を開始しました。

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

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

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

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

ディフューズに焼き付けられた照明を持つ元のスキャンデータテクスチャ。

**物理ベースのレンダリング (PBR)**は、現実の材料や照明をより正確にシミュレートし、表現することによって、リアルなシェーディングと照明を使用する概念です。PBRテクスチャを作成する際には、アルベドテクスチャに焼き付けられた照明情報がないか、非常に少ないことが重要でした。なぜなら、スタジオのエンジンは画像ベースの照明(IBL)からこれを計算し、テクスチャのノーマル、粗さ、および金属感の表面値を使用して、現実の材料を正しく表現するからです。対照的に、ディフューズテクスチャは、これらの個々のマップの詳細がすべてまたは一部焼き付けられた一つのテクスチャを持つことがあり、IBLや他の個々のPBRテクスチャの助けなしにその詳細を持たせる必要がある場合に便利です。ディフューズテクスチャを保持するか、自分のPBRテクスチャを作成するかを決定する際には、自分のデザインやメモリ予算の制限を考慮してください。

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

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

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

手動または自動でリトポロジーを行うには、お好きな3Dアプリケーションを使用できます。私たちは、手動リトポロジーに3DS Maxを使用し、Zbrushを使用してZremesherまたはDecimation Toolを使って自動リトポロジーを行いました。**Zremesherツールは、形状を維持するためにより高い頂点数を必要とする四角形を維持するためにメッシュを自動リトポロジーすることを可能にし、Decimation**ツールは、より低い頂点数で三角形を使用して自動リトポロジーを行い、形状を維持することができました。

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

自動ルートを選択した場合でも、モデル/メッシュのクリーンアップが必要になることが多く、これは自動リトポロジーが高解像度メッシュ、構築方法、およびそのアルゴリズムに大きく依存するためです。私たちは、元の形状を維持しながら低い頂点数を持つことがより重要であったため、三角形メッシュでのデシメーションルートを選択する傾向がありました。

重なり合いと悪いトポロジーは、オートリトポロジー時に発生する可能性のあるサーフェスノーマルエラーを引き起こします。これを修正する必要があり、さもなければモデルにメッシュと照明の問題が発生します。
高解像度のサーフェスノーマルに従って面を手描きするプロセス。

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

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

アルベド、ノーマル、金属感、粗さのPBRテクスチャを**Substance Painter**で最終化した後、新しいアセットはスタジオにインポートする準備が整いました!スキャンデータアセットとリトポロジーされたアセットの間にはいくつかの品質の違いがありましたが、アセットが1,000,000ではなく1,000頂点であるときの価値あるトレードオフでした。また、メモリ予算を維持し、ゲームをよりスムーズに実行できるようにしました。

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

パッケージを活用する

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

全体の寝室のパッケージの例。通常の状態または腐敗した状態に特有のものは、このパッケージの外に存在しました。

パッケージを使用することで、壁パネルの木のトリムから部屋全体まで、すべてを変更でき、部屋の両方の状態が変更に更新されます。また、SurfaceAppearanceオブジェクトをパッケージに変換することで、ゲーム全体でマテリアルの外観を一度に更新できるようにしました。マテリアルの再利用は、明らかな複雑さにもかかわらず、デモをできるだけパフォーマンス良くするために重要でした。

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

アーミラリーアセット
アーミラリーモデルパッケージ
金属サーフェスアピアランスパッケージ

個々のオブジェクトやModelsやFoldersのようなオブジェクトのグループをパッケージに変換する方法、またはパッケージの編集アクセスのための作成者を選択する方法については、パッケージを参照してください。私たちは、すべてのパッケージの作成者としてVistech Demo Groupを指定することに決めました。これにより、グループ内の全員が必要に応じてパッケージにアクセスし、編集できるようになりました。また、グループが所有するすべてのゲーム間でこれらのパッケージを共有することも可能になりました!

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

パッケージを使用することで、1つのコンテンツを扱うだけで部屋の2つのバージョンを作成できました。

ゲームと同じ場所ファイルで完全に作業するのではなく、すべてのコンポーネントをパッケージリンクで持つアセットストレージ場所を構築しました。このストレージ場所でパッケージに変更を加えると、それが自動的に、そして即座にそのパッケージを使用するすべての場所で更新されます。オブジェクトを修正したり、関数を追加したり、詳細に取り組んだりすることができ、メインゲームのムードや照明をナビゲートする必要がなくなり、何をしているのかを見やすくしました。

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

パッケージは、追加の作業をあまりせずに3Dでさまざまなアイデアを探求する自由を私たちに与えてくれました。実験がうまくいかなかった場合やゲームを壊した場合、アセットの以前のバージョンに戻ることができました。パッケージ内のバージョンを戻すことで、何時間もの作業が復元されたことが何度もありました。最終的に、パッケージなしではこのデモの最終的な仕上げを達成することはできませんでした。

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