Skip to main content
Version: 5.x

Blueprint Async Nodes

Every request/response operation on the Client Game Subsystem is exposed to Blueprint as an async action node. Each node takes the subsystem as its Target input (use Get RedwoodClientGameSubsystem), sends the request, and fires its output exec pin when the backend answers. All nodes are in the Redwood category of the Blueprint palette.

How to read the tables below:

  • Inputs are listed in pin order, after Target.
  • Output is the output exec pin's name and the struct (or string) it carries. Break the struct to get its fields; see Types.
  • An empty Error string (or empty Message for auth/ticketing updates) means success.
  • Most nodes fire once. The exceptions are the auth nodes that can report MustVerifyAccount and the ticketing nodes, which can fire several times.
  • C++ function is the subsystem function the node wraps; read its section for full behavior notes.
note

Some functions are regular Blueprint functions on the subsystem rather than async nodes because they return immediately: Is Director Connected, Is Logged In, Get Player Id, Get Nickname, Logout, Cancel Waiting For Account Verification, Is Realm Connected, Get Regions, Set Selected Character, Get Cached Party, Send Emote To Party, and Get Connection Console Command. The subsystem's events (e.g. On Party Updated) are listed on the Client Game Subsystem page.

Connection, Auth, and Realms​

NodeInputsOutputC++ functionNotes
Initialize Director ConnectionnoneOn Output (FRedwoodSocketConnected Details)InitializeDirectorConnectionOnly fires on success; call once per session
RegisterUsername, PasswordOn Update (FRedwoodAuthUpdate)RegisterFires again with Success after email verification. Doesn't log in.
LoginUsername, Password, bRememberMe, Provider (default "local")On Update (FRedwoodAuthUpdate)LoginFires again with Success after email verification
Attempt Auto-LoginnoneOn Update (FRedwoodAuthUpdate)AttemptAutoLoginUses credentials saved by a Remember Me login
Login with DiscordbRememberMeOn Update (FRedwoodAuthUpdate)LoginWithDiscordOpens the system browser
Login with TwitchbRememberMeOn Update (FRedwoodAuthUpdate)LoginWithTwitchOpens the system browser
List RealmsnoneOn Output (FRedwoodListRealmsOutput)ListRealms
Initialize Realm ConnectionRealm (FRedwoodRealm)On Output (FRedwoodSocketConnected)InitializeRealmConnectionOnly fires on success
Initialize Connection For First RealmnoneOn Output (FRedwoodSocketConnected)InitializeConnectionForFirstRealmLists realms and connects to the first

Login with Steam and Login with EOS come from the optional plugins.

Characters​

NodeInputsOutputC++ functionNotes
List CharactersnoneOn Output (FRedwoodListCharactersOutput)ListCharactersNon-archived characters
List Archived CharactersnoneOn Output (FRedwoodListCharactersOutput)ListArchivedCharacters
Create CharacterName, Character Creator Data (USIOJsonObject)On Output (FRedwoodGetCharacterOutput)CreateCharacterCreator data must not be None. Doesn't select the new character.
Get Character DataCharacter Id Or NameOn Output (FRedwoodGetCharacterOutput)GetCharacterData
Set Character DataCharacter Id, Name, Character Creator DataOn Output (FRedwoodGetCharacterOutput)SetCharacterDataEmpty name or None data leaves that field unchanged
Set Character ArchivedCharacter Id, bArchivedOn Output (FString Error)SetCharacterArchived

Servers (Proxies) and Ticketing​

NodeInputsOutputC++ functionNotes
List ProxiesPrivate Proxy References (array of IDs or short codes)On Output (FRedwoodListProxiesOutput)ListProxies
Create ProxybJoinSession, Parameters (FRedwoodCreateProxyInput)On Output (FRedwoodCreateProxyOutput)CreateProxyWith bJoinSession, the player travels automatically when ready
Join Proxy with Single InstanceProxy Reference, PasswordOn Output (FRedwoodJoinServerOutput)JoinProxyWithSingleInstanceTravel is automatic on success
Stop ProxyServer Proxy IdOn Output (FString Error)StopProxyOwner or admin only
Join MatchmakingProfile Id, Regions (array of region names)On Update (FRedwoodTicketingUpdate Update)JoinMatchmakingFires multiple times; see below
Join QueueProxy Id, Zone Name, bTransferWholePartyOn Update (FRedwoodTicketingUpdate)JoinQueueFires multiple times. Requires a realm connection.
Join CustombTransferWholeParty, RegionsOn Update (FRedwoodTicketingUpdate)JoinCustomFires multiple times
Leave TicketingnoneOn Output (FString Error)LeaveTicketingCancels the current ticket

