はじめに
ue6-main ブランチで UE6 エディタがようやく手元で起動できるようになったので、Verse の勉強がてら、Blueprint / C++ でお馴染みの FirstPersonTemplate を Verse / SceneGraph で作り直してみよう と思い立ちました。
ところが触り始めてすぐ、現状の ue6-main の Verse では、一人称視点の中核に必要なコンポーネントが軒並み揃っていない ことが分かりました。本格的なものでなければ Verse でコードを書いて動かしてみる、くらいはできそうなのですが、「FirstPersonTemplate をそのまま Verse で再現する」のは現時点では無理そうです。
この記事は、その「なぜ無理なのか」を、同梱プラグインとソースを確認しながらまとめたものです。
調査環境について:
ue6-main/ コミット:ef011d7aa002、調査日: 2026-06-21
Verse / SceneGraph 関連プラグインは UE6 リポジトリに同梱されていますが、いずれもEnabledByDefault: false(デフォルト無効) です。ステータスは横並びではなく、SceneGraph(EntityFramework)は Beta、UAF は Experimental、Verse コアは安定版(IsBetaVersion: false)だが未有効、という状態でした。いずれにせよ API は今後ガラッと変わる前提で読んでいただければと思います。
プラグインやファイルのリストアップには Claude Code / Codex も併用しています。気になる箇所はソースまで確認していますが、最終的にはご自身の環境でも確認するのを推奨します。
なお、調査の過程で アニメーション周りが AnimBP から「Verse + UAF(旧 AnimNext)の役割分担」へ再編されている ことも分かったのですが、こちらは話のレイヤーが違ううえに分量も多いので、別記事に分けました(UE6 のアニメーションは Verse と UAF にどう分割されたか)。本記事はあくまで カメラ・入力・キャラクター移動・ゲームフレームワーク層 の話に絞ります。
結論:現状 Verse だけでは FirstPersonTemplate は作れない
先に要点だけ。FirstPerson の中核となる以下の機能について、Verse から扱う API が公開されていません。
足りないもの(Verse API が未公開)❌
| FirstPerson に必要 | 状況 |
|---|---|
CameraComponent 相当(一人称カメラ) |
✕ SceneGraph に該当コンポーネントなし |
CharacterMovementComponent 相当(WASD 移動・ジャンプ・空中制御) |
✕ |
PlayerController 相当 |
✕ |
GameMode / GameModeBase 相当 |
✕ |
Enhanced Input(IA_Move / IA_Look / IMC_Default) |
✕ Verse から購読する API が見つからない |
| AnimBP のステートマシン駆動 | △ UAF + Verse modifier の分業で代替(→ 別記事) |
今あるもの(Verse から扱える)✅
| 領域 | Verse から扱えるもの |
|---|---|
| ビジュアル / レンダリング | Mesh / Light / Decal / PostFx など一通り |
| 物理 / 衝突 | Physics 系・RigidBody・コリジョン |
| モーション |
KeyframedMovementComponent(事前定義キーフレーム再生のみ) |
| ゲームプレイ |
Possessable / Possessor / Damageable(ただし後述の注意あり) |
| その他 | Sound / Particle / TextDisplay など |
つまり、「見た目・データ寄りの SceneGraph エンティティ」は Verse で組める が、「プレイヤーが操作する一人称キャラクター」を成立させる層が丸ごと欠けている、というのが現状です。以下、根拠を順番に見ていきます。
UE6 に同梱されている Verse / SceneGraph プラグイン
まず、UE6 リポジトリには Verse / SceneGraph 関連プラグインが一式入っています。
Verse 言語コア(Engine/Plugins/Verse/)
-
Verse/VerseVM/VerseInterface -
VerseEngine/VerseColors/VerseSimulation/VerseSpatialMath -
VerseTags/VerseModifier/VerseGameplayDebug/VersePrint -
VerseExperimental/VerseRestricted/VersePersonaMetadata/VerseSimulationMetadataなど
SceneGraph(Engine/Plugins/EntityFramework/)
SceneGraph の本体は EntityFramework.uplugin です。プロパティを見ると現状の温度感が分かります。
"Category": "Verse",
"VerseScope": "PublicAPI",
"CanContainVerse": true,
"EnabledByDefault": false,
"IsBetaVersion": true
Verse.uplugin 側も同様にデフォルト無効です。
"EnabledByDefault": false,
"CanContainVerse": true,
"CanContainContent": true,
"IsBetaVersion": false,
"Installed": false
つまり プラグインとしては同梱されているが、いずれもデフォルト無効 という状態です。ここで一点注意で、EntityFramework(SceneGraph)は IsBetaVersion: true の Beta ですが、Verse コア自体は IsBetaVersion: false の安定版 で、ただ EnabledByDefault: false のため有効化されていないだけ、という違いがあります(後述の UAF は Experimental)。ステータスを一括りにしないよう気をつけたいところです。ここを踏まえたうえで、中身を見ていきます。
SceneGraph で Verse から扱えるコンポーネント
Engine/Plugins/EntityFramework/Source/Component/Verse/ 配下の .native.verse を一通り確認しました。カテゴリ別に整理するとこうなります。
今ある(Verse から扱える)もの
| カテゴリ | コンポーネント |
|---|---|
| ビジュアル / レンダリング |
MeshComponent / MeshPart / PresentationComponent / DecalComponent / DirectionalLight / Spot / Sphere / Rect / CapsuleLight / LightComponent / PostFxSettingsComponent / RenderSettingsVolumeComponent
|
| 物理 / 衝突 |
PhysicsComponent / PhysicsSceneComponent / PhysicsReplicationComponent / RigidBody / RigidBodyComponent / NetworkPhysicsSettingsComponent(コンポーネントではないが HasCollision / HasDynamics / HasUEPhysicsProperties) |
| モーション | KeyframedMovementComponent |
| ゲームプレイ |
PossessableComponent / PossessorComponent / DamageableComponent
|
| その他 |
SoundComponent / ParticleSystemComponent / TextDisplayComponent / MapReadyComponent
|
ライト・メッシュ・物理・サウンド・パーティクルあたりは揃っているので、ビジュアルやデータ寄りのエンティティなら Verse で十分組めます。
ただし FirstPerson の文脈では、2つ注意点があります。
-
KeyframedMovementComponentは CharacterMovement とは別物 です。名前は「動き」ですが、実体は 事前に定義したキーフレームを再生するだけ で、WASD 入力に応じて移動・ジャンプ・空中制御する CharacterMovement の代わりにはなりません。 -
PossessableComponent/PossessorComponentは PlayerController ↔ Pawn の possess ではありません。名前から「あ、これでプレイヤーが Pawn を possess できるのかな」と一瞬思いますが、実装を見ると agent ↔ entity の所有関係 を表すもので、UE のプレイヤー入力ループとは別概念でした。
FirstPerson に必要だが「無い」もの
| FirstPerson に必要 | SceneGraph 側の有無 |
|---|---|
CameraComponent |
✕ |
CharacterMovementComponent |
✕ |
PlayerController |
✕ |
GameMode / GameModeBase
|
✕ |
| Enhanced Input bridge | ✕ |
カメラ・移動・コントローラ・ゲームモードという、一人称テンプレートの背骨にあたる部分がそのまま欠けている ことが分かります。
player / agent API の限界
「コンポーネントが無くても、player や agent から入力やカメラを触れないか?」と思って Verse 側の API も確認しました。
Engine/Plugins/EntityFramework/Source/EntitySimulation/Verse/Simulation/player.native.verse:
@hide_in_editor
player<native><public> := class<unique><epic_internal><persistent>...(agent):
IsActive<native><public>()<reads><decides>:void
player は agent の派生型として存在するものの、公開されている API は IsActive 程度 でした。Fortnite Creative / UEFN で言うところの creative_player 相当の機能(カメラ操作・入力受信・Pawn 制御)は、UE6 リポジトリの Verse からは まだ触れません。
「簡易なゲーム状態管理に agent / player を使う」くらいなら成立しそうですが、一人称操作の入口としては力不足です。
Enhanced Input を Verse から触れるか
カメラと移動が無くても、せめて入力イベントだけでも Verse で受けられないか を確認しました。
Engine/Plugins/Verse/ および Engine/Plugins/EntityFramework/ 配下の全 .verse を、以下のキーワードで全文検索しました。
input | enhanced_input | input_action | input_mapping
ヒット件数:0 でした。
現状の UE6 リポジトリには、Verse から Enhanced Input を購読する公開 API が存在しない ということになります。入力という入口が塞がっている以上、「Verse だけで操作キャラを動かす」のは原理的に難しい、というのがここで確定します。
Verse-only のサンプル / テンプレートは同梱されているか
「Epic 自身が Verse だけで動くプロジェクトのリファレンスを置いていれば、それを真似ればいい」と思って探しましたが、
Templates/**/*.verse → 0 件
Samples/**/*.verse → 0 件
0 件 でした。
Templates/TP_FirstPersonBP/Config/TemplateDefs.ini の Variants も ArenaShooter / SurvivalHorror / All のみで、Verse バリアントは用意されていません。現時点では、Epic も「Verse のみで動くプロジェクト」をリポジトリに同梱していない、という状況です。
「まだ固まっていない」プラグイン構成
ソースを眺めていると、ゲームプレイ層が Epic 内部でも変動中 であることを示唆する痕跡があります。
-
EpicGamesTemporaryというプラグインにPlayable.native.verseやSceneGraph_Deprecated.native.verseが存在する - プラグイン名が
Temporary、ファイル名にDeprecatedが付いている
プラグイン名「一時的」、ファイル名「非推奨」というネーミングからして、SceneGraph + Verse のゲームプレイ層は内部でもまだ API が固まっておらず、置き換えの途中 だと読み取れます。EntityFramework.uplugin の IsBetaVersion: true とも整合します。
逆に言うと、ここが固まってくれば一気に状況が変わる可能性もあるので、今後のバージョンで継続ウォッチしたいところです。
アニメーション層について(別記事に分けました)
FirstPerson というと AnimBP も気になるところですが、UE6 では アニメーションが AnimBP から「UAF(RigVM ベースの AnimBP 後継)+ Verse modifier の役割分担」へ再編 されています。
ここは掘ると長くなるのと、FirstPersonTemplate の「移植できる / できない」への影響は限定的(結局カメラ・入力・移動の Verse API が無い時点で詰む)なので、別記事に切り出しました。Verse ↔ UAF の双方向 API の現状(再生指示はできるが AnimNotify / ステート遷移通知が Verse に返ってこない、等)に興味がある方はそちらをどうぞ → UE6 のアニメーションは Verse と UAF にどう分割されたか
現実的に取りうる選択肢
ここまでを踏まえて、ue6-main で今できることを整理するとこうなります。
| アプローチ | 可否 | 備考 |
|---|---|---|
| ライト・メッシュ・物理・キーフレーム移動・サウンド・パーティクルなど、ビジュアル / データ寄りの SceneGraph エンティティを Verse で組む | ◯ | コンポーネントが揃っている |
agent / player を使った簡易なゲーム状態管理 |
△ | 公開 API が限定的 |
| 一人称カメラ + WASD 移動 + マウスルック + ジャンプ + 武器射撃を Verse のみ で実装 | ✕ | 必要な API が未公開 |
| C++ / BP 側でキャラ・カメラ・入力を実装し、ゲームロジックの一部だけ Verse で書くハイブリッド構成 | ◯ | 現実的な落としどころ |
おわりに
Verse の勉強のつもりが、いつのまにか「現状の Verse / SceneGraph に何があって何が無いか」の棚卸しになってしまいました。
結論としては、ue6-main 時点では FirstPersonTemplate の中核(ACharacter + CameraComponent + Enhanced Input + AnimBP)は 引き続き C++ または Blueprint で実装する 必要があります。Verse は、SceneGraph 上のゲームロジック層(武器のスポーン、ダメージ処理、スコア管理、エンティティの挙動など)から 段階的に導入 するのが現実的だと思います。
完全 Verse 化が見えてくるのは、Epic が少なくとも以下を Verse API として公開する将来バージョン以降になりそうです。
-
CameraComponent相当 -
CharacterMovementComponent相当の locomotion - Enhanced Input ブリッジ
-
PlayerController/GameMode相当のフレームワーク層
とはいえ、SceneGraph のコンポーネント群やエンティティモデル自体は思ったより揃っていて、「ゲームプレイ層の API がここに乗ってくれば、確かに Verse でゲームが書けそう」ということは掴めました。Temporary / Deprecated という名前のファイルが残っているあたり、ちょうど今まさに作っている最中 という感じなので、続報を楽しみに待ちたいと思います。
そして何より、早く Verse だけでテンプレートプロジェクトを組めるようになってほしい、というのが正直な気持ちです。今回 FirstPersonTemplate を Verse で作り直そうとしたのも、突き詰めれば「Verse を手を動かして学びたい」という動機でした。TP_FirstPerson の Verse バリアントのような、Epic 公式の「Verse だけで完結する」リファレンスが1つ降ってくるだけで、学習の入口は一気に広がるはずです。カメラ・入力・移動・フレームワーク層の Verse API がそろい、Templates/ に .verse のテンプレが並ぶ日を楽しみに待っています。
繰り返しになりますが、ここで触れた内容は デフォルト無効(EnabledByDefault: false)の、Beta / Experimental を含むプラグイン群のスナップショット です。バージョンが上がれば結論ごと変わる可能性が高いので、その前提で読んでいただけるとうれしいです。