Hi, I’m looking for help with a reproducible Join in Progress (JIP) spawning issue in UEFN.
I am creating a round-based game with a Pre-Game waiting area and separate gameplay spawn pads placed on pillars.
The important distinction is that the Pre-Game area is NOT a lobby that players should return to between rounds. It is only used once, while the server is waiting for players before the match starts.
The intended flow is:
PLAYER JOINS BEFORE THE MATCH STARTS
↓
PRE-GAME WAITING AREA
↓
MATCH STARTS
↓
ROUND 1
↓
PLAYER SPAWNS ON A GAMEPLAY PILLAR
↓
ROUND 2
↓
PLAYER SPAWNS ON A GAMEPLAY PILLAR
↓
ROUND 3
↓
PLAYER SPAWNS ON A GAMEPLAY PILLAR
For a player who joins after the match has already started, I want:
PLAYER JOINS DURING ROUND 1
↓
SPECTATOR
↓
ROUND 1 ENDS
↓
ROUND 2 STARTS
↓
PLAYER SPAWNS DIRECTLY ON A GAMEPLAY PILLAR
The problem is that the late-joining player correctly becomes a spectator, but when the next round starts, the player is spawned in the Pre-Game waiting area instead of a gameplay pillar.
In some configurations the player can also fall from the sky instead of being placed on a valid gameplay spawn.
After that, the player eventually ends up spawning on a gameplay pillar, but the initial spawn is wrong.
Current configuration
Island Settings:
- Join in Progress → Spawn on Next Round
- Default Class Identifier → Class 2
- Spawn Location → Spawn Pads
- Only Allow Respawn if Spawn Pads Found → ON
Pre-Game Player Spawners:
- Player Class → Class 1
- Use as Island Start → ON
- Enabled During Phase → Pre-Game Only
Gameplay Player Spawners:
- Player Class → Class 2
- Use as Island Start → OFF
- Enabled During Phase → Always
- These are the 12 spawn pads placed on the gameplay pillars.
The player is correctly assigned to Class 2. I also tested the Class Selector independently with a Button: manually changing a player to Class 2 works correctly and does not cause the player to be killed or otherwise behave incorrectly.
What I have already tested
I have tested many different combinations of:
- Player Classes
- Class Selector / Class Designer
- Player Spawner Class filtering
Use as Island StartEnabled During Phase- Priority Groups
Default Class IdentifierJoin in ProgressSpawn on Next RoundSpawn LocationOnly Allow Respawn if Spawn Pads Found- Verse-based class assignment
- Verse-based JIP handling
RoundBeginEvent- manually forcing a respawn with Verse
- disabling my custom
end_game_system
I have now gone through more than 40 test versions trying to isolate the issue.
I also tested with my custom end_game_system completely disabled, and the exact same JIP spawning problem occurs, so the End Game Device / End Game Verse system does not appear to be causing the issue.
I also tried a Verse fallback that listens for RoundBeginEvent, waits briefly, checks whether the late joiner has a fort_character, and attempts to force a respawn onto a gameplay pillar. The Verse code compiles successfully, but the player is still sent to the Pre-Game waiting area instead of directly to a gameplay pillar.
My question
I need to know whether this is:
- Expected behavior / a limitation of
Join in Progress → Spawn on Next Round, - a known bug involving Pre-Game Island Start spawners and Gameplay Player Spawners, or
- a specific configuration/API that I am missing.
Most importantly:
How can I configure UEFN so that Pre-Game Player Spawners are used ONLY when the player initially joins the session, while a player joining in progress with Spawn on Next Round is guaranteed to spawn directly on a Gameplay Player Spawner when the next round begins?
I do not want the player to return to the Pre-Game waiting area between rounds, and I do not want to use a damage volume or other workaround to hide the spawning problem.
If this behavior is a known UEFN limitation or bug, please let me know so I can stop trying to solve something that cannot currently be solved through the normal Player Spawner / JIP system.
If you need it, I can also provide the project, Verse files, screenshots of the Player Spawner settings, and a reproducible test case.
Thank you.