UEFN使い方

【UEFN】Verseの始め方と基本操作|VScodeの使い方

UEクリエイターズ【運営】

UEFN上でVerseを立ち上げる方法

「Verse Explorer」タブを表示

画面左上の「Verse」→「Verse Explorer」にチェックを入れるとタブが表示される。

「Add new Verse file to project」をクリック

「Verse Explorer」タブから自身のプロジェクト名の書かれた親ファイルを選択し右クリック →「Add new Verse file to project」をクリック

「Verse Device」テンプレートを選択

「Verse Device」テンプレートを選択。Device Nameを設定して「作成」ボタンを押す。

例:「Test_device」

作成した「.Verse」ファイルをダブルクリックして開く

「Verse Explorer」タブに新しく作成した「Test_device.verse」のようなファイルが追加されているはずです。ダブルクリックして展開しましょう。

Visual Studio Code (VScode)でVerseコードを書くための基本操作

【Verse】簡単な基本操作の流れ

Q
フルコード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

#(ハッシュタグ)を先頭に付けるとメモが書ける
Test_device := class(creative_device):
    OnBegin<override>()<suspends>:void=
        Print("Hello, world!")
        Print("2 + 2 = {2 + 2}")
#(ハッシュタグ)を先頭に付けるとメモが書ける

#(ハッシュタグ)を先頭に付けるとコードに影響しないメモを書くことができます。初期テンプレートの状態でも、公式が説明書きをメモしてくれていますよね。メモなので不要であれば消して構いません。

先頭の「using {}」文は使う機能の宣言

コードの冒頭で、使いたい機能の種類をあらかじめ宣言してあげる必要があります。デフォルトでは下記の3種類が書かれています。

例えば、一番上のDeviceの部分で「Deviceの機能を使うよ」と前もって宣言することで、はじめてDevice(仕掛け)の要素をVerse内でいじることができるわけですね。

新しい仕掛け(Device)を作ろう

要するに、ここから先のコードは新しい仕掛け(Device)を作るためのものです。フォートナイトに標準で用意されている仕掛けとは別に、自分でオリジナルの仕掛けを作ることができるわけですね。

デフォルトではこのようなコードが書かれていると思います。私の場合は「Test_device」という名前の新しい仕掛け(Device)を作ろうとしているわけです。

また、その中身としては「OnBegin(開始時)」というコードの下を見ていくことで分かります。現状 Print関数が動作して、テキスト情報が出力されるだけのシンプルな機能になっています。

今回はデフォルトの状態のまま、次のステップへ進みゲーム内で動作を確認していきます。

「Verseコードをビルド」で変更を反映

VScodeでコードを書き終わったらUEFNに戻ってきて「Verse」→「Verseコードをビルド」をクリックします。そうすると変更が反映され、エラーがなければVerseのマークに緑色のチェックマークが付きます。

※問題がある場合は、赤色の警告マークが出るのでコードを修正する必要があります。

レベル内に自作のDeviceを配置

Verseで自作した仕掛け(Device)もフォートナイト標準のデバイスと同じように、レベル内に配置して使うことができます

コンテンツドロワーから、自身のプロジェクト名が書かれたフォルダの中を確認してみましょう。すると新しく「Test_device (Verseクラス)」というようなデータが追加されていると思います。

早速、ドラッグ&ドロップしてレベル内に配置してみましょう。コンピューターのような見た目をしています。これが自作の仕掛けです。

「Visible in Game」のチェックを外します

「詳細タブ」→「ユーザーオプション」→「Visible in Game」のチェックを外します。チェックを入れたままの状態だとゲーム中に見えてしまうので、外して見た目を非表示にした方がよいでしょう。

※「Enable At Game Start」はゲーム開始時に有効化する項目です。オンのまま使っていきます。

テストプレイ

「セッションを開始」ボタンを押してテストプレイしてみましょう。

自作デバイス(Device)の動作確認

ゲームを起動すると画面左上に一瞬メッセージが表示されます。

