UEFN Build-Along Livestream: Designing Horror Islands w/ ItsBlind – September 22

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

  1. Compile your Verse code to make the properties appear in the editor.
  2. Drag your walkie_talkie_hub device into your map level.
  3. In the details panel of the hub, look at the Stations array.
  4. Click the + icon to add as many elements as you have walkie-talkie instances in your game.
  5. 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

2 Likes