見出し画像

【UEFN】タイクーンの基本的な実装方法

背景:

タイクーンゲームを作りたいけど、実装方法が書かれた記事が少ない、、、と僕自身困ったのでタイクーンの実装方法について解説していきます!

UEFNを用いたゲームを開発しているNissyと申します。
普段UEFNに関するツイートをメインにしています!フォローしていただけると嬉しいです!



つくるもの:

今回はタイクーンの基本となる、必要な資源がある状態でゾーンに入った時にイベントを起こす仕組みの実装方法を解説します。

具体的には下記の動画のように、木を持っていない何も起こりませんが、15個持っていると建物が下から出現する、というものです。

この仕組みは実際弊社で制作した「Desert Island Tycoon」で使用されています。ぜひプレイしてみてください!

9199-4243-7508

手順:

実装の流れは以下です。

1.建物が出現する仕組みをシーケンサーで作成
2.各小道具の設定
3.Verseで資源があるかを確認、イベント実行の実装


1. 建物が出現する仕組みをシーケンサーで作成

まずは適当な建物を用意します。

次にシーケンサーを用いて建物が出現する動きを作りましょう。

コンテンツドロワーの空いている個所を右クリックして、「シネマティックス」>「レベルシーケンス」を選択。

LSはレベルシーケンスの略です。

ダブルクリックすると以下のような画面が出てきます。

そして左上の「追加」>「シーケンサーにアクタを追加」から、用意した建物を選択します。

アウトライナーからドラッグ&ドロップでもできます。

次にプラスボタンから「トランスフォーム」を選択します。

そして以下のひし形プラスボタン(赤枠)をクリックし、動きを設定していきます。(まだしません)

簡単に解説すると、青枠の0.00、5.00は時間を示し、それぞれで別の建物の位置を設定する(赤枠のボタンをクリックする)と、このシーケンサーが実行されたとき、5秒間かけて「0.00で設定した建物の位置」から「5.00で設定した建物の位置」にスムーズに移動します。
レベルシーケンスの使い方については以下の記事が参考になります。

次に建物を地面に埋めて「0.00」の位置で設定し、建物を戻した(表示している)状態で「5.00」に設定します。

今回はわかりやすいように一部残しています。

今回は5秒間だと表示させるまで少し長いので、設定のマークから赤枠の部分を1.00に変更します。

1.00については違和感があれば各自調整してください。

スペースボタンを押すと以下のようになります。
(タイクーンぽい!)

これでシーケンサーの設定は終了です。


2. 各小道具の設定

「Device」から「ムービーシーケンスの仕掛け」「ミューテーターゾーン」「条件付きボタン」を設置。

ミューテーターゾーンは詳細をいじると上のような形になります。

そしてムービーシーケンスの仕掛けは赤枠のように設定します。

ver29.40でバグが発生しているのでこちらも参考にしてみてください。

条件付きボタンを以下のように木材に設定します。


3. Verseで資源があるかを確認、イベント実行の実装

そしてプレイヤーがこのゾーンに入り、かつ必要な資源を持っている場合のみ、シーケンスが発動し、建物が地面から出現するよう実装します。

これはUEFNのみでも実装できますが、今回はVerseを用いて実装します。
(実際ゲームを作るとなるとVerseの方が作業を短縮できます)

以下がコード全体です。

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

confirm_resourse := class(creative_device):
    @editable MZ:mutator_zone_device = mutator_zone_device{}
    @editable MS:cinematic_sequence_device = cinematic_sequence_device{}
    @editable conditional_button : conditional_button_device = conditional_button_device{}

    OnBegin<override>()<suspends>:void=

        MZ.AgentEntersEvent.Subscribe(Activate_MZ)

    Activate_MZ(Agent:agent):void=
        Wood := conditional_button.GetItemCount(Agent, 0)
        if(Wood >= 15):
            MS.Play(Agent)

解説していきます。

    @editable MZ:mutator_zone_device = mutator_zone_device{}
    @editable MS:cinematic_sequence_device = cinematic_sequence_device{}
    @editable conditional_button : conditional_button_device = conditional_button_device{}

このコードはUEFNで用意した小道具をVerseで扱えるようにするためのものです。
以下のようにUEFN上で小道具を設定できるようになります。

Verseコードは下のVerseクラスを設置して使用します。
        MZ.AgentEntersEvent.Subscribe(Activate_MZ)

このコードはミューテーターゾーンに入ったプレイヤーに対して「Activate_MZ」というイベントを実行するものです。

    Activate_MZ(Agent:agent):void=
        Wood := conditional_button.GetItemCount(Agent, 0)
        if(Wood >= 15):
            MS.Play(Agent)

これは「Activate_MZ」イベントの内容を書いています。
条件付きボタンで設定したアイテム(Wood)において、プレイヤーが15個以上保有している時、「ムービーシーケンスの仕掛け」を有効にする、というものです。

そして保存してビルドし、UEFN上で小道具の設定をすれば完成です!


最後に:

今回は木材を使用していますが、Verseを用いることでアイテムを使わず独自通貨を実装することもできます。

今後も同様にタイクーンの実装方法やその他UEFN、Verseに関することをnoteにてまとめていきます。

これまでの記事もぜひ参考にしてみてください!


この記事が気に入ったらサポートをしてみませんか?