フォートナイトで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はダイナミックな結果が返ってくるので勉強するのもきっと楽しいんじゃないだろうか
ゼロから始めるための手順
非常に簡単なので手短に
Epic Games LauncherをEpicストアからインストールする
Epic Games Launcherを起動してログインする
Epic Games LauncherからFortniteをインストールする
Epic Games LauncherからUEFNをインストールする
コード編集用にVSCodeをインストールする
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もちょいちょいかかるのでこれからどんどんできることが増えてくる期待感もある
本腰いれていろいろ作ってみようと思う
この記事が気に入ったらサポートをしてみませんか?