173 if (UWorld* World = GetWorld())
176 LoadingManager->LoadingCircle(
true);
180 FOnlineSessionSettings sessionSettings;
182 FName subsysName = Online::GetSubsystem(GetWorld())->GetSubsystemName();
184 sessionSettings.bIsLANMatch = subsysName.IsEqual(FName(TEXT(
"NULL")));
185 UE_LOG(LogTemp, Warning, TEXT(
"서브시스템 : %s"), *subsysName.ToString());
189 sessionSettings.bUseLobbiesIfAvailable =
true;
191 sessionSettings.bUsesPresence =
true;
194 sessionSettings.bShouldAdvertise =
true;
196 sessionSettings.NumPublicConnections = 2;
200 sessionSettings.Set(FName(
"DP_NAME"), displayName, EOnlineDataAdvertisementType::ViaOnlineServiceAndPing);
204 FUniqueNetIdPtr netId =
205 GetWorld()->GetFirstLocalPlayerFromController()->GetUniqueNetIdForPlatformUser().GetUniqueNetId();
206 sessionInterface->CreateSession(*netId, FName(displayName), sessionSettings);
215 UE_LOG(LogTemp, Warning, TEXT(
"[%s] 세션 생성 성공"), *sessionName.ToString());
217 GetWorld()->ServerTravel(TEXT(
"/Game/StarterBundle/CollectionMaps/Map1?listen"));
221 UE_LOG(LogTemp, Warning, TEXT(
"[%s] 세션 생성 실패"), *sessionName.ToString());
224 if (UWorld* World = GetWorld())
227 LoadingManager->LoadingCircle(
false);
234 UE_LOG(LogTemp, Warning, TEXT(
"세션 조회 시작"));
238 FName subsysName = Online::GetSubsystem(GetWorld())->GetSubsystemName();
240 sessionSearch->bIsLanQuery = subsysName.IsEqual(FName(TEXT(
"NULL")));
242 sessionSearch->QuerySettings.Set(SEARCH_LOBBIES,
true, EOnlineComparisonOp::Equals);
252 UE_LOG(LogTemp, Warning, TEXT(
"세션 조회 끝"));
257 for (int32 i = 0; i < results.Num(); i++)
261 results[i].Session.SessionSettings.Get(FName(TEXT(
"DP_NAME")), displayName);
264 UE_LOG(LogTemp, Warning, TEXT(
"세션 - %i, 이름 : %s"), i, *displayName);
271 UE_LOG(LogTemp, Warning, TEXT(
"세션 조회 실패"));
280 if (UWorld* World = GetWorld())
283 LoadingManager->LoadingCircle(
true);
289 results[sessionIdx].Session.SessionSettings.bUseLobbiesIfAvailable =
true;
290 results[sessionIdx].Session.SessionSettings.bUsesPresence =
true;
294 results[sessionIdx].Session.SessionSettings.Get(FName(TEXT(
"DP_NAME")), displayName);
303 if (result == EOnJoinSessionCompleteResult::Success)
308 UE_LOG(LogTemp, Warning, TEXT(
"URL : %s"), *url);
310 APlayerController* pc = GetWorld()->GetFirstPlayerController();
311 pc->ClientTravel(url, TRAVEL_Absolute);
315 UE_LOG(LogTemp, Warning, TEXT(
"[%s] 세션 참여 실패"), *sessionName.ToString());
318 if (UWorld* World = GetWorld())
321 LoadingManager->LoadingCircle(
false);