見出し画像

フォートナイトでHello World

フォートナイトの上で自分の好きなゲームを作れるらしいと聞き調べてみた

UEFN(Unreal Editor for Fortnite)という開発ツールを使いレベル編集や敵やギミックの作成など一通りのことができるようだ
またVerseという言語を使ってフロー制御などプログラミングできるらしい
共同開発のための仕組みやゲームサーバーなどのインフラもそろっている

すべてが無料であり、すべてが最高クオリティで揃っている

仮にフルスクラッチで開発したら何億もかかるゲームを一人で1週間程度でつくれてしまう革命的なプラットフォームだと考えることもできる


Verseも面白い

  • コンパイル言語

  • 変数の型が限定されている

  • 変数と定数をきっちり定義できる

  • 関数型のコーディングもできる

このへんから軽量で高速な言語を目指している気がする

  • クラスも構造体も作れる

  • 並列処理、非同期処理も書ける

  • C++のテンプレートみたいなコードも書ける

  • ラムダ式も書ける

  • 特定の処理が失敗したときに丸ごとロールバックさせることができる

今時の言語として必要な機能がすでに十分実装されているうえに、トランザクション処理に言語レベルで対応していることが大きな特徴らしい
さすがネットワークゲームのための言語だ
トランザクションの処理は負荷が高く複雑になりがちなので、これがスムーズにコーディングできるのならなかなか使えそうだ

癖が強い

Cだと int AAA = 0 なのが Verseだと AAA:int := 0 だったり
構文に癖があって慣れるまでは違和感がある
インデントでブロックを識別するところはPythonに似ている

またユニークなのは、Verseでは失敗する可能性のあるコードを失敗コンテキストと呼びif文の中など決められた場所でしか書けないようになっている
サンプルコードを見ているとif文のなかに条件文が無く代入文だけが書かれていたりするのでとても不思議な気持ちになる
配列の参照がすべて失敗コンテキストなのが面倒でどう組めばいいのか途方に暮れるときがしばしばある

Verseは将来的にオープンソース化されブラウザなどでも動くようにする予定もあるそうで、単なるゲーム制御用のスクリプトの枠を超えJSやGOのように使える日が来るかもしれない
今のうちから勉強しておく価値はある
初期言語学習のつまらなさの一つに結果が地味な事があげられるが、Verseはダイナミックな結果が返ってくるので勉強するのもきっと楽しいんじゃないだろうか

ゼロから始めるための手順

非常に簡単なので手短に

  1. Epic Games LauncherをEpicストアからインストールする

  2. Epic Games Launcherを起動してログインする

  3. Epic Games LauncherからFortniteをインストールする

  4. Epic Games LauncherからUEFNをインストールする

  5. コード編集用にVSCodeをインストールする

https://store.epicgames.com

UEFNを触ってみる

Epic Games LauncherからUEFNを起動

するとプロジェクトブラウザが開く
島テンプレート>Sumpleを選択し、プロジェクト名を適当につけて作成する
(今回は”CTF”という名前のプロジェクトで進めます)

こんな画面になる
メニューにVerseが増えている以外は、Unreal Engineとまったく同じだ

Alt+マウス操作でカメラを動かせる
マウスで適当にアイテムを選択し、移動、回転、スケールをかけたりもできるキーボードショートカットのW,E,Rが移動、回転、スケールに対応しているので使うと楽だ。あとFキーで選択したアイテムにズームするのも便利だ

Hello World

Verse > Verse Explorerを開く

ツリーのルート(プロジェクト名)を右クリックして
Add new Verse file to projectを選択する

このようなダイアログが開くので、Device Nameに”hello_world_device”といれて作成

ウィンドウ>コンテンツブラウザ>コンテンツブラウザ1を選択

このようなアイテム一覧画面が開くので、
All - [プロジェクト名]コンテンツ - CreativeDevicesを選択すると、hello_world_deviceが作られている

これをドラッグ&ドロップでシーンに配置する

これでもう完成なのだけど、もう少し詳細をみてみる

Verse Explorer に追加されている hello_world_device.verseをダブルクリック

VS Codeで以下のソースコードが開く

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

# See https://dev.epicgames.com/documentation/en-us/uefn/create-your-own-device-in-verse for how to create a verse device.

# A Verse-authored creative device that can be placed in a level
hello_world_device := class(creative_device):

    # Runs when the device is started in a running game
    OnBegin<override>()<suspends>:void=
        # TODO: Replace this with your code
        Print("Hello, world!")
        Print("2 + 2 = {2 + 2}")

先頭が#の行はコメント
usingはjavaのimportのようなパッケージをロードするものだろう
hello_world_device := class(creative_device): はクラスの宣言
OnBegin<override>()<suspends>:void=はメソッドの宣言
OnBeginメソッドは特にイベントハンドラでオブジェクト生成時に一度だけコールされるものだろう
Printはコンソールにテキストを表示する組み込み関数だろう

動作確認

[セッションを開始]を選択する

しばらく待っているとFortniteが勝手に起動しはじめ、作ったシーンが再生される

プレイ中に、TABキーを押してからログを選択すると、下の方に
Hello World!
2 + 2 = 4
とプリントされていることがわかる

プログラムを編集する

hello_world_device.verseをVS Codeで開いて、もともとのPrint分に1行追加してみる

        Print("Hello, world!")
        Print("2 + 2 = {2 + 2}")
        Print("こんにちは 世界")

ファイルを保存して、UEFNに戻り、
Verse > Verseコードをビルド を選択

Verse > Verseビルドメッセージログ を選択し、ログを開く
このように出力されていたら成功

再度動作確認

[エンドゲーム]を押してFortniteのゲームモードを一旦終了する

終了したら、[更新をプッシュ]を押す

でまたFortniteに戻ると、追加したプリントが出力されている
ちゃんと日本語もでるようだ

触ってみての感想としては、非常に安定しているし動作も軽い
割と最近使えるようになったと思っていたのだけど、すでに完成度が高い
Updateもちょいちょいかかるのでこれからどんどんできることが増えてくる期待感もある
本腰いれていろいろ作ってみようと思う

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