-- Views
November 05, 26
スライド概要
講演内容:VerseとScene Graphについて簡単に紹介した後、開発途中のゲームをライブで完成させます。Verseによるプログラミング、ゲームプレイへの並行処理の活用、プレハブの構築を実演し、最後に完成したゲームを実際にプレイします。
スライド中の動画一覧:
https://epicgames.box.com/s/49787z0uzd2s4lg27tiobulbnno99xqv
本講演へのアンケートにご協力をお願い致します:
https://docs.google.com/forms/d/e/1FAIpQLScI6FWrr04t65fePUmAE6s4RcAwETxXtOUQwk4M5skRkjaK-Q/viewform
講演者:
Magnus Enebakk(Epic Games)
Unreal Fest Tokyo 2026公式サイト:
https://www.unrealengine.com/events/unreal-fest-tokyo-2026
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
Building a game with Verse and Scene Graph
Magnus Enebakk
Quick show of hands (1/2)
Quick show of hands (2/2)
How today works
The Village template before we start
Agenda
Foundations
Effect specifiers: what a function may do
Failure: it decides which code runs
Concurrency: code that waits (1/3)
Concurrency: code that waits (2/3)
Concurrency: code that waits (3/3)
Scene Graph: entity, component, prefab
Scene Graph: entities form a tree
Scene Graph: what a berry bush is made of
Berry bushes
Turn a bush into a prefab
Turn the bush setup into a prefab
Prefabs: in Verse, a prefab is a class (1/2)
Prefabs: in Verse, a prefab is a class (2/2)
Add components
Add interactable and sound components to the prefab
Write your own component
Create berry_bush_component and tune it in Details
Picking berries
Components: a Verse class you write (1/7)
@editable: values designers can change (2/7)
Lifecycle: setup, behaviour, cleanup
Lifecycle: quick setup (3/7)
GetComponent: find the interactable (4/7)
Built-in events: wait for a pick (5/7)
Concurrency: regrow over time (6/7)
Lifecycle: clean up (7/7)
A rare golden bush
Create the golden bush variant
Prefab subclasses: change only what is different
A component is a Verse class. Use the lifecycle methods for setup, behaviour, and cleanup.
The puzzle house
A puzzle with pressure plates
The puzzle house
Scene events: from a plate to its room
Scene events: up and down the tree (1/5)
Scene events: up and down the tree (2/5)
Scene events: up and down the tree (3/5)
Scene events: up and down the tree (4/5)
Scene events: up and down the tree (5/5)
EntityEnteredEvent: a player steps on a plate (1/7)
Scene events: SendUp from the plate (2/7)
Scene events: OnReceive in the room (3/7)
Scene events: check the plate order (4/7)
Scene events: SendDown a reset (5/7)
Scene events: each plate handles the reset (6/7)
Scene events: return true to consume (7/7)
A gem pedestal
The gem on the pedestal
Entity hierarchy: the gem gets a new parent (1/6)
Entity hierarchy: snap it into place (2/6)
Scene queries: find the room to notify (3/6)
Scene queries: search the tree from an entity (1/3)
Scene queries: search the tree from an entity (2/3)
Scene queries: search the tree from an entity (3/3)
Generators: what queries return (1/3)
Generators: what queries return (2/3)
Generators: what queries return (3/3)
Scene queries: search up the tree (4/6)
Generators: take the first match (5/6)
Scene queries: a direct call (6/6)
Connect components with scene events and scene queries, not hard references.
Mobs in the tall grass
Detect players in the grass
The tall grass in the editor
Mobs in the grass
EntityEnteredEvent: wait for a visitor (1/9)
Failure: two checks before an encounter (2/9)
Failure: is the visitor a player? (3/9)
Spawning prefabs: start an encounter (4/9)
Tags: mark the spawn points (5/9)
Tag queries: find the spawn points (6/9)
Shuffle: pick different spots (7/9)
Spawning prefabs: create a mob (8/9)
Spawning prefabs: place it, then add it (9/9)
An elite mob
The elite in the editor
Prefab subclasses: spawn either class (1/3)
Prefab subclasses: spawn either class (2/3)
Prefab subclasses: same component, new values (3/3)
Stun mobs, show their health
Stun, defeat, clean up
Runtime tags: tag a mob as stunned (1/3)
Runtime tags: tag a mob as stunned (2/3)
Runtime tags: tag a mob as stunned (3/3)
cancelable: clean up what you subscribe to
Use queries to find entities, prefab classes to create them, and clean up what you start.
Bombs
Drop bombs
Bombs use the character facing
SpatialMath: where is the character? (1/4)
SpatialMath: in front of the character (2/4)
Spawning prefabs: create a bomb (3/4)
Spawning prefabs: place it, then add it (4/4)
Clear the path to the cave
The path to the cave is clear
Concurrency: wait for the fuse (1/9)
FindOverlapHits: what is in range? (2/9)
FindOverlapHits: everything in the blast radius (1/2)
FindOverlapHits: everything in the blast radius (2/2)
FindOverlapHits: a sphere at the bomb (3/9)
FindOverlapHits: each entity once (4/9)
FindOverlapHits: everything except the bomb (5/9)
Interfaces: cast to blastable (6/9)
Interfaces: a contract (7/9)
Interfaces: each type implements OnBlast (8/9)
Removing entities: the bomb removes itself (9/9)
Removing entities: a blasted bush keeps its stump (1/2)
Removing entities: a blasted bush keeps its stump (2/2)
Find what is in range, then call the interface on each component that implements it.
Everything we used today
Learn more
Questions?