hi all,
The question has been asked if this can be multiway so here is once again the AI answer
AI Overview
To make a walkie-talkie prefab multiway using Verse in UEFN (Unreal Editor for Fortnite), you need to change how the underlying devices communicate. By default, a simple walkie-talkie prefab pairs an interaction device (like a Button or Conditional Button) with an output device (like a Audio Player or HUD Message device) via a single direct event binding. [1, 2, 3]
To make it multiway (meaning anyone holding/using a walkie-talkie instance transmits to all other active walkie-talkie instances), you must bypass rigid 1:1 bindings and use a Verse Device acting as a central network hub. [1, 2]
Here is how to set up the system.
1. Structure the Walkie-Talkie Prefab
If you are building your walkie-talkie as an Entity Prefab, ensure each instance contains:
- An activation component or device (e.g., a Button Device to trigger “Push to Talk”).
- An audio/visual broadcast component or device (e.g., an Audio Player Device or a HUD Message Device to hear/see the incoming transmission). [1, 2, 3]
2. Write the Multiway Hub Script
Create a new Verse device in your project and name it walkie_talkie_hub. This device keeps a dynamic array of all deployed walkie-talkie pairs. When any input button is pressed, it loops through and triggers the speaker device on every other instance. [1]
verse
using { /fortnite.com }
using { /Verse.org/Simulation }
using { /Verse.org/Verse }
# Create a custom class to represent a single walkie-talkie station
walkie_talkie_station := class<concrete>:
@editable
TransmitButton : button_device = button_device{}
@editable
ReceiverAudio : audio_player_device = audio_player_device{}
# The Central Hub handling the multiway communication matrix
walkie_talkie_hub := class(creative_device):
@editable
Stations : []walkie_talkie_station = array{}
OnBegin<override>() : void =
# Initialize and listen to all station buttons
for (Index -> Station : Stations):
Station.TransmitButton.InteractedWithEvent.Subscribe(OnMessageTransmitted)
# Triggered when any walkie talkie is used
OnMessageTransmitted(Agent : agent) : void =
# Find who sent it so we don't echo the audio back to the sender
for (Station : Stations):
if (Station.TransmitButton.InteractedWithEvent):
# Optional: You can filter so the sender doesn't hear themselves
# For a true multiway broadcast, tell all receivers to play
Station.ReceiverAudio.Play(Agent)
Use code with caution.
3. Binding the Instances in UEFN
- Compile your Verse code to make the properties appear in the editor.
- Drag your
walkie_talkie_hub device into your map level.
- In the details panel of the hub, look at the Stations array.
- Click the + icon to add as many elements as you have walkie-talkie instances in your game.
- For each element, map the unique
TransmitButton and ReceiverAudio device belonging to that specific prefab instance. [1, 2, 3]
Now, instead of a standard 2-way pair, any interaction dynamically maps across the array, giving you a scalable, multiway communication line across your entire map. [1]
Acknowledges
referenced the post in thread
[CRITICAL] Proximity voice chat completely broken since update 40.20 - General / Issues and Bug Reporting - Epic Developer Community Forums