Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Caveはゲームエンジンであり、あなたのアイデアを実際のビデオゲームに変えることを可能にします。これは、すべてを組み合わせてレベルデザイン、インターフェース、ロジックを作成するための手段です。しかし、テクスチャ、3Dモデル、アニメーション、サウンドや音楽などの実際のアート制作には、専門のツールを使うほうが良いでしょう。3DにはBlender、3Ds Max、Maya、Sketchup、画像編集にはAdobe Photoshop、GIMP、Krita、サウンドにはAudacityなどのツールがあります。もちろん、これら以外の外部ツールを使用しても問題ありません。ここで重要なのは:

ほとんどのゲームはエンジン外で作られたコンテンツを使用しています。

Caveでも同様です。つまり、これらのファイルをエンジンにインポートする必要があり、どのようにインポートするか、良い点と悪い点の実践例を理解することが重要です。インポートは、それらのファイルをCaveに取り込み、自分のプロジェクトの一部とするステップです。

このレッスンは初心者向けのインポートのワークフローを紹介します。

学べる内容:

  • Caveがインポート可能なファイル種別。
  • インポートされたファイルがCave内でどうなるか。
  • 大量のアセットパックよりシンプルな最初のインポートが良い理由。
  • モデルのインポートが複数のアセットタイプを生成する方法。
  • インポート後に確認すべきこと。

外部ファイルがCaveアセットに変わるときに何が起きているか、理解することが目的です。

何がインポートできる?

Caveはさまざまな外部コンテンツをインポートできます。

インポート可能ファイルタイプ 変換後
画像(様々なフォーマット) テクスチャアセット
OGG音声 オーディオアセット
TTFフォント フォントアセット
.cavePkg ファイル インポートされたCaveアセットパッケージ
3Dモデル メッシュ、マテリアル、テクスチャ、アーマチュア、アニメーション、テンプレートなど(ファイルにより異なる)

インポート後、これらのファイルはAsset Browser内のCaveアセットになります。

つまり、シーン、マテリアル、エンティティやエンティティテンプレート、UI、オーディオシステム、スクリプト、ロジックなど、どこでも使えるのです。インポートファイルは単なるディスク上のファイルではなくなり、Caveが参照、保存、整理、再利用できるプロジェクトのコンテンツとなります。

Caveは独自フォーマットを使用する

Caveにファイルをインポートすると(画像、テクスチャ、音声、3Dモデルなど)、アセットはCave Engineの独自かつカスタムフォーマットに変換されます。これは重要で、この内部フォーマットはゲーム用に最高のパフォーマンスを実現するため、解析が非常に速いのです。エンジンでは、多くの内部最適化とキャッシュ処理が自動的に行われ、アセットがゲーム制作に即した形で準備されます。

> これらは内々の処理なので気にしなくていいですが、このプロセスが起きていること、その影響(なぜ良いか)を理解することは重要です。

例えば、.png画像をCaveにインポートした場合、ゲーム内では元のpngファイルは使われません。インポート時に変換処理が施されてCave独自のフォーマットが使用されます。同様に音声や3Dモデルも同じです。特に3D素材は生のDCCフォーマット(.fbx.obj.glbなど)をそのまま使いません。これらをインポートするとエンジンフォーマットに変換されます。

これは、たとえ人気のフォーマットであっても、ゲーム中に直接fbxpngを解析するコストが高く、パフォーマンスに影響するためです。Caveは必要なメッシュ、マテリアル、アニメーション、テクスチャなどのデータを抽出し、エンジンフォーマットに変換して保存します。

これには3つの重要な意味があります:

  • ゲームの実行が高速化され、ディスクの容量も削減されます。
  • アセットのインポートは破壊的です。Caveは元データの参照を持たないため、外部で変更した場合は再インポートが必要です。
  • 一部の特徴は対応していない可能性があります。対応していない特徴がある場合は通知があり、それらは最終アセットに含まれません。

インポートの仕組みがわかったところで、具体的な方法を見ていきましょう。


