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 の仕掛けの配列にリンクすれば、ゲームはそれに応じてスケールします。
コンテンツ ドロワーから [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):
上のコードでは変数の定義を示しています。
OnBegin<override>()<suspends>:void=
# Can use this variable to scale the number of eliminations needed based on how many item granters there are in the experience
set NumberOfEliminationsToWin = WeaponItemGranters.Length
Print("Number of Weapon Item Granters: {WeaponItemGranters.Length}")
# Randomize the order in which the weapons are granted
set WeaponItemGranters = Shuffle(WeaponItemGranters)
# Get all the players in the experience
AllPlayers := GetPlayspace().GetPlayers()
上のコードは、勝利に必要な撃破回数についてのゲーム ルールを設定するロジックを示しています。 アイテム グランターの配列の順序はシャッフルされます。
プレイヤーは、マップに追加され、進捗と次に付与されるべきアイテムの両方がトラックされます。
# Event that handles when a player is eliminated
OnPlayerEliminated(Result:elimination_result):void=
Print("Player Eliminated")
EliminatingCharacter := Result.EliminatingCharacter
if (FortCharacter := EliminatingCharacter?):
if (EliminatingAgent := FortCharacter.GetAgent[]):
GrantNextWeapon(EliminatingAgent)
上のコードは、プレイヤーが撃破されるときのイベントです。 撃破したプレイヤーには、次の銃が付与されます。
# Check if there is a winner for the game, if not then grant the next weapon
GrantNextWeapon(Agent:agent):void=
if (var CurrentItemNumber:int = AgentMap[Agent]):
if (IsVictoryConditionMet(CurrentItemNumber) = true):
EndGame(Agent) # Game has been won
else: # Game is not over yet
set CurrentItemNumber = CurrentItemNumber + 1
if (ItemGranter := WeaponItemGranters[CurrentItemNumber - 1]):
ItemGranter.GrantItem(Agent)
上のコードは、撃破したプレイヤーにどの銃を付与するか、および対戦を終了するための最後の銃かどうかの両方を判断するロジックです。
# Check if the victory condition has been met and return the the result
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 | エンド ゲームの仕掛け | Verse の仕掛けをエンド ゲームの仕掛けにリンクします。 |
WeaponItemGranters - 0 | アイテム グランター | アイテム グランターを Verse の仕掛けにリンクします。 |
WeaponItemGranters - 1 | Item Granter2 (アイテム グランター 2) | アイテム グランターを Verse の仕掛けにリンクします。 |
WeaponItemGranters - 2 | Item Granter3 (アイテム グランター 3) | アイテム グランターを Verse の仕掛けにリンクします。 |
WeaponItemGranters - 3 | Item Granter4 (アイテム グランター 4) | アイテム グランターを Verse の仕掛けにリンクします。 |
[Launch Session (セッションを開始)] を選択して、完成したレベルをテストします。