Build the Car Primitive
Build the Car Primitive
Welcome to Scene Graph: Car Primitive — the final scene-graph domain. Over four lessons you'll build a car you can paint, climb into, and drive, all from compile-clean Verse. But first, an honest word about what a "car" is in UEFN.

Two very different "cars"
<!-- section-art:two-very-different-cars -->

Primitive Handle
Fortnite has real, fully-simulated vehicles — engine, suspension, four wheels that grip the road. In build 41.00 those are assembled from modular_vehicle_component, vehicle_engine_component, vehicle_wheel_component, and friends. Here's the catch: every one of those component classes is <epic_internal>. A creator cannot build a wheeled vehicle from scene-graph components in Verse. (You can place a prebuilt vehicle with a vehicle_spawner_*_device — we'll point at that — but you can't author the sim.)
So we build the version you can drive from Verse: a primitive. A primitive is just a placed prop — a mesh body — that we claim as "the car", get a live handle on, and move on command. That handle is the foundation for everything that follows: colour it (Part 2), climb in and switch to first person (Part 3), and actually drive it (the capstone).
Honesty rule for this whole domain: when a capability is Epic-internal, we say so and teach the closest public thing instead.
Finding the car without wiring it
We'll use tag discovery — the same idiom behind every working island. Instead of dragging object references into @editable slots, the device finds its collaborators at runtime by tag:
- the car body is any placed prop carrying
car_body_tag, - the ignition is any button carrying
car_ignition_tag.
A tag is just a class deriving from tag:
car_body_tag := class(tag) {}
car_ignition_tag := class(tag) {}
At begin, we ask the world for everything wearing each tag and cast it to the concrete type we need:
for (Obj : FindCreativeObjectsWithTag(car_ignition_tag)):
if (Ignition := button_device[Obj]):
Ignition.InteractedWithEvent.Subscribe(OnIgnition)
FindCreativeObjectsWithTag returns creative_object_interface values; button_device[Obj] casts one to a button (the [...] form fails gracefully if it isn't a button). Same trick gives us the car body as a creative_prop.
Proving we have a live handle: nudge it forward
Once we hold a creative_prop, we can move it. The proof-of-life for Part 1 is simple — press the ignition and the car eases forward along the way it's already facing:
NudgeOne(Body : creative_prop)<suspends> : void =
Current : transform = Body.GetTransform()
Forward : vector3 = Current.Rotation.GetLocalForward()
Target : vector3 = Current.Translation + Forward * NudgeDistance
Body.MoveTo(Target, Current.Rotation, NudgeSeconds)
GetTransform() reads where the prop is right now. Current.Rotation.GetLocalForward() is the prop's own +X axis as a unit vector — "the way the car points". Scale it by NudgeDistance, add it to the current position, and MoveTo glides the prop there over NudgeSeconds, keeping its rotation so it doesn't spin. Because OnIgnition can't wait, it spawns the work.
Why not physics?
creative_propdoes exposeApplyForce/SetLinearVelocity, but those no-op unless the prop carries aFortPhysicsComponent, which isn't Verse-exposed — you'd have to author the prop physics-enabled in the editor.MoveToworks on any prop, so it's the reliable primitive-motion tool for a lesson.
The full device
<!-- section-art:the-full-device -->

Car Primitive Assembly
This device is compile-verified in UEFN 5.8 (the whole project builds clean with it installed). Grab it as 03-device.verse, place a prop for the body (tag it car_body_tag) and a Button for the ignition (tag it car_ignition_tag), and press it.
Recap
- A creator-built wheeled vehicle is Epic-internal; the public version is a primitive — a placed prop you drive from Verse.
- Tag discovery (
FindCreativeObjectsWithTag+ a cast likecreative_prop[Obj]) gets a live handle with no@editablewiring. GetTransform()+GetLocalForward()+MoveTois the reliable way to move a prop along its own facing.- Prefer
MoveToover physics for a prop primitive — physics calls need an editor-authoredFortPhysicsComponent.
Get the complete code — free
You've read the full walkthrough. The complete, copy-paste-ready Verse solution is free for members — sign in to unlock it.
Free with your BrainDead.TV / BrainDeadGuild Discord account. The walkthrough above is always free.
Verse source files
- 01-fragment.verse · fragment
- 03-device.verse · device
Check your understanding
Test yourself with an interactive quiz and track your progress + earn XP — free for members.
Turn this into a guided course
Add UEFN Verse scene-graph — building a 'car' as a tag-discovered creative_prop primitive; honest note that modular_vehicle_* components are Epic-internal; GetTransform/GetLocalForward/MoveTo motion, button_device.InteractedWithEvent to your free study plan — we'll suggest related pages and stitch the lot into one compile-checked, self-guided lesson with worked examples and quizzes.
References
Original tutorial generated by Verse Island from the Verse/UEFN knowledge base, with references to the Epic Games sources above. Code is validated against the knowledge base.