早すぎて見逃した方は「M」キーを押して「ログ」の項目を確認してみましょう。すると過去の動作履歴を確認することができます。

Hello, world!
2 + 2 = 4

というような内容が書かれていると思います。これがPrint関数の機能です。しっかりと動作していますね。

【Verse】EXPRORERタブ内の digest.verseファイルとは

VScodeで、EXPLORERタブ内に「Assets.digest.verse」「Verse.digest.verse」「Fortnite.digest.verse」というようなファイルがあります。

これらのファイルは「VSCodeがVerseのコードを理解しやすくするために用意された辞書みたいなもの」 です。

どういうこと?

VSCodeでは、関数の説明がポップアップで出たり、コード補完(候補が出る機能) がありますよね?そのためには、コードの中にどんな関数や変数があるのか、事前に知っておく必要があります

その「事前に用意された情報(辞書)」を保存しているのが、○○.digest.verse というファイルです。

UEcreators
UEcreators

機械だけではなく、私たち人間もこの辞書を覗いてみることで、Verseコードでどんなことが出来るのかを確認することができます。

【Verse】digest.verseファイル内で検索する方法

「Verse.digest.verse」ファイルを選択
「ctrl」+「F」キーで検索バーを出す
調べたい関数名などを入力

例:Print

「Enter」キーを押すことで順番に確認可能

検索内容がヒットしたら「Enter」キーを押すことで順番に見ていくことができます。

【Verse】Print関数の使い方

Print関数で出来ること

「Verse.digest.verse」ファイルで「Print」と検索すると以下のような内容が書かれています。

「Duration」は時間の長さを表す型です。そのためPrint関数には、表示時間の調節を行う機能があることが分かります。

補足
float とは?

float(フロート)とは、「小数点が使える数字」のこと!

プログラミングでは、数字の種類が2つあります。

数字の種類説明
int(整数)1, 2, 100, -5小数点なしの数字
float(浮動小数点数)1.5, 3.14, -0.75小数点ありの数字

float を使うと、小数点付きの値を計算できます。

つまり、VerseのPrint関数では、テキストの表示時間を小数点単位の秒数まで細かく指定できるというわけですね。

また「Color」は色ですね。そのためPrint関数には、表示されるテキストの色を変更する機能もあることが分かります。

では実際に、表示されるテキストの時間や、色の調節をやっていきましょう。

Print関数でテキストの表示時間と色の変更をする方法

Q
フルコード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Colors/NamedColors }

Test_device := class(creative_device):
    OnBegin<override>()<suspends>:void=
        Print("Hello, world!", ?Duration:=5.0, ?Color:= Red)
        Print("2 + 2 = {2 + 2}")
変更点1
using { /Verse.org/Colors/NamedColors }

上記のコードを新しく追加しました。理由はPrint関数で色の機能(Color)を使うためです。「Color機能を使うよ」という宣言をコードの序盤でしておく必要があるわけですね。

変更点2
Print("Hello, world!", ?Duration := 10.0, ?Color := Red)

上記の部分を新しく追加しました。これによって「Hello, world!」というテキストが「10秒間」「赤色」で表示されるようになるわけですね。

補足

Colorで指定できる色の種類は「Verse.digest.verse」ファイル内で「Color」と検索するとたくさん出てきます。

例:Red,White,WhiteSmoke …

コードの変更が完了したら、実際にテストプレイをして確認してみましょう。

「Verse変更内容をプッシュ」と「変更をプッシュ」の違い

これまでは「変更をプッシュ」ボタンでテストプレイを行ってきましたが、Verseを使い始めると「Verse変更内容をプッシュ」というボタンが新しく表示されます。どちらのボタンでもテストプレイが可能です。

「変更をプッシュ」との違いは?

ではなぜ「Verse変更内容をプッシュ」というボタンが別にあるのかというと「変更をプッシュ」よりも読み込みが短時間で済むからです。

