Sidekick Companion: A Pet That Follows and Feels
Sidekick Companion: A Pet That Follows and Feels
Time for the headliner. Sidekicks are Fortnite's NPC companions — pint-sized creatures with their own moods, their own reactions, and customizable looks. They're the foundation for creature-collectors, pet-care sims, monster battlers, and loyal companions that trot along beside the player. And as of the latest docs, Epic has opened the Sidekick API to creators through SceneGraph. Let's build one.
What a Sidekick is (and isn't)
<!-- section-art:what-a-sidekick-is-and-isn-t -->

Spawned Companion
Straight from Epic's Using Sidekick NPCs guide: you can't build a Sidekick from scratch. Like every NPC, a Sidekick is spawned from an NPC Spawner using a Sidekick character definition. What you can do is script its behavior and read/drive its emotional state through the npc_sidekick_component.
That component, like all the sidekick component types, is marked epic_internal — meaning you can't construct one. But you don't need to: the spawner gives you a fully-formed Sidekick, and you reach its component off the behavior's entity. Every method on it (PlayReaction, GetMood, the mood/reaction events) is public.

Moods and reactions
A Sidekick has two expressive systems:
sidekick_mood := enum { Bored, Combat, Neutral, Worried }
sidekick_reaction := enum { Angry, Attack, Dance, Eat, Emote, Happy, HitReact, Sleeping, Worried }
- Mood changes its idle animations automatically (worried when the player is hurt, combat when fighting). You can lock it with
MoodOverride. - Reaction is a one-shot emote you request with
PlayReaction[...]—Happyon success,Eatfor a pet-care loop,Danceto show off.
Getting the component off the entity
Here's the access pattern that the fresh docs unlock. An npc_behavior has GetEntity[]; an entity has the generic GetComponent[component_type]:
if (Sidekick := GetEntity[].GetComponent[npc_sidekick_component]):
Sidekick.PlayReaction[sidekick_reaction.Happy]
GetComponent[...] is failable (square brackets) — it only succeeds if that entity actually carries a sidekick component, which it will when the character is a Sidekick.
A loyal, cheerful companion
<!-- section-art:a-loyal-cheerful-companion -->

Loyal Spectral Hound
This behavior adopts the first player as its owner, follows them forever, and plays a Happy emote every time it catches up — and it forces a Neutral mood so it never sulks:
The notable bits:
Entity.GetComponent[npc_sidekick_component]— the whole reason this lesson needed the fresh docs. We pull the Sidekick API off our own entity, failably.set Sidekick.MoodOverride = option{ sidekick_mood.Neutral }—MoodOverrideis an?sidekick_mood, so we wrap the value inoption{ }. This locks the mood, overriding the automatic system.GetEntity[].GetPlayspaceForEntity[]—npc_behavior.GetPlayspaceisepic_internal/deprecated, so we reach the playspace through our entity instead (needsusing { /Fortnite.com/Playspaces }).GetPlayers()returns the human players; players are agents.Sidekick.PlayReaction[sidekick_reaction.Happy]— failable, because the Sidekick might be mid-reaction. We only log success.NavigateTo(Target, ?ReachRadius := FollowRadius)— the follow loop re-targets the moving owner each pass, with a comfortable reach radius so the pet doesn't crowd them.
This behavior is compile-verified in UEFN 5.8 (the project builds clean as a standalone Verse class). Spawn a Sidekick from an NPC Spawner with a Sidekick character definition, then assign this as its Verse behavior.
Recap
- Sidekicks are companion NPCs spawned from an NPC Spawner with a Sidekick character definition — you can't build one from scratch, but you fully script its behavior.
- The
npc_sidekick_componentisepic_internal(not constructable) but its methods are public; you fetch it failably viaGetEntity[].GetComponent[npc_sidekick_component]. - A Sidekick has a
sidekick_mood(lockable withMoodOverride, an?sidekick_mood) and one-shotsidekick_reactionemotes played withPlayReaction[...]. - Reach the playspace from a behavior via
GetEntity[].GetPlayspaceForEntity[](the behavior's ownGetPlayspaceis epic_internal). - Combine it all — navigatable follow + reactions + mood — and you've got a companion that feels alive.
That wraps Scene Graph: NPCs. You can now fill an island with spawned hordes, tuned guards, custom-minded characters, and companions that follow and feel — every line compile-verified.
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
- 03-standalone.verse · standalone
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 NPCs — Sidekick API, npc_sidekick_component via GetEntity[].GetComponent[], sidekick_mood/MoodOverride, sidekick_reaction/PlayReaction, GetPlayspaceForEntity, navigatable follow loop 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.