ドラッグ&ドロップで画像をインポート

画像はAsset Browserにドラッグ&ドロップすることでインポートできます。

Caveは以下の主要な画像フォーマットをサポートしています:

  • PNG
  • JPG/JPEG
  • TGA
  • BMP
  • HDR
  • PSD
  • PNM
  • GIF
  • PIC
  • DDS

インポートされた画像はTexture Assetとなり、マテリアル、UI要素、スカイ設定、その他画像データを必要とするシステムで使用可能です。例えば、岩のマテリアルのカラーマップ、UIのアイコン、シーンのスカイボックス画像などに使われます。

最初のテストはシンプルに:テクスチャを1枚インポートし、それをマテリアルに割り当て、それをシーン内のメッシュに適用して、3D Viewで結果を確認してみましょう。

オーディオファイルのインポート

音声ファイルもプロジェクトにドラッグ&ドロップでインポート可能です。現在、CaveはOGG音声ファイルをインポートします。ほかの形式の音声はOGGに変換してからインポートしてください。オンラインの変換ツールもありますが、Audacityという無料で簡単に扱えるソフトの利用もおすすめです。

OGGはXiph.Org Foundationによる無料のオープンソースマルチメディアコンテナ形式で、高品質音声を比較的小さいファイルサイズで配信・保存できる形式です。ref

インポートした音声はオーディオアセットとなり、Audio Player Componentやロジックブリック、Pythonコードなど、エンジン内のどこでも使えます。例:

cave.playSound("My Audio File")

最初の音声インポートは短く簡単にテストできるものが良いです:

  • コイン取得音
  • ボタンクリック
  • ドアの開閉音
  • 簡単な環境音ループ
  • ゲームサウンドトラックの音楽

フォントとCaveパッケージのインポート

CaveはTTFフォントファイルをインポートできます。TTF(TrueTypeフォント)はAppleが開発し、その後Microsoftも採用した今日の標準的なスケーラブルデジタルテキストレンダリングフォーマットの一つです。

フォントは主にUI Element Componentで使われ、ゲームHUD、テキスト、メニュー、ボタン、字幕、クレジット、対話型インターフェースなどを作る際に利用されます。フォント選択はシンプルなメニューでも大きな違いを生みます。

Caveパッケージのインポート

Caveは.cavePkgファイルもインポート可能です。CaveパッケージはCaveアセットのパッケージで、別のプロジェクトに持ち込むことができます。

Asset Browserでフォルダやファイルを右クリックすると、Caveパッケージとしてエクスポートできます。エクスポートしたパッケージは他のプロジェクトにインポート可能で、共通のロジック共有に便利です。フォルダやアセット単位でエクスポートするため、例えばマテリアルとそれに使うテクスチャ一式をまとめてフォルダでエクスポートする必要があります。マテリアルのみを単独でエクスポートしてもテクスチャは含まれません。

Cave PackageをAsset Browserにドラッグ&ドロップするとインポートされ、元のファイル構造が既存プロジェクトに再現されます。再利用可能なアセット共有や新規プロジェクトへのデフォルトコンテンツ導入、複数プロジェクト間のコンテンツ移動に便利です。


3Dモデルのインポート

3Dゲームエンジンで最も重要な部分の一つが3Dモデルのインポートです。Caveはassimpを使い、幅広い3Dモデルフォーマットのインポートに対応しています。

複数のモデルフォーマットに対応していますが、Caveで推奨される主なフォーマットはFBXです

モデルのインポートは複数のアセットを一度に生成できます:

  • メッシュ
  • マテリアル
  • テクスチャ
  • アーマチュア
  • アニメーション
  • エンティティテンプレート

生成される内容は元のファイルによります。

単純な木箱ならメッシュ、マテリアル、テクスチャ、テンプレートのみ生成されるかもしれません。アニメーション付きキャラクターならメッシュ、アーマチュア、アニメーション、マテリアル、テクスチャ、複雑なテンプレートが生成される可能性があります。

