UE6で完全移行が決まった「Verse」の基本をおさらい。Epic GamesのVerseエバンジェリストが解説する、プログラミング言語としての特徴【Unreal Fest Tokyo 2026】

UE6で完全移行が決まった「Verse」の基本をおさらい。Epic GamesのVerseエバンジェリストが解説する、プログラミング言語としての特徴【Unreal Fest Tokyo 2026】

2026.11.05
取材レポート注目記事講演レポートアンリアルエンジンプログラム
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

2026年11月3日(火・祝)から11月4日(水)までの2日間、エピック ゲームズ ジャパンが主催するUnreal Engine公式カンファレンス「Unreal Fest Tokyo 2026」が、東京・有明のTFTホールで開催されました。

本稿では、プログラミング言語「Verse」の設計思想やUnreal Engine 6(以下、UE6)における役割について解説された講演「Verse: What it is and why we are building it」の模様をレポートします。

TEXT / 神谷 優斗

目次

同講演に登壇した、Epic Games Verse EvangelistのMagnus Enebakk氏

Epic Gamesが開発する新しいプログラミング言語

Verseは、Epic Gamesが開発するマルチパラダイムのプログラミング言語です。処理のロールバックを言語仕様としてサポートしている点などが特徴として挙げられます。

関連記事
Epic Gamesが開発中のプログラミング言語「Verse」って知ってる?編集部員が感じる2つの特徴「ロールバック」「非同期処理」などを解説
2024.06.12

講演時点で、Verseは『フォートナイト』向けの制作環境「Unreal Editor for Fortnite(UEFN)」で利用されています。また、2027年後半のアーリーアクセスを目指すUE6では、ブループリントに代わるゲームロジック実装用のプログラミング言語として位置付けられています。

UE5とUEFNを統合するUE6のロードマップ

関連記事
UE6は最初からBP廃止へ方針転換、UE5.9は来週プレビュー版リリース。Epic Games CEOが登壇した基調講演をレポート【Unreal Fest Tokyo 2026】
2026.11.03

講演の冒頭、Enebakk氏は今の時代に新しいプログラミング言語をつくる狙いについて説明しました。

狙いの一つは、異なる開発者が互いに作ったシステムを組み合わせられる、共有のエコシステムを作り上げていくことです。講演では、開発者Aが作ったヘルスシステムをBの武器システムが利用し、さらにその武器をCのゲームで使うという依存関係が例として挙げられました。もしAがダメージ関数の引数を互換性のない形で変更してしまうと、その関数を呼び出すBや、さらにそれに依存するCのゲームにも影響が及んでしまいます。

そのためVerseは、公開したAPIを更新する際の後方互換性を重視して設計されているとのことです。

AのヘルスシステムにBの武器が依存し、その武器にCのゲームが依存する例

もう一つの狙いは、ゲームプレイ用のプログラムを安全かつ直感的に書けるようにすることです。

Verseは静的な型検査を行い、型の不整合をコンパイル時に検出します。暗黙の型変換も禁止されており、intからfloatへの変換などは明示的に行う必要があります。また、値に付けた名前は既定では再代入できず(イミュータブル)、変更可能な変数の宣言にはvar、値の更新にはsetを使用します。

関数型言語のように変更を強く制限して意図しない状態の書き換えやバグを防ぎつつ、クラスやインターフェースを用いたオブジェクト指向らしい記述にも対応しています。

UE6における、VerseとC++の役割分担

UE6においてVerseが担うのはゲームロジックの実装です。エンジン本体やプラグインなどには引き続きC++が使用され、パフォーマンス上の理由などでC++側に実装した処理は、Verse向けのAPIを介して呼び出せるようにする方針としています。

また、UE6向けの将来的な連携構想として、Verseで宣言したクラスの一部の関数をC++で実装する方法や、C++からVerseを呼び出す方法も説明されました。

UE6でもC++は使われる。基盤はC++、ゲームロジックはVerseという位置付け

ifやforも値を返す?Verseの言語仕様を解説

続いてEnebakk氏は、Verseのプログラミング言語としての具体的な特徴を解説しました。

定数・変数、関数、クラスなどの基本構文

Verseでは、すべての構文が値を返す「式」として扱われます。ほかの多くのプログラミング言語では値を返さない「文」として扱われるifやforも、Verseでは値を返します。これにより、条件分岐やループの評価結果をそのまま定数や変数に束縛し、簡潔に記述できます。

例えば、string型の定数Labelに対し、体力が50を超えていれば”Healthy”、そうでなければ”Hurt”を返すif式をそのまま代入できます。また、配列[1, 2, 3]の各要素を2倍するfor式は、評価結果としてそのまま新しい配列[2, 4, 6]を生成します。