The three ticketing nodes report a JoinResponse first (empty Message = ticket accepted, otherwise rejected), then any number of Updates, and finish with either a TicketError or the player traveling to the server. See Ticketing and Regions.

note

Older versions of Redwood named these nodes List Servers, Create Server, Join Server Instance, and Stop Server. Redirects in the plugin upgrade existing Blueprints automatically.

Parties​

NodeInputsOutputC++ functionNotes
Get or Create PartybCreateIfNotInParty (default false)On Output (FRedwoodGetPartyOutput)GetOrCreatePartyParty.bValid == false means not in a party
Leave PartynoneOn Output (FString Error)LeaveParty
Invite to PartyTarget Player IdOn Output (FString Error)InviteToPartyPlayer ID, not character ID
List Party InvitesnoneOn Output (FRedwoodListPartyInvitesOutput)ListPartyInvites
Respond to Party InviteParty Id, bAcceptOn Output (FRedwoodGetPartyOutput)RespondToPartyInviteUse the invite's Id
Promote to Party LeaderTarget Player IdOn Output (FString Error)PromoteToPartyLeader
Kick from PartyTarget Player IdOn Output (FString Error)KickFromParty
Respond to Party Invite (Set Party Data)Loot Type, Party Data (USIOJsonObject, optional)On Output (FRedwoodGetPartyOutput)SetPartyDataSee the known issue below
Known issue (5.0.0)

The Set Party Data node is mislabeled Respond to Party Invite in the palette. You can tell the two apart by their inputs: the Set Party Data node has Loot Type and Party Data.

NodeInputsOutputC++ function
Search For PlayersUsername Or Nickname, bIncludePartialMatchesOn Output (FRedwoodListPlayersOutput)SearchForPlayers
List FriendsFilter (ERedwoodFriendListType)On Output (FRedwoodListPlayersOutput)ListFriends
Request FriendOther Player IdOn Output (FString Error)RequestFriend
Remove FriendOther Player IdOn Output (FString Error)RemoveFriend
Respond To Friend RequestOther Player Id, bAcceptOn Output (FString Error)RespondToFriendRequest
Set Player BlockedOther Player Id, bBlockedOn Output (FString Error)SetPlayerBlocked

SearchForPlayerById has no Blueprint node (C++ only).

Known issue (5.0.0)

List Friends only works with the All filter. Filter the results on each player's Friendship State yourself.

Realm Contacts​

NodeInputsOutputC++ function
List Realm ContactsnoneOn Output (FRedwoodListRealmContactsOutput)ListRealmContacts
Add Realm ContactOther Character Id, bBlockedOn Output (FString Error)AddRealmContact
Remove Realm ContactOther Character IdOn Output (FString Error)RemoveRealmContact
Known issue (5.0.0)

Add Realm Contact fails backend validation because it doesn't send a description.

Guilds​

