Actor component runs on Player, but not on other actors ?!?

Use some good old print to log, in each begin play get actor name (self) print it out, and some message.

I see you are using breakpoints, and with breakpoints there is a problem. You put those in editor (source code) copy of actor, it is very easy to have that breakpoint in copy of actor that is not used in level. So use prints, to see if they are really not used, and to see order of begin play.

Yes whole loading order stuff is quite messed up, in unreal. However do not blame Epic, its mess from oop side more than epic fault.

However it could be nice to have real begin play. :slight_smile:

This may have some clues (chat GPT aka yellow rubber duck) take on this problem:

In Unreal Engine, if you’re streaming in a level and actors inside it don’t have BeginPlay() triggered, it’s likely due to one of the following issues:


:white_check_mark: Checklist for BeginPlay to fire:

  1. Level is loaded but not made visible
  • BeginPlay only fires when the streaming level becomes both loaded and visible.
  • Fix: Make sure you’re using SetShouldBeVisible(true) or LoadStreamLevel with bMakeVisibleAfterLoad = true.
  1. Actors are not considered part of gameplay
  • Only actors that are “Actors in Game” will trigger BeginPlay. Actors marked as Editor-only or not placed in the persistent world might not trigger gameplay events.
  • Fix: Ensure your actor is not marked as IsEditorOnly() or part of a construction script-only logic.
  1. Streaming level is not loaded in the correct World context
  • If you’re loading a level in the editor context (e.g., with the wrong world pointer or from an editor utility), then gameplay events like BeginPlay won’t fire.
  • Fix: Make sure you’re loading levels during actual gameplay, not in the editor or via EditorUtility.
  1. The level was already loaded and made visible before the game started
  • If a streaming level is already loaded and visible at the start of the game, actors in that level may have already triggered BeginPlay before your logic runs.
  • Fix: Check the load order and ensure you’re observing the behavior immediately after the streaming.
  1. The level is not marked as a streaming level (or not properly referenced)
  • If a level is not actually loaded as a sublevel in the World Composition or World Partition setup, then streaming behavior may not behave as expected.

:bullseye: Common Blueprint fix:

If you’re doing this in Blueprint, double-check the level streaming node:

  • Use Load Stream Level.
  • Check Make Visible After Load = true.
  • Optionally, wait for the Level Loaded and Level Shown output pins before proceeding.

ps.
Double check what ajj produced, they tend to make up “facts”.