if、for、caseも値を返す式として扱う例

処理が「失敗」すると、変更をロールバック

Verseは、一連の処理が成立しなかったことを「failure(失敗)」という言語概念で扱います。例えば、配列の範囲外の要素を参照する式や、存在しないキーでマップを検索する式は「失敗」となります。

こうした失敗し得る式は、「failure context(失敗コンテキスト)」と呼ばれる領域内でのみ記述できます。失敗コンテキスト内の処理が一つでも失敗すると、そのコンテキスト内で行われたすべての変更がロールバックされ、その失敗コンテキストの開始前の状態へと自動的に巻き戻ります。

これにより、処理の途中で失敗した際に、不整合な状態が残るのを防げます。また、意図しない状態で後続の処理が進行するのを防げるため、nullチェックを多用する防御的なコードを書かずに済む利点もあります。

配列やマップへのアクセス、比較、型キャストなどは失敗し得る

講演では、乗り物に搭載された武器を発射する処理の例が示されました。この処理は、「乗り物が存在しない」「武器コンポーネントがない」「弾が装填されていない」といった要因で失敗する可能性があります。そのためVerseでは、乗り物・武器・弾の状態を取得する処理を一つの失敗コンテキスト(ここではifの条件部)にまとめて記述します。

実行時には、途中の取得処理が一つでも失敗すれば後続の発射処理は実行されず、すべての取得に成功した場合のみ弾が発射されます。

武器の発射の実装例をC++とVerseで比較した図

また、「失敗」の仕組みをループの対象を絞り込むフィルターとして使うことも可能です。敵の配列を走査するfor式の中で、「生存している」「視界に入っている」「射程内にいる」といった失敗し得る関数を呼び出すことで、一つでも条件に失敗した敵は除外され、すべての条件を満たした敵だけを結果の配列に残すことができます。

敵一覧をforで絞り込む例。生存・視認・距離の条件をすべて満たした敵だけが、結果のTargets配列に残る

型キャストや、値が存在しない場合の既定値の選択も、失敗の仕組みで記述できます。例えば「Scores[Player] or 0」と記述すれば、マップの検索に失敗した場合に0が結果として返されます。

失敗を利用した記述例

なお、関数が失敗し得るかどうかは、Verseの言語仕様である「エフェクト指定子」を用いて関数単位で明示します。失敗し得る関数には<decides>エフェクトを付与し、呼び出す際は丸括弧()ではなく角括弧[]を使用します。

<decides><reads>を付けたGetDamageの例。データ取得や比較のいずれかが失敗すると関数呼び出しも失敗する

エフェクト指定子の代表例。可変状態の読み取りを行う(参照透過でない)関数であることを示す<reads>などもある

処理が失敗した際に行われるロールバックの活用例として、講演ではアイテムの購入処理を行う関数が紹介されました。

一つの失敗コンテキストの中に「所持金を代金分減らす」「ショップの在庫を1個減らす」「購入したアイテムをバッグに入れる」という一連の処理を記述しておけば、最後の「バッグに入れる」処理がバッグ満杯で失敗したとしても、すでに実行された所持金やショップ在庫の変更まで自動的に購入前の状態へ巻き戻されます。

所持金復元や在庫復元のコードを個別に書く必要はなく、自動的にロールバックされる

さらに、成功値またはエラー情報を表すresult型を利用し、「バッグが満杯である」といった失敗理由を呼び出し元へ返す例も紹介されました。

投機的に処理を実行し、結果がエラーなら変更を巻き戻すspeculate{}の仕組みも活用。講演時点でspeculate{}は設計段階で、構文も未確定だという

非同期処理・並行処理もシンプルに記述

Verseには、時間をかけて進行する処理を非同期関数として直感的に記述する仕組みがあります。関数に<suspends>エフェクトを付けると、ブループリントのLatentノードのように非同期処理として扱われ、関数内で一定時間待機するSleep()などが使えるようになります。

比較例として、待ち時間をTickで管理するC++の実装例も紹介されました。更新のたびにタイマーを調べ、次の処理へ進むかを分岐・判断するC++での実装に対し、VerseではSleepによる待機と後続の処理をそのまま順番に書き下すことができます。

非同期関数を並行実行する構文を搭載

時間のかかる複数の処理を並行して進める場合には、複数の非同期関数を同時に実行し、すべて終了するのを待ってから次へ進む「sync」や、最初に完了した処理の結果を採用して残りの処理を自動的にキャンセルする「race」などの並行処理構文を使用します。

C++やブループリントではデリゲートなどを使わざるを得ず複数の場所に分かれがちだった処理の流れを、Verseではsyncやraceを使って一か所にまとめて記述できます。

