Sidekick Companion: A Pet That Follows and Feels
Tutorial advanced compiles

Sidekick Companion: A Pet That Follows and Feels

Updated advanced Scene Graph Npc Ai Sidekick Code verified

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 --> Sidekick Companion: A Pet That Follows and Feels: 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.

A cozy farm scene with a small Sidekick companion beside the player spawn

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[...]Happy on success, Eat for a pet-care loop, Dance to 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 --> Sidekick Companion: A Pet That Follows and Feels: 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 }MoodOverride is an ?sidekick_mood, so we wrap the value in option{ }. This locks the mood, overriding the automatic system.
  • GetEntity[].GetPlayspaceForEntity[]npc_behavior.GetPlayspace is epic_internal/deprecated, so we reach the playspace through our entity instead (needs using { /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_component is epic_internal (not constructable) but its methods are public; you fetch it failably via GetEntity[].GetComponent[npc_sidekick_component].
  • A Sidekick has a sidekick_mood (lockable with MoodOverride, an ?sidekick_mood) and one-shot sidekick_reaction emotes played with PlayReaction[...].
  • Reach the playspace from a behavior via GetEntity[].GetPlayspaceForEntity[] (the behavior's own GetPlayspace is 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

Check your understanding

Test yourself with an interactive quiz and track your progress + earn XP — free for members.

Up next · Scene Graph: Car Primitive Build the Car Primitive Continue →

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.

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.

Comments

    Sign in to vote, comment, or suggest an edit. Sign in