バトルフィールド 6 ポータル SDK
バトルフィールドのポータルビルダーツールは、クリエイターとプレイヤーがバトルフィールドの限界に挑戦できる多様なサンドボックスです。詳細なオプションにより、好みに合わせてバトルフィールド体験をカスタマイズしたり、まったく新しい体験を創造したりできます。
ポータルビルダーツールでは、空間エディターで既存オブジェクトの移動・拡大縮小・複製を行い、環境をかつてないほど自由に制御可能。ボットスクリプティングとカスタマイズ可能なUIにより、全く新しいゲームモードの制作も実現します。
ポータルで制作された体験は全て、コミュニティセクション内の「コミュニティ体験」として公開されます。
詳細は公式サイトをご覧ください:https://portal.battlefield.com
はじめに
同梱のGodot実行ファイルを開きます。
「プロジェクト選択」ウィンドウが開きます。GodotProjectフォルダをこのウィンドウにドラッグするとPortalプロジェクトが自動的にインポートされます。または「インポート」ボタンを押して手動で選択してください。
Battlefield 6 Portalプロジェクトを開き、起動するまで待ちます。数分かかる場合があります。
Godot UI右側の「BFPortal」タブにある「Portal Setup」ボタンをクリックし、セットアップが完了するまで待ちます。数分かかる場合があります。
空間編集を開始するには、「Scene」ドロップダウンを開き「Open Scene」を選択してレベルを開きます。「levels」ディレクトリを開き、編集を開始したいレベルを選択してください。
注意:レベルジオメトリはGodotのデフォルトカメラ位置より上にあることが多いため、レベルが見つからない場合は上方向を確認してください。
「プロジェクト選択」ウィンドウが開きます。GodotProjectフォルダをこのウィンドウにドラッグするとPortalプロジェクトが自動的にインポートされます。または「インポート」ボタンを押して手動で選択してください。
Battlefield 6 Portalプロジェクトを開き、起動するまで待ちます。数分かかる場合があります。
Godot UI右側の「BFPortal」タブにある「Portal Setup」ボタンをクリックし、セットアップが完了するまで待ちます。数分かかる場合があります。
空間編集を開始するには、「Scene」ドロップダウンを開き「Open Scene」を選択してレベルを開きます。「levels」ディレクトリを開き、編集を開始したいレベルを選択してください。
注意:レベルジオメトリはGodotのデフォルトカメラ位置より上にあることが多いため、レベルが見つからない場合は上方向を確認してください。
主な機能
空間エディター:
Battlefield 6 Portalでは、付属のGodotエディターを用いて全レベルの空間編集を追加的に行えます。レベル内に存在するほとんどのオブジェクトを新規インスタンスとして追加し、移動・回転・拡大縮小して、想像できるあらゆるものを構築できます。
環境オブジェクトに加え、Portalには各マップに追加・変更可能なゲームプレイオブジェクト(司令部、スポーンポイント、戦闘エリアなど)が多数含まれています。
マップ編集内容はGodotからエクスポートされ、Portal Web Builder経由でカスタムエクスペリエンスに紐付け可能です。
オブジェクト操作
カメラ操作
右マウスボタンを押したまま:
マウスを動かすとカメラがチルト/パンします。 W、A、S、Dキーでカメラ位置を移動します。 マウスホイールをスクロールするとカメラ移動速度が変化します。 マウスホイールをスクロールするとズームイン/ズームアウトします。
オブジェクトの選択
シーンアウトライナーでオブジェクトをクリックして選択します。
「Q」キーを押した後、3Dシーン内で選択したいオブジェクトをクリックします。
「F」キーを押すと、選択したオブジェクトを画面中央に表示します。
「Q」キーを押した後、3Dシーン内で選択したいオブジェクトをクリックします。
「F」キーを押すと、選択したオブジェクトを画面中央に表示します。
オブジェクトの移動
オブジェクトを選択した状態で「W」を押すと移動モードに入ります。
オブジェクトの回転
オブジェクトを選択した状態で「E」を押すと回転モードに入ります。
オブジェクトの拡大縮小
オブジェクトを選択した状態で「R」を押すと拡大縮小モードに入ります。
注:オブジェクトは常に均一に拡大縮小してください。非均一な拡大縮小は公式にはサポートされていません。
注:オブジェクトは常に均一に拡大縮小してください。非均一な拡大縮小は公式にはサポートされていません。
オブジェクトライブラリ
オブジェクトライブラリからオブジェクトをクリックしてドラッグし、3Dシーンまたはシーンアウトライナーに配置します。
編集中のレベルに対応するレベルタブ内のオブジェクトのみを使用してください。他のレベルのオブジェクトの使用は、ほとんどの場合サポートされていません。
レベルで使用可能なアセットを確認するには、Godot画面中央下部のオブジェクトライブラリで該当レベルのタブを確認してください。
編集中のレベルに対応するレベルタブ内のオブジェクトのみを使用してください。他のレベルのオブジェクトの使用は、ほとんどの場合サポートされていません。
レベルで使用可能なアセットを確認するには、Godot画面中央下部のオブジェクトライブラリで該当レベルのタブを確認してください。
マップ編集のエクスポート
BFPortalタブの「現在のレベルをエクスポート」ボタンを押して、現在のレベル編集内容をエクスポートします。
これにより、レベル編集内容が.spatial.jsonファイルとしてエクスポートされ、Portal Web Builderツール経由でカスタムエクスペリエンスのマップに追加できます。
これにより、レベル編集内容が.spatial.jsonファイルとしてエクスポートされ、Portal Web Builderツール経由でカスタムエクスペリエンスのマップに追加できます。
静的レイヤー
各マップには「静的」レイヤーが含まれており、各レベルの地形とベイク済みアセットを格納しています。これらのオブジェクトは現在編集できません。
重要なゲームプレイオブジェクト
戦闘エリア
戦闘エリアは、レベル内でプレイ可能な境界を定義します。
戦闘エリアには、作成した境界で設定された戦闘ボリュームプロパティが必要です。ポリゴンボリュームを使用し、ボリュームのポイントを左クリックで押したまま移動させ、Ctrlキーを押しながら左クリックで新しいポイントを作成して形状を描画します。ポイントを削除するには、Ctrlキーを押しながら個々のポイントを右クリックします。
動作中の戦闘エリアは全マップに事前配置されています。
戦闘エリアには、作成した境界で設定された戦闘ボリュームプロパティが必要です。ポリゴンボリュームを使用し、ボリュームのポイントを左クリックで押したまま移動させ、Ctrlキーを押しながら左クリックで新しいポイントを作成して形状を描画します。ポイントを削除するには、Ctrlキーを押しながら個々のポイントを右クリックします。
動作中の戦闘エリアは全マップに事前配置されています。
司令部(HQ)とプレイヤースポナー
レベルに展開するには、HQ_PlayerSpawner または PlayerSpawner オブジェクトのいずれかを設定する必要があります。
HQ_PlayerSpawnerは標準的な戦場司令部スポナーであり、プレイヤーが自チームの司令部を使用してマップ上に手動でスポーンすることを可能にします。
HQ_PlayerSpawnerは空間エディタのインスペクターパネルで特定のチームに割り当てられます。
PlayerSpawnerは司令部を持たない代替スポーン方法であり、プレイヤー配置を直接スクリプト化するために使用できます。
PlayerSpawnerは特定のチームに割り当てられず、あらゆるプレイヤーのスポーンに使用可能です。
両スポナータイプとも機能するには、1つ以上のSpawnPointオブジェクトにリンクする必要があります。
動作するHQのサンプルは全レベルに事前配置されています。
HQ_PlayerSpawnerは標準的な戦場司令部スポナーであり、プレイヤーが自チームの司令部を使用してマップ上に手動でスポーンすることを可能にします。
HQ_PlayerSpawnerは空間エディタのインスペクターパネルで特定のチームに割り当てられます。
PlayerSpawnerは司令部を持たない代替スポーン方法であり、プレイヤー配置を直接スクリプト化するために使用できます。
PlayerSpawnerは特定のチームに割り当てられず、あらゆるプレイヤーのスポーンに使用可能です。
両スポナータイプとも機能するには、1つ以上のSpawnPointオブジェクトにリンクする必要があります。
動作するHQのサンプルは全レベルに事前配置されています。
スポーンポイント
HQ_PlayerSpawners および PlayerSpawners に接続されたオブジェクトで、プレイヤーがレベル内にスポーンできる位置を決定します。
エリアトリガー
AreaTrigger オブジェクトは PolygonVolume と組み合わせることで、スクリプティングにおけるイベントのトリガーに使用できます。例:
OnPlayerEnterAreaTrigger
OnPlayerExitAreaTrigger
OnPlayerEnterAreaTrigger
OnPlayerExitAreaTrigger
DeployCam
DeployCamは、レベルに展開する際に展開画面で使用されるカメラを設定するために使用されます。
VehicleSpawners
VehicleSpawnersは、スクリプトを介してマップに車両をスポーンさせるトリガーとして使用できます。
ワールドアイコン
ワールドアイコンはレベル内に配置でき、ワールド内のアイコンやテキストを作成できます。
インタラクトポイント
インタラクトポイントはレベル内に配置でき、スクリプト内のイベントをトリガーするために使用できます。
AI_Spawner
AIスポナーはカスタムAIボットをレベル内にスポーンするために使用されます。
これらのボットとその動作は、以下を通じて制御およびカスタマイズ可能です。
これらのボットとその動作は、以下を通じて制御およびカスタマイズ可能です。
*
利用可能なレベル
エンパイア・ステート
MP_Aftermath
MP_Aftermath
イベリア攻勢
MP_バッテリー
MP_バッテリー
解放の峰
MP_キャップストーン
MP_キャップストーン
Empire State
MP_Aftermath
Iberian Offensive
MP_Battery
Liberation Peak
MP_Capstone
Manhattan Bridge
MP_Dumbo
Mirak Valley
MP_Tungsten
New Sobek City
MP_Outskirts
Operation Firestorm
MP_Firestorm
Saint’s Quarter
MP_Limestone
Siege of Cairo
MP_Abbasid
Gameplay Logic Scripting
バトルフィールド6ポータルでは、カスタムエクスペリエンス向けにゲームプレイロジックをスクリプト化する複数の方法に対応しました。従来のポータルビルダーツールの経験者や、スクリプト作成を初めて試みたい方に向けて、Blocklyロジック編集ツールはポータルWebビルダーツールで引き続き利用可能です。一方、より高度なユーザーや大規模な特注エクスペリエンスを構築したいクリエイター向けに、ポータルではTypeScriptによるロジックスクリプト化をサポートしています。
ゲームプレイスクリプティング
ゲームプレイスクリプティングは、Blocklyを介したPortal Web Tool、またはTypeScriptで実施可能です。
TypeScriptはPortal Web Toolのスクリプトページ内で直接記述するか、外部で開発しスクリプトページ経由でアップロードできます。
TypeScript関数に関する詳細は、SDKに含まれる「index.d.ts」ファイルを参照してください。
以下に、Portalにおける主な新機能と機能拡張の概要を示します。
TypeScriptはPortal Web Toolのスクリプトページ内で直接記述するか、外部で開発しスクリプトページ経由でアップロードできます。
TypeScript関数に関する詳細は、SDKに含まれる「index.d.ts」ファイルを参照してください。
以下に、Portalにおける主な新機能と機能拡張の概要を示します。
カスタムUI
Portalで完全にカスタマイズ可能なUIシステムが利用可能になりました。
このカスタムUIシステムはインタラクティブ要素と非インタラクティブ要素の両方をサポートし、インタラクティブなメニューや店舗などの構築を可能にします。
このカスタムUIシステムはインタラクティブ要素と非インタラクティブ要素の両方をサポートし、インタラクティブなメニューや店舗などの構築を可能にします。
AI行動制御
通常のバックフィルボットやスタティックボットとは別に、カスタムAIボットをAI_Spawnerオブジェクトを使用してスクリプト経由で直接レベルにスポーンできます。
通常のボットとは異なり、カスタムAIボットはターゲット、スタンス、速度、移動先などへの直接スクリプティングをサポートします。これにより高度なカスタマイズ性と柔軟性が実現されます。
通常のボットとは異なり、カスタムAIボットはターゲット、スタンス、速度、移動先などへの直接スクリプティングをサポートします。これにより高度なカスタマイズ性と柔軟性が実現されます。
オブジェクト生成
環境オブジェクトやゲームプレイオブジェクトは、SpawnObject関数により実行時に生成可能です。
生成可能なオブジェクトはマップごとに制限され、そのマップに既に存在するオブジェクト、またはグローバルオブジェクトリストの一部であるオブジェクトに限定されます。
生成可能なオブジェクトはマップごとに制限され、そのマップに既に存在するオブジェクト、またはグローバルオブジェクトリストの一部であるオブジェクトに限定されます。
VFX生成
ビジュアルエフェクトは、ランタイムスポナーで生成するか、空間エディターでマップに配置し、EnableVFX関数で実行時にトリガーできます。
オーディオトリガー
サウンドエフェクトは、ランタイムスポナーで生成するか、空間エディターでマップに配置し、PlaySound関数でランタイムにトリガーできます。
オーディオトリガー
サウンドエフェクトは、ランタイムスポナーで生成するか、空間エディターでマップに配置し、PlaySound関数でランタイムにトリガーできます。
オブジェクト移動
オブジェクトは、MoveObject関数またはSetObjectTransformでランタイムに移動できます。
プレイヤーのスポーン
PlayerSpawnerオブジェクトとSpawnPlayerFromSpawnPoint関数を使用することで、プレイヤーをレベル内に直接配置できます。
スクリプト内でのオブジェクト参照
空間エディタに配置されたほとんどのオブジェクトには「Obj Id」フィールドがあり、一意の番号を設定できます。これらのオブジェクトは、対応する「Get」関数を使用してスクリプト内で参照できます。例:
GetSpatialObject
GetSpawner
GetInteractPoint
GetSpatialObject
GetSpawner
GetInteractPoint
サンプルエクスペリエンス
サンプルエクスペリエンスは「mods」ディレクトリ内にあります。
Modコンポーネント:
modname.ts
Modのゲームプレイスクリプトです。
modname.tscn
Modに必要な空間編集が施されたGodotレベルです。
エクスペリエンスで使用するにはGodotからエクスポートする必要があります。
modname.strings.json
Modで使用される事前定義された文字列リストです。
Modコンポーネント:
modname.ts
Modのゲームプレイスクリプトです。
modname.tscn
Modに必要な空間編集が施されたGodotレベルです。
エクスペリエンスで使用するにはGodotからエクスポートする必要があります。
modname.strings.json
Modで使用される事前定義された文字列リストです。