最初のインポートにおすすめ

最初のテストにはシンプルで整理されたアセットを使ってください。Kenney Asset Packs (CC0)は初心者向けによく整理されていて軽量、理解しやすく適しています。ほかにQuaternius Assets (CC0)FAB Asset Storeもチェックできます。

良い最初のインポートは木箱、岩、ローポリ木、シンプルな建物やキャラクターです。巨大なキャラクターパックや大規模な環境ファイルは避けましょう。シンプルなアセットはCaveが作り出す内容や設定の重要性、インポート内容の見え方理解に役立ちます。慣れてきたら複雑な構成に挑戦してください。

モデルのインポート手順

FBXなどのアセットをAsset Browserにドラッグ&ドロップすると次のようなウィンドウが表示されます:

image.png

複数ファイルの一括ドラッグ&ドロップもサポートし、ファイルごとにタブが作成されます。各タブでインポートしたいアセットを選択可能です。これにはアセットタイプの表示、ヘッダーを展開すると認識・変換された個々のアセットも一覧できます。また、インポートするか否かの個別選択や名前の変更も可能で、あとから名前変更もできます。

上部のファイルタブの前に、2つのグローバルオプション(アセットインポートごと)があります:

  • Settings(設定):インポートしたアセットのためにサブフォルダを作成するかどうか、あるいはエンティティテンプレートで自動的に物理演算を生成するかを選択できます。
  • さらに、Filters(フィルター)オプションがあります。多数のアセットやノードをインポートするときに、メッシュのようなファイル内の特定の項目だけに注目したい場合に便利です。

基本的なモデルのインポートは通常以下のように進みます:

  1. Asset Browserでフォルダを作成または選択します。
  2. モデルファイルをそのフォルダにドラッグします。
  3. Caveがファイルを解析するのを待ちます。
  4. インポートオプションを確認します。
  5. インポートする生成アセットを選択します。
  6. 必要に応じてインポートスケールを調整します。
  7. インポートを確定します。
  8. Asset Browserで生成されたアセットを確認します。

インポートオプションは生成されたアセットを種類ごとにグループ化して表示できます。

これにより、すべてを無条件で受け入れるのではなく、何をインポートすべきかを判断できます。これはモデルファイルが実際に必要なデータ以上の情報を含むことがあるため有用です。

重要なポイント:

KenneyやQuaterniusのアセットパックのような何百ものアセットをダウンロードする場合、それらのパックには通常、オブジェクトごとに異なるFBXファイルがあり、各FBXファイルには共通で使われるマテリアルや時にはテクスチャのコピーが含まれています。

同じマテリアルのコピーを含む全てのファイルをドラッグ&ドロップすると、Caveはそれらのコピーもすべてインポートし、プロジェクトに不要なデータを大量に生成してしまい、最終的にゲームのパフォーマンスを悪化させます。これはエンジンの問題ではなく、各FBXファイルにマテリアルのコピーが含まれているためです。

この場合のベストプラクティス: まず1つのFBXファイルをエンジンにインポートし、その内容とマテリアルを確認します。この最初のファイルがインポートされてマテリアルがプロジェクトに入ったら、他のファイルはマテリアルとテクスチャのインポートをフィルターで無効にしてからインポートしてください。そうするとCaveは既にインポート済みのマテリアルを名前で認識して再利用します。

インポートされたメッシュの理解

インポートされたモデルは1つまたは複数のメッシュを生成することがあります。これは元のDCCツールでのモデル構造に依存します。

例:

元のモデル インポート結果の可能性
シンプルな木箱 1メッシュ、1マテリアル、1つのEntity Template
部品が分かれたオブジェクト 複数のメッシュとマテリアル、1つのEntity Template
アニメーションキャラクター メッシュ、アーマチュア、アニメーション、1つのEntity Template

インポート後は生成されたメッシュアセットとEntity Templateを確認してください。

すべてのインポートでエンティティテンプレートが生成されます