並行処理構文には、sync/race/rush/branchがある

具体例として挙げられたチャージ攻撃の実装では、「チャージ完了を待つ処理」と「被弾イベントを待つ処理」をraceで並行して待ち受けます。raceは、チャージが先に完了すればtrue、被弾が先に発生すればfalseを返します。その後、結果の値に応じて、チャージ攻撃を発動するか、ひるみアニメーションを再生するかを分岐させています。

セーブデータも言語レベルで対応

Verseは、セーブデータのようにセッションをまたいでプレイヤーごとのデータを永続化する仕組みを言語レベルでサポートしています。保存したいデータ構造をクラスや構造体として定義し、クラスに<final><persistable>指定子を付与することで、プレイヤーごとの保存データとして扱えるようになります。

Scene GraphのオブジェクトもVerseで定義

UE6では、従来のActorに代わる新たなオブジェクト構築基盤として「Scene Graph」が導入されます。

Scene Graphでは、親子関係を持つ基本オブジェクトであるentityに、見た目やロジックを担うcomponentを組み合わせて、シーン内のオブジェクトを構成します。

オブジェクト固有の動作は、Verseで定義されているcomponentクラスを継承したサブクラスに記述します。

アクタの子クラスに対応する、entityとcomponent構成のプリセット「Prefab」も、Verse上ではクラスとして扱われます。

例えば、金庫のPrefabであるEP_VaultはEP_Vault{}という構文でインスタンス化でき、AddEntitiesでシーンへ追加します。

さらに、Prefabの階層構造そのものをVerseのソースコードだけで定義する機能も設計中とのこと。

VerseのソースだけでPrefabの構成を定義する設計案

UE5で使われる各概念とUE6での新概念の対応関係

リアクティブな変数など、将来の言語機能も紹介

言語機能のさらなる拡張として、依存先の変更に合わせて値を自動更新するLive variablesも開発中です。例えば、XをY + 1と定義すると、Yが0のときにXは1になります。その後Yを5に変更すると、依存関係が自動的に追跡され、Xの値も自動で6へと更新されます。

講演時点で、Live variablesは構想段階であり、未実装

また、マルチプレイでの応答性を高めるため、クライアント側で処理を先行実行させる「クライアント予測」機能も将来機能として紹介されました。クライアントが先行して進めた状態をサーバー側で検証し、補正が必要な場合はクライアント側の変更をロールバックして、サーバーの正しい状態を反映します。

実行基盤においては、従来のブループリントのバイトコードへ変換して実行する方式に代わり、新たに「Verse専用VM(※)」の開発が進められています。
※ VMはVirtual Machine(仮想マシン)の略。ここでは、バイトコードを解釈・実行するソフトウェアの実行基盤を指す

このほか、関数を既定でロールバック可能にする計画や、Verseおよび言語ランタイムのオープンソース化も将来のロードマップとして紹介されました。

Enebakk氏は最後に、言語の仕組みや開発中の機能を詳しく知るための資料として「Book of Verse」を、現在のUEFNで利用できるAPIの参照先として「Verse API Reference」を紹介し、講演を締めくくりました。

「Unreal Fest Tokyo 2026」公式サイトBook of VerseVerse API Reference
神谷 優斗

コーヒーがゲームデザインと同じくらい好きです

関連記事

「Unreal MCPを入れて終わり」にしない!LLMが使えるプロジェクト専用ツールの作り方【Unreal Fest Tokyo 2026】
2026.11.04
UE6は最初からBP廃止へ方針転換、UE5.9は来週プレビュー版リリース。Epic Games CEOが登壇した基調講演をレポート【Unreal Fest Tokyo 2026】
2026.11.03
UEやMetaHumanをAI学習データとして使用可能に。UEのエンドユーザーライセンス契約が改定
2026.11.03
UE6、アクター・ブループリントが「非推奨」から「削除」へ。C++ Gameplay Frameworkも廃止し、Verseへ完全移行
2026.11.03
売上2,000万本の『めっちゃカメレオン』を2か月で作った開発者へのインタビュー記事をEpic Gamesが公開。EOSを活用し、同接34万人超でも利用料はゼロ
2026.10.27
3KB以下のゲームを制作・公開。「Pyxel」開発者が新たなオープンソースエンジン「Playload」をリリース。今週のゲーム開発関連ツールまとめ
2026.10.24

注目記事ランキング

2026.10.29 - 2026.11.05
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

レンダリング(Rendering)
レンダリング コンピューターグラフィックスにおける、各種データ(3Dモデルなど)をプログラムを用いて計算し、画像として表示すること。レンダリングを行うプログラムをレンダラー(Renderer)と呼ぶ。
VIEW MORE

Xで最新情報をチェック!