NodeInputsOutputC++ function
List GuildsbOnlyPlayersGuildsOn Output (FRedwoodListGuildsOutput)ListGuilds
Search for GuildsSearch Text, bIncludePartialMatchesOn Output (FRedwoodListGuildsOutput)SearchForGuilds
Get GuildGuild IdOn Output (FRedwoodGetGuildOutput)GetGuild
Get Selected GuildnoneOn Output (FRedwoodGetGuildOutput)GetSelectedGuild
Set Selected GuildGuild IdOn Output (FString Error)SetSelectedGuild
Join GuildGuild IdOn Output (FString Error)JoinGuild
Invite To GuildGuild Id, Target Player IdOn Output (FString Error)InviteToGuild
Leave GuildGuild IdOn Output (FString Error)LeaveGuild
List Guild MembersGuild Id, State (ERedwoodGuildAndAllianceMemberState)On Output (FRedwoodListGuildMembersOutput)ListGuildMembers
Create GuildGuild Name, Guild Tag, Invite Type, bListed, bMembershipPublicOn Output (FRedwoodCreateGuildOutput)CreateGuild
Update GuildGuild Id, Guild Name, Guild Tag, Invite Type, bListed, bMembershipPublicOn Output (FString Error)UpdateGuild
Kick Player From GuildGuild Id, Target Player IdOn Output (FString Error)KickPlayerFromGuild
Ban Player From GuildGuild Id, Target Player IdOn Output (FString Error)BanPlayerFromGuild
Unban Player From GuildGuild Id, Target Player IdOn Output (FString Error)UnbanPlayerFromGuild
Promote Player To Guild AdminGuild Id, Target Player IdOn Output (FString Error)PromotePlayerToGuildAdmin
Demote Player From Guild AdminGuild Id, Target Player IdOn Output (FString Error)DemotePlayerFromGuildAdmin

When guilds are scoped to the realm, Target Player Id accepts a character ID or character name.

Alliances​

NodeInputsOutputC++ function
List AlliancesGuild Id FilterOn Output (FRedwoodListAlliancesOutput)ListAlliances
Search for AlliancesSearch Text, bIncludePartialMatchesOn Output (FRedwoodListAlliancesOutput)SearchForAlliances
Can Admin AllianceAlliance IdOn Output (FString Error)CanAdminAlliance
Create AllianceAlliance Name, Guild Id, bInviteOnlyOn Output (FRedwoodCreateAllianceOutput)CreateAlliance
Update AllianceAlliance Id, Alliance Name, bInviteOnlyOn Output (FString Error)UpdateAlliance
Kick Guild From AllianceAlliance Id, Guild IdOn Output (FString Error)KickGuildFromAlliance
Ban Guild From AllianceAlliance Id, Guild IdOn Output (FString Error)BanGuildFromAlliance
Unban Guild From AllianceGuild Id, Alliance Id (note the order)On Output (FString Error)UnbanGuildFromAlliance
List Alliance GuildsAlliance Id, StateOn Output (FRedwoodListAllianceGuildsOutput)ListAllianceGuilds
Join AllianceAlliance Id, Guild IdOn Output (FString Error)JoinAlliance
Leave AllianceAlliance Id, Guild IdOn Output (FString Error)LeaveAlliance
Invite Guild To AllianceAlliance Id, Guild IdOn Output (FString Error)InviteGuildToAlliance
Known issue (5.0.0)

Ban Guild From Alliance fails backend validation. Unban Guild From Alliance passes its two IDs to the backend in swapped order; until that's fixed, connect the alliance ID to the Guild Id pin and the guild ID to the Alliance Id pin.

Global Data​

NodeInputsOutputC++ function
Get Director Global DatanoneOn Output (FRedwoodGetGlobalDataOutput)GetDirectorGlobalData
Get Realm Global DatanoneOn Output (FRedwoodGetGlobalDataOutput)GetRealmGlobalData
Known issue (5.0.0)

Neither node ever fires its output in 5.0.0 (the request is sent without its payload, so the backend doesn't respond).

Server-Only Nodes: Blobs and SaveGames​

These four nodes live in the same folder but only work on game servers. Their Target is the URedwoodServerGameSubsystem (use Get RedwoodServerGameSubsystem), and they go through the game server's sidecar, so clients can't call them. See Blob Storage.

NodeInputsOutputNotes
Put BlobKey, Blob (byte array)On Output (FString Error)Stores raw bytes under a key. Limited by realm.instances.<key>.persistence.blobs.max-key-bytes and max-blob-bytes.
Get BlobKeyOn Output (FRedwoodGetBlobOutput)
Put SaveGameKey, Save Game (USaveGame)On Output (FString Error)Serializes the SaveGame and stores it as a blob
Get SaveGameKeyOn Output (FRedwoodGetSaveGameOutput)Loads and deserializes a SaveGame stored with Put SaveGame