Skip to content

Commit f6a4816

Browse files
committed
Document additional friend list binding options
1 parent 3681225 commit f6a4816

3 files changed

Lines changed: 81 additions & 0 deletions

File tree

docs/framework/bind_friends_list.mdx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import bpActionCheck from "./bind_friends_list/action_check.bp";
1313
import bpActionPerform from "./bind_friends_list/action_perform.bp";
1414
import bpAccessExternal1 from "./bind_friends_list/access_external_1.bp";
1515
import bpAccessExternal2 from "./bind_friends_list/access_external_2.bp";
16+
import bpShowLocalPlayer from "./bind_friends_list/show_local_player.bp";
17+
import bpIncludeCachedFriends from "./bind_friends_list/include_cached_friends.bp";
1618
import videoPreview from "./bind_friends_list/preview.mp4";
1719

1820
Traditionally to display friend lists or list of party members in-game, you had to listen for events and manually synchronise the player list when things changed.
@@ -127,3 +129,24 @@ You can access the current selected item on the tree view through `Get Selected
127129
Alternatively, you can store last selected friend entry when the `On Item Selection Changed` event fires:
128130

129131
<Blueprint height="240px" blueprint={bpAccessExternal2} />
132+
133+
## Show the local player in the party section of the friend list
134+
135+
If you want the local player to appear under the "In-Party" section of the friend list, you need to explicitly turn the option on:
136+
137+
<Blueprint height="300px" blueprint={bpShowLocalPlayer} />
138+
139+
## Show cached, offline friends in the friend list
140+
141+
When a user plays on a desktop platform, the plugin caches their platform friends in Player Data Storage. When the player later plays on a different platform or store, we can read those cached friends to de-duplicate friends across platforms.
142+
143+
By default, cached friends that are offline are not included in the friend list. This is because the user can not perform any meaningful action with them:
144+
145+
- They are not in-game, so we can't send them invites over Epic Online Services.
146+
- They aren't friends on the current platform, so there's no way to send an invite to them over the local platform.
147+
148+
For example, if we cache a Meta Quest friend and then the user is later playing on Steam, if the Meta Quest friend is not in-game, we can't send them an invite by any means because you can't send an invite to a Meta user from Steam.
149+
150+
If you want to include cached friends that the local player can't perform any action on, you need to explicitly opt-in to showing them:
151+
152+
<Blueprint height="300px" blueprint={bpIncludeCachedFriends} />
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Begin Object Class=/Script/BlueprintGraph.K2Node_GetSubsystemFromPC Name="K2Node_GetSubsystemFromPC_0" ExportPath="/Script/BlueprintGraph.K2Node_GetSubsystemFromPC'/Game/Redpoint/MainMenu/Screens/Lobby/W_FriendListEntry.W_FriendListEntry:EventGraph.K2Node_GetSubsystemFromPC_0'"
2+
CustomClass="/Script/CoreUObject.Class'/Script/RedpointEOSFramework.RedpointFrameworkLocalPlayerSubsystem'"
3+
NodePosX=688
4+
NodePosY=199
5+
NodeGuid=4F0CEB5C4291E65B875B29B7D6FD9C92
6+
CustomProperties Pin (PinId=012E5A4C437605BB030F35BDB323B19C,PinName="PlayerController",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.PlayerController'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_2 FB80B3DC478F57E9536D6F9FF963B91E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
7+
CustomProperties Pin (PinId=DE05765742D071EC842F6EB9BB86CFC8,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/RedpointEOSFramework.RedpointFrameworkLocalPlayerSubsystem'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableSet_4 9ED4AB9145CD02B357240CBBA6566432,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
8+
End Object
9+
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2" ExportPath="/Script/BlueprintGraph.K2Node_CallFunction'/Game/Redpoint/MainMenu/Screens/Lobby/W_FriendListEntry.W_FriendListEntry:EventGraph.K2Node_CallFunction_2'"
10+
bDefaultsToPureFunc=True
11+
FunctionReference=(MemberName="GetOwningPlayer",bSelfContext=True)
12+
NodePosX=400
13+
NodePosY=241
14+
NodeGuid=FB5CA166403B83CC13BF07AEF5A43EC5
15+
CustomProperties Pin (PinId=1144AE514512CD69A2B8738C601E8ECF,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nWidget Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/UMG.Widget'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
16+
CustomProperties Pin (PinId=FB80B3DC478F57E9536D6F9FF963B91E,PinName="ReturnValue",PinToolTip="Return Value\nPlayer Controller Object Reference\n\nThe player controller that owns the UI.",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.PlayerController'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_GetSubsystemFromPC_0 012E5A4C437605BB030F35BDB323B19C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
17+
End Object
18+
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableSet Name="K2Node_VariableSet_4" ExportPath="/Script/BlueprintGraph.K2Node_VariableSet'/Game/Redpoint/MainMenu/Screens/Lobby/W_FriendListEntry.W_FriendListEntry:EventGraph.K2Node_VariableSet_4'"
19+
VariableReference=(MemberParent="/Script/CoreUObject.Class'/Script/RedpointEOSFramework.RedpointFrameworkLocalPlayerSubsystem'",MemberName="bDisplayCachedPlatformFriends")
20+
SelfContextInfo=NotSelfContext
21+
NodePosX=976
22+
NodePosY=192
23+
NodeGuid=2EA68320429E3DD05BDBE499E8943257
24+
CustomProperties Pin (PinId=B452409E4EDCE14EC8158C91D31323EA,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
25+
CustomProperties Pin (PinId=943E89BC4D83A44CF53F2E993F33EA09,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
26+
CustomProperties Pin (PinId=C442FDDD4B10428ECE9E31A51530FBEB,PinName="bDisplayCachedPlatformFriends",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "RedpointFrameworkLocalPlayerSubsystem:bDisplayCachedPlatformFriends", "Display Cached Platform Friends"),PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
27+
CustomProperties Pin (PinId=9ED4AB9145CD02B357240CBBA6566432,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/RedpointEOSFramework.RedpointFrameworkLocalPlayerSubsystem'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_GetSubsystemFromPC_0 DE05765742D071EC842F6EB9BB86CFC8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
28+
CustomProperties Pin (PinId=B45B8E5248B51AC12E64B3A63C3E3121,PinName="Output_Get",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "RedpointFrameworkLocalPlayerSubsystem:bDisplayCachedPlatformFriends", "Display Cached Platform Friends"),PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
29+
End Object
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Begin Object Class=/Script/BlueprintGraph.K2Node_GetSubsystemFromPC Name="K2Node_GetSubsystemFromPC_0" ExportPath="/Script/BlueprintGraph.K2Node_GetSubsystemFromPC'/Game/Redpoint/MainMenu/Screens/Lobby/W_FriendListEntry.W_FriendListEntry:EventGraph.K2Node_GetSubsystemFromPC_0'"
2+
CustomClass="/Script/CoreUObject.Class'/Script/RedpointEOSFramework.RedpointFrameworkLocalPlayerSubsystem'"
3+
NodePosX=688
4+
NodePosY=199
5+
NodeGuid=4F0CEB5C4291E65B875B29B7D6FD9C92
6+
CustomProperties Pin (PinId=012E5A4C437605BB030F35BDB323B19C,PinName="PlayerController",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.PlayerController'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_2 FB80B3DC478F57E9536D6F9FF963B91E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
7+
CustomProperties Pin (PinId=DE05765742D071EC842F6EB9BB86CFC8,PinName="ReturnValue",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/RedpointEOSFramework.RedpointFrameworkLocalPlayerSubsystem'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_VariableSet_3 EEB469474D7B6138306BA9B6B401DE53,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
8+
End Object
9+
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableSet Name="K2Node_VariableSet_3" ExportPath="/Script/BlueprintGraph.K2Node_VariableSet'/Game/Redpoint/MainMenu/Screens/Lobby/W_FriendListEntry.W_FriendListEntry:EventGraph.K2Node_VariableSet_3'"
10+
VariableReference=(MemberParent="/Script/CoreUObject.Class'/Script/RedpointEOSFramework.RedpointFrameworkLocalPlayerSubsystem'",MemberName="bIncludeLocalPlayerInPartySection")
11+
SelfContextInfo=NotSelfContext
12+
NodePosX=976
13+
NodePosY=192
14+
NodeGuid=A1895632474972C625A1398737099885
15+
CustomProperties Pin (PinId=12ABEFEB44F70E130FC5DD99109F4423,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
16+
CustomProperties Pin (PinId=73B64BB14CAB84E669E30DABE57DC13F,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
17+
CustomProperties Pin (PinId=7F6E1EBC4ACBE832E33D059BF538118C,PinName="bIncludeLocalPlayerInPartySection",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "RedpointFrameworkLocalPlayerSubsystem:bIncludeLocalPlayerInPartySection", "Include Local Player in Party Section"),PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
18+
CustomProperties Pin (PinId=EEB469474D7B6138306BA9B6B401DE53,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/RedpointEOSFramework.RedpointFrameworkLocalPlayerSubsystem'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_GetSubsystemFromPC_0 DE05765742D071EC842F6EB9BB86CFC8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
19+
CustomProperties Pin (PinId=CA57348C49CC2593E80697B8E3273C88,PinName="Output_Get",PinFriendlyName=NSLOCTEXT("UObjectDisplayNames", "RedpointFrameworkLocalPlayerSubsystem:bIncludeLocalPlayerInPartySection", "Include Local Player in Party Section"),PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
20+
End Object
21+
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_2" ExportPath="/Script/BlueprintGraph.K2Node_CallFunction'/Game/Redpoint/MainMenu/Screens/Lobby/W_FriendListEntry.W_FriendListEntry:EventGraph.K2Node_CallFunction_2'"
22+
bDefaultsToPureFunc=True
23+
FunctionReference=(MemberName="GetOwningPlayer",bSelfContext=True)
24+
NodePosX=400
25+
NodePosY=241
26+
NodeGuid=FB5CA166403B83CC13BF07AEF5A43EC5
27+
CustomProperties Pin (PinId=1144AE514512CD69A2B8738C601E8ECF,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nWidget Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/UMG.Widget'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
28+
CustomProperties Pin (PinId=FB80B3DC478F57E9536D6F9FF963B91E,PinName="ReturnValue",PinToolTip="Return Value\nPlayer Controller Object Reference\n\nThe player controller that owns the UI.",Direction="EGPD_Output",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.PlayerController'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_GetSubsystemFromPC_0 012E5A4C437605BB030F35BDB323B19C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
29+
End Object

0 commit comments

Comments
 (0)