UI는 클라이언트에만 있으니까 PlayerController에서 채팅UI를 추가하려고 아래와 같은 코드를 추가했음
근데 실행해보니 잘 나오긴 했는데
PIE를 종료할 때 아래와 같은 메시지 로그가 나옴
메시지를 읽어보면 "오직 Local PlayerController만 위젯을 할당할 수 있다"라고 되어 있어 아래 코드를 SetupHUD()에 추가
코드를 추가하니 에러 메시지 로그창이 안 뜨게 되었음
여기서 하나 의문이 든 게, "서버에서는 SetupHUD()
를 바로 넘어가도록 했는데, 왜 게임 창에는 UI가 붙어 있는 거지?" 였다
위 gif 파일을 보면 서버 창에 UI가 먼저 붙고, 그 다음에 클라이언트 창에 UI가 붙는 걸 볼 수 있는데, 좀 더 비교해보기 쉽게 NetMode
를 로그에 출력하도록 하는 코드를 추가하고
로그를 출력해보니
로그를 보면 서버(NetMode:2)에서 Skip Server
1번 SetupHUD() Client
1번, 총 2번 호출 되었고, 클라이언트(NetMode:3)에서는 SetupHUD() Client
1번, 총 1번 호출되었음
SetupHUD()
가 총 2번 호출됨Skip Server
되고, 클라이언트 역할일 때 SetupHUD() Client
⭐ 이게 아님 실제로는
이렇게 되면 1. 왜 서버 창에 UI가 뜨고, 2. 왜 서버에서 controller가 Skip되는 지를 이해할 수 있다
C++로 RPC를 사용하려면
.h 파일
UFUNCTION(Client)
void Client_RPC()
UFUCTION(Server)
void Server_RPC()
UFUCTION(NetMulticast)
void Multicast_RPC()
.cpp 파일
void Client_RPC_Implementation(){}
void Server_RPC_Implementation(){}
// Server RPC UFUNCTION() 매크로에 WithValidation 지정자를 사용하면
// _Validate() 함수도 구현해야함
void Server_RPC_Validate(){}
void Multicast_RPC_Implementation(){}
위와 같이 선언과 구현을 해야함
만약 .cpp 파일에서 _Implementation을 빼고 Server_RPC()나 Client_RPC() 형태로 구현을 하면
위와 같은 링크 에러들이 발생함
UUserWidget과 UWidget은 다름
UWidget은 위젯 블루프린트를 만들 때 팔레트에서 보이는 Canval Panel이나 Text, Button 같은 단일 위젯을 말하고, UUserWidget은 이 Uwidget을 사용해서 만든 UI 위젯을 말한다
예상
유튜브 참고
유튜브 영상에 Is Locally Controlled 설명할 때
1인
server hello 클라(서버)
2인
server hello 클라(1)
client1 hello 클라(1)
client1 hello 클라(서버)
3인
server hello 클라(2)
client1 hello 클라(2)
client2 hello 클라(2)
client2 hello 클라(서버)
client2 hello 클라(1)
이런 식인거 같음
참조 사이트
-- Login
1. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/client-server-model?application_version=4.27
2.https://chacha-nyang.tistory.com/entry/UE-%EA%B2%8C%EC%9E%84-%EB%AA%A8%EB%93%9C%EC%99%80-%ED%94%8C%EB%A0%88%EC%9D%B4%EC%96%B4-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%ED%94%8C%EB%A1%9C%EC%9A%B0%EC%9D%98-%EC%9D%B4%ED%95%B4
-- RPC
1. https://velog.io/@mino0215/%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80-RPC-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%9E%91%EC%84%B1%ED%95%98%EB%8B%A4%EA%B0%80-%EC%9E%91%EC%84%B1%EC%A4%91
2. https://redchiken.tistory.com/389
-- Role
1. https://redchiken.tistory.com/387
2. https://sanghoon23.tistory.com/113
3. https://iiii4.tistory.com/146 // dedicated server
4. https://blog.naver.com/songg90/221465215055 // listen server
-- UI
1. https://forums.unrealengine.com/t/widget-vs-userwidget/450656
2. https://koreanfoodie.me/1215
3. https://cru6548.tistory.com/44