レベル上での変更などが無く、Verseのみ書き換えた場合などはできるだけ「Verse変更内容をプッシュ」ボタンで確認すると効率的です。

【Verse】Device関数の使い方

Device関数の使い方を調べる方法

Device関数の使い方を調べるには「Fortnite.digest.verse」ファイルを使います。

「Fortnite.digest.verse」ファイル内で検索して見つける

例えば、「Fortnite.digest.verse」ファイルを開いて「item_spawner_device」と検索するとアイテムスポナーデバイスに関する機能について書かれている項目があります。

Q
item_spawner_deviceに関する項目
# Used to configuration and spawn items that players can pick up and use.
item_spawner_device<public> := class<concrete><final>(base_item_spawner_device):

    # Cycles device to next configured item.
    CycleToNextItem<public>():void = external {}

    # Spawns the current item.
    SpawnItem<public>():void = external {}

    # Sets device *Respawn Item on Timer* option (see `SetTimeBetweenSpawns`)
    SetEnableRespawnTimer<public>(Respawn:logic):void = external {}

    # Returns device *Respawn Item on Timer* option (see `SetTimeBetweenSpawns`)
    GetEnableRespawnTimer<public><transacts>:logic = external {}

    # Sets the *Time Between Spawns* (in seconds) after an item is collected before the next is spawned, if this device has *Respawn Item on Timer* enabled.
    SetTimeBetweenSpawns<public>(Time:float):void = external {}

    # Returns the *Time Between Spawns* (in seconds) after an item is collected before the next is spawned, if this device has *Respawn Item on Timer* enabled.
    GetTimeBetweenSpawns<public><transacts>:float = external {}

全て英語で書かれていて難しいですが、この内容を見ることで、どんな機能があるのか把握することができるわけです。

UEFN経由で対象デバイスの記述を開く

対象のデバイスをアウトライナー上で選択
右クリック →「アセットをブラウズ」

そうするとコンテンツブラウザのどこにアセットが格納されているのかを辿ることができます。

右クリック →「Visual Studio Codeで定義を開く」

今度は、コンテンツブラウザ内で対象のデバイスを選択し右クリック →「Visual Studio Codeで定義を開く」を選択しましょう。

補足

「ドキュメントを開く」という項目も存在します。これはエピック公式ドキュメント(Webページ)で対象のデバイス(仕掛け)の説明ページを開くことができる項目です。

定義を開く Creature Spawner編

例えば「Creature Spawner」のデバイスを右クリックし「Visual Studio Codeで定義を開く」をクリックしてみます。

そうするとVScode側で「Fortnite.digest.verse」ファイルが自動で開き「creature_spawner_device」の項目に飛ぶことができます。

Q
creature_spawner_deviceに関する項目
# Used to spawn one or more waves of creatures of customizable types at selected time intervals.
creature_spawner_device<public> := class<concrete><final>(creative_device_base):

    # Signaled when a creature is spawned.
    # Sends the `agent` creature who was spawned.
    SpawnedEvent<public>: listenable(agent) = external {}

    # Signaled when a creature is eliminated.
    # `Source` is the `agent` that has eliminated the creature. If the creature was eliminated by a non-agent then `Source` is 'false'.
    # `Target` is the creature that was eliminated.
    EliminatedEvent<public>: listenable(device_ai_interaction_result) = external {}

    # Enables this device.
    Enable<public>(): void = external {}

    # Disables this device.
    Disable<public>(): void = external {}

    # Destroys this device.
    DestroySpawner<public>(): void = external {}

    # Eliminates all creatures spawned by this device.
    EliminateCreatures<public>(): void = external {}

    # Returns the spawn limit of the device.
    GetSpawnLimit<public>()<transacts>: int = external {}

Device関数を使う時のコードの書き方

ここから先は、実際にDeviceをVerse上で動かす際のコードの書き方について説明していきます。

@editable でUEFN上のデバイスと連携

コードを追加 Creature Spawner編
Q
フルコード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Colors/NamedColors }

