Description

UVOIPStatics::VoiceTalkerMap uses FUniqueNetIdWrappers as its keys, which will be the same across multiple instances for a player. A player's local pawn can have a voip talker, and that pawn on a remote instance can also have a voip talker. When adding these talkers to the map, talkers added later will override entries with the same FUniqueNetId, making it possible to access talkers from another PIE instance. For example, FVoiceEngineImpl::SubmitRemoteVoiceData may set OwningTalker to a UVoipTalker from another PIE instance's world.

Steps to Reproduce

Add a VOIPTalker component to a project's pawn, ensuring it is registered with that pawn's PlayerState when it is available.
In single-process PIE, create two or more standalone instances and connect them via the session interface.
On the host (or the first instance to join a dedicated server), iterate through the PlayerArray on the GameState, using UVOIPStatics::GetVOIPTalkerForPlayer to get the voip talker for each player.
Expected: Each VOIP talker retrieved will be from the current PIE instance.
Actual: The VOIP talkers retrieved may be from a different PIE instance.

See linked UDN for more detailed information.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-196953 in the post.

0
Login to Vote

Backlogged
ComponentUE - Online
Affects Versions5.4
CreatedOct 2, 2023
UpdatedOct 4, 2023