어제 호기롭게 ID 등록 로직을 올렸으나, 잘못된 부분이 있어 수정하고자한다.
일단, ID는 서버에 저장된다. 그 중에서도 난 간단하게 PlayerState에 저장하기로 했다.
그러나 간과한 부분이 있었다. PlayerState에 정보를 저장할땐 보안상 게임모드를 통해서 저장하도록 하는데, 게임모드 입장에선 그냥 PlayerState에 저장해달라고 하면 누구의 PlayerState에 저장해야할지 혼란스러워한다는 부분이다. 근데 나는 그냥 GetPlayerState로 PlayerState를 호출해서 여기에 저장하라고 했는데, 서버는 호스트가 소유하고있기때문에 게임모드입장에서 그렇게하면 그냥 호스트의 PlayerState에 저장하라는 이야기나 다름없다.

그래서 발생한 문제는 누군가 ID를 설정할 때마다 호스트의 ID가 덮어씌워진다는 문제이다. 또한 ID를 불러올 때도 그저 GetPlayerState로 불러오니 모조리 호스트의 ID를 불러올 뿐이었다.
이 문제를 해결하기 위해서, 모든 요청을 할땐 신분을 밝히도록 했다. PlayerController 정보를 동봉하도록 한것이다.
1. 정보 동봉은 Controller에서부터 시작된다.

- 게임모드로 보내는 정보에 컨트롤러 자신의 정보를 담도록 했다.
2. 게임모드에선 받은 컨트롤러 정보에서 PlayerState를 호출하여 요청을 하도록 했다.

- 이러면 요청한 컨트롤러의 PlayerState에 정보가 저장된다.
3. ID를 UI에 추가하는 과정은 PlayerState안에서 다시 자동 요청된다.

- 따라서 알아서 처음 요청한 컨트롤러의 스테이트의 정보를 가져오게 된다.
4. UI 결과



- UI에도 잘 등록된다.
'게임 개발 공부 > 언리얼엔진' 카테고리의 다른 글
| UE5 - 사운드 재생 (0) | 2025.03.21 |
|---|---|
| UE5 | C++ 개발 - 블루프린트 펑션 라이브러리 (0) | 2025.03.20 |
| UE5 - 채팅시스템(멀티 - 리슨서버) : 채팅ID 등록 (0) | 2025.03.17 |
| UE5 - 채팅시스템(싱글) (0) | 2025.03.13 |
| UE5 | C++ - 난수 생성 (0) | 2025.03.12 |