エンティティテンプレートは、BlenderなどのDCCツールで構築したシーン設定を再現しようとします。モデリングソフトでオブジェクトを配置したレイアウトもテンプレートに反映されます。通常はこの生のテンプレートを直接使うことは少ないですが、オブジェクトをシーンに素早く配置したり、テンプレートを使わずにローカル編集を始める際に便利です。

インポートしたら以下のような一般的な問題がないか確認しましょう:

  • オブジェクトが小さすぎる?
  • 大きすぎる?
  • 回転が間違っている?
  • 意図しない分割がされている?
  • 生成されたテンプレートは正しく見える?

これらの問題は、アセットをレベル全体で使い始める前に早期に発見する方が良いです。

問題があればBlenderや他のDCCで開いて確認してください。Caveにインポートする前にメッシュを三角形に分割(トライアングル化)することも推奨します

重要: 3DモデルをCaveにインポートすると自動的に面のトライアングル化が行われますが、誤ったトライアングル化により穴や不正な面ができることがあります。これを避けるため、DCCツール上であらかじめ自分でトライアングル化することを推奨します。


マテリアルとテクスチャの理解

インポートされたモデルはマテリアルやテクスチャも生成します。

マテリアルは表面の見た目を制御し、テクスチャはマテリアルが使用する画像データを提供します。

インポート後は必ずマテリアルを確認しましょう:

  • アルベドテクスチャは割り当てられているか?
  • ノーマルマップは正しく割り当てられているか?
  • ラフネスやメタリックマップはあるか?
  • ビューポートで見たマテリアルは正しいか?

インポートは便利ですが魔法ではありません。

インポート後にマテリアルを調整するのは普通です。たとえば、ラフネスの調整、欠けているテクスチャの修正、ゲームのビジュアルスタイルに合ったマテリアル設定の選択などがあります。

マルチマテリアルメッシュ

Caveでは、1つのメッシュに1つのマテリアルを使います。元のDCCで1オブジェクトに複数マテリアルが使われている場合、Caveはそれを複数のメッシュとして表現します。

1つのエンティティは複数のMesh Componentを持つことができ、シーン上で元の見た目を再現します。構造が異なるだけです:

複数マテリアルのオブジェクト
  Material Aを使うMesh Component
  Material Bを使うMesh Component
  Material Cを使うMesh Component

これにより、Caveは1メッシュ1マテリアルの関係をきれいに保ちつつ複雑なオブジェクトを正しく表示できます。

Caveの動作仕様上、マルチマテリアルメッシュをインポートするとAsset Browserでメッシュが複数に分割されますが、Entity Templateでは全メッシュを組み合わせた形で最終エンティティが生成されます。

インポートされたEntity Template

モデルをインポートすると、Caveは元のセットアップを表すEntity Templateを作成します。これは元の構成をできるだけ保持するために便利です。

例えば、インポートした建物は:

  • 複数のメッシュアセット
  • 複数のマテリアルアセット
  • テクスチャアセット
  • 部品をまとめたEntity Template

このテンプレートは通常、シーンにドラッグ&ドロップするのに最適なアセットです。

テンプレートの見た目が正しければ、ほかのCaveテンプレートと同じように再利用できます。目的はそれらのアセットをシーンに配置してプレイ可能な空間にすることです。

基本的なインポートのヒント

インポートはすっきりと:

  • モデルにはFBXを推奨。
  • あらかじめトライアングル化しておく。
  • 音声にはOGGを使用。
  • アセット名は読みやすく。
  • スペースかPascalCaseの名前が望ましい。
  • きちんと整理したフォルダにインポート。
  • インポートスケールをチェック。
  • 生成されたマテリアルを確認。
  • ビューポートでインポートしたテンプレートをテスト。
  • インポート後は必ず保存。

インポートは開発の通常のステップです。

少しずつ実行し結果を確認してから次へ進んでください。綺麗なインポートワークフローは、プロジェクトでカスタムコンテンツが増えたときに大きな時間節約になります。