Verse Elimination (Verse 撃破) では、プレイヤーは、撃破のたびに変わるロードアウトを装備して戦います。これらのメカニクスは、アイテム グランター のような仕掛けを Verse の仕掛けにリンクすることで可能になります。
この高度な Verse テンプレートでは、以下の Verse API の使用例を示します。
-
Map コンテナ タイプ
-
Fort_character EliminateEvent サブスクリプション
概要
-
新規プロジェクトを作成 し、島の設定を変更 してゲームを設定します。
-
仕掛けを設定します。
-
Verse スクリプトを追加します。
新規プロジェクトを作成し、ゲームを設定する
-
UEFN を開き、空のプロジェクトを作成します。
-
[Outliner (アウトライナー)] で IslandSettings (島設定) の仕掛けを選択し、[User Options - Game Rules (ユーザー オプション - ゲーム ルール)] を見つけます。

- 以下のように [User Options] を変更します。
オプション | 値 | 説明 |
---|---|---|
Eliminated Player’s Items (撃破されたプレイヤーのアイテム) | Keep (維持) | プレイヤーは、自分のロードアウトでリスポーンします。 |
Allow Item Drop (アイテム ドロップを許可) | False (オフ) | プレイヤーはゲーム中にインベントリからアイテムをドロップできません。 |
Environment Destruction (環境破壊) | Off (オフ) | ゲーム中に、環境が破壊されることがなくなります。 |
仕掛けを設定する
このチュートリアルでは、次の仕掛けを使用します。
-
~ x アイテム グランター
-
1 x エンド ゲームの仕掛け
-
~ x プレイヤー スポーン パッド
アイテム グランターの仕掛け

アイテム グランター の仕掛けを使用して、プレイヤーに武器を付与します。ダイレクト イベント バインディングを使用してアイテム グランターを Verse の仕掛けと接続した後、Verse スクリプトで、武器の順序をシャッフルして、撃破のたびにそれを付与できます。
使用するアイテム グランターの数に制限はありません。それらを Verse の仕掛けの配列にリンクすれば、ゲームはそれに応じてスケールします。
コンテンツ ドロワーから [Content Drawer (コンテンツ ドロワー)] > [Fortnite (フォートナイト)] > [Devices (仕掛け)] に移動し、アイテム グランターをマップにドラッグします。
この仕掛けを設定するには、[User Options] を次のように設定します。
オプション | 値 | 説明 |
---|---|---|
Item Definition (アイテム定義) | pick a weapon (武器を選択する) | アイテム グランターの仕掛けごとに、一意の武器を 1 つ選択します。 |
エンド ゲームの仕掛け

エンド ゲーム の仕掛けを使用して、条件が満たされたときにラウンドを終了します。撃破が特定のしきい値に達したら、Verse スクリプトはこの仕掛けを起動してラウンドを終了します。
この仕掛けではデフォルト設定を使用します。
プレイヤー スポーン パッド