Test_device := class(creative_device):
    
    @editable
    Test_creature_spawner : creature_spawner_device = creature_spawner_device{}

    OnBegin<override>()<suspends>:void=
        Print("Hello, world!", ?Duration:=5.0, ?Color:= Red)
        Print("2 + 2 = {2 + 2}")

上記のコードを追加しました。

Verse上でDeviseを使用するには、まず何のDeviceを使うのか宣言する必要があります。それが「@editable」の役割です。

Test_creature_spawner の部分は、自分が好きに付けていい名前の部分です。

また、Verse上で各種デバイスを使用する際には、以下のような書き方でデバイスのクローンを作るような工程が必要です。

creature_spawner_device = creature_spawner_device{}

UEFN上でデバイスを連携 Creature Spawner編

「Verse」タブ →「Verseコードをビルド」を押します。

コードを反映させたら、自作した「Test_device」を選択して詳細タブを確認しましょう。

すると「Test_creature_spawner」という項目が新しく表示されていることが確認できます。ここでVerseとの連携作業ができます。

スポイトマークを押して、レベル上にある「Creature Spawner」を1つ選択しましょう。

これでVerseとの連携作業が完了しました。連携が完了したCreature SpawnerはVerseで自由に動かすことができます。

定義を確認 Creature Placer編

2種類目のDeviceを使用したい場合は、どうすればいいでしょうか?

まずは定義を調べるところから行っていきます。次はコンテンツブラウザで「Creature Placer」のデバイスを右クリックし「Visual Studio Codeで定義を開く」をクリックしてみます。

そうするとVScode側で「Fortnite.digest.verse」ファイルが自動で開き「creature_placer_device」の項目に飛ぶことができます。

Q
creature_placer_deviceの定義
# Used to spawn a creature at a specified location.
creature_placer_device<public> := class<concrete><final>(creative_device_base):

    # Signaled when a creature is spawned.
    # Sends the `agent` creature who was spawned.
    SpawnedEvent<public>: listenable(agent) = external {}

    # Signaled when the creature is eliminated.
    # * Sends the `agent` that eliminated the creature.
    # * Sends `false` if the creature was eliminated by something other than an `agent` (e.g. a vehicle).
    EliminatedEvent<public>: listenable(?agent) = external {}

    # Spawns the creature.
    Spawn<public>(): void = external {}

    # Despawns the creature.
    Despawn<public>(): void = external {}
コードを追加 Creature Placer編
Q
フルコード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Colors/NamedColors }

Test_device := class(creative_device):
    
    @editable
    Test_creature_spawner : creature_spawner_device = creature_spawner_device{}

    @editable
    Test_creature_placer : creature_placer_device = creature_placer_device{}

    OnBegin<override>()<suspends>:void=
        Print("Hello, world!", ?Duration:=5.0, ?Color:= Red)
        Print("2 + 2 = {2 + 2}")

上記のコードを追加しました。

2つ目のデバイスを追加するときも、このように同じ手順を繰り返せばよいのですね。

UEFN上でデバイスを連携 Creature Placer編

「Verse」タブ →「Verseコードをビルド」を押します。

コードを反映させたら、自作した「Test_device」を選択して詳細タブを確認しましょう。

すると「Test_creature_placer」という項目が新しく表示されていることが確認できます。

スポイトマークを押して、レベル上にある「Creature Placer」を1つ選択しましょう。

これで2種類目のデバイスも、Verseとの連携作業が完了しました。

参考資料

こちらの動画が参考になりました。

参考資料

クリエナビさん。【UEFN解体新書】Section9『動画㊵関数とは?』

Xからの読者コメントをお待ちしています。
更新の励みになります!

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


ABOUT ME
UEクリエイターズ
UEクリエイターズ
UEFNゲーム制作
フォートナイトでゲーム制作。YouTubeでは「UEクリエイターズ【UEFN専門ch】」を運営しています。
Recommend
こちらの記事もどうぞ
記事URLをコピーしました