プレイヤー スポーン パッド を使用して、マップにプレイヤーをスポーンさせることができます。スポーン パッドは、マップ全体に均等に分散して配置します。これは複数のプレイヤーを近くにスポーンしないためです。
この仕掛けではデフォルト設定を使用します。
Verse スクリプトを追加する
まず @editable 関数で仕掛けを参照し、次の Verse スクリプトを追加 します。
コードは、記述されている順にコピーできます。わかりやすくするため、スクリプト内にコメントが追加されています。
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
using { /Verse.org/Simulation/Tags }
using { /Verse.org/Random }
using { /UnrealEngine.com/Temporary/Diagnostics }
elimination_game_device := class(creative_device):
@editable
EndGameDevice : end_game_device = end_game_device{}
# 武器の付与に使用するアイテム グランターの配列
@editable
var WeaponItemGranters : []item_granter_device = array{}
# これは後に設定され、島内の武器アイテム ブランターの数と同等になります
var NumberOfEliminationsToWin : int = 0
# プレイヤーの進捗をトラックするマップ コンテナ。プレイヤーに付与する武器を判断する方法です
var AgentMap : [agent]int = map{}
上のコードでは変数の定義を示しています。
OnBegin<override>()<suspends>:void=
# この変数を使って、エクスペリエンス内のアイテム グランターの数に応じて、必要な撃破の数をスケールできます
set NumberOfEliminationsToWin = WeaponItemGranters.Length
Print("Number of Weapon Item Granters: {WeaponItemGranters.Length}")
# 武器が付与される順序をランダム化します
set WeaponItemGranters = Shuffle(WeaponItemGranters)
# エクスペリエンス内のすべてのプレイヤーを取得します
AllPlayers := GetPlayspace().GetPlayers()
for (EliminationGamePlayer : AllPlayers):
if (FortCharacter := EliminationGamePlayer.GetFortCharacter[]):
FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # 撃破されたイベントをサブスクライブします
# プレイヤーをマップに追加して進捗をトラックします
if (set AgentMap[EliminationGamePlayer] = 1) {}
# 各プレイヤーに最初の武器を付与します
if (FirstItemGranter:item_granter_device = WeaponItemGranters[0]):
FirstItemGranter.GrantItem(EliminationGamePlayer)
上のコードは、勝利に必要な撃破回数についてのゲーム ルールを設定するロジックを示しています。アイテム グランターの配列の順序はシャッフルされます。
プレイヤーは、マップに追加され、進捗と次に付与されるべきアイテムの両方がトラックされます。
# プレイヤーが撃破されたときの処理を行うイベント
OnPlayerEliminated(Result:elimination_result):void=
Print("Player Eliminated")
EliminatingCharacter := Result.EliminatingCharacter
if (FortCharacter := EliminatingCharacter?):
if (EliminatingAgent := FortCharacter.GetAgent[]):
GrantNextWeapon(EliminatingAgent)
上のコードは、プレイヤーが撃破されるときのイベントです。撃破したプレイヤーには、次の銃が付与されます。
# ゲームの勝者がいるかどうかをチェックし、いない場合は次の武器を付与します
GrantNextWeapon(Agent:agent):void=
if (var CurrentItemNumber:int = AgentMap[Agent]):
if (IsVictoryConditionMet(CurrentItemNumber) = true):
EndGame(Agent) # ゲームに勝利しました
else: # ゲームはまだ終わっていません
set CurrentItemNumber = CurrentItemNumber + 1
if (ItemGranter := WeaponItemGranters[CurrentItemNumber - 1]):
ItemGranter.GrantItem(Agent)
if (set AgentMap[Agent] = CurrentItemNumber) {}
上のコードは、撃破したプレイヤーにどの銃を付与するか、および対戦を終了するための最後の銃かどうかの両方を判断するロジックです。
# 勝利条件が満たされているかどうかをチェックして、結果を返します
IsVictoryConditionMet(EliminationNumber:int)<transacts>:logic=
if:
EliminationNumber = NumberOfEliminationsToWin
then:
return true
else:
return false
上のコードは、勝利の条件が満たされたかどうかをチェックするロジックです。
EndGame(Agent:agent):void=
EndGameDevice.Activate(Agent)
上のコードは、勝利したプレイヤーを必要とするエンド ゲームの仕掛けを示すロジックです。
Verse の仕掛けを設定する

Verse の仕掛けでは、ダイレクト イベント バインディングを使用して接続されたアイテム グランターの配列を通じて、ゲームの終了と撃破したときの銃の付与をコントロールします。
Verse スクリプトをコンパイルし、その仕掛けを コンテンツ ドロワー で見つけます。Verse の仕掛けをマップの非表示のエリアにドラッグし、設定をカスタマイズします。
この仕掛けを使用し、ダイレクト イベント バインディングを必要な仕掛けにリンクすると、Verse スクリプトがそれらの仕掛けを参照できます。

仕掛けの [Details (詳細)] パネルで、上の画像のように、参照される仕掛けそれぞれに合うように設定を構成します。
この仕掛けを設定するには、[User Options] を次のように設定します。
オプション | 値 | 説明 |
---|---|---|
EndGameDevice | End Game Device (エンド ゲームの仕掛け) | Verse の仕掛けをエンド ゲームの仕掛けにリンクします。 |
WeaponItemGranters - 0 | Item Granter (アイテム グランター) | アイテム グランターを Verse の仕掛けにリンクします。 |
WeaponItemGranters - 1 | Item Granter2 (アイテム グランター 2) | アイテム グランターを Verse の仕掛けにリンクします。 |
WeaponItemGranters - 2 | Item Granter3 (アイテム グランター 3) | アイテム グランターを Verse の仕掛けにリンクします。 |
WeaponItemGranters - 3 | Item Granter4 (アイテム グランター 4) | アイテム グランターを Verse の仕掛けにリンクします。 |
[Launch Session (セッションを開始)] を選択して、完成したレベルをテストします。