본문 바로가기
프로그래밍/Portfolio Log

[Portfolio Log] WebRTC 기반 포폴 기록 7

by YuminK 2023. 10. 8.

1. 포탈 동기화 로직 추가

이전에 있었던 장면에서 플레이어를 없애라는 요청을 다른 플레이어에게 보내고 자신은 새로운 정보를 받는다. 

그리고 넘어가는 장면에 존재하던 플레이어에게 새로운 유저 정보를 넘겨주면 된다. 

 

기존에 broadcast로 처리하고 있던 부분을 room 개념을 추가하여 작업했다. 

 

2. 이름 변경 및 캐릭터 변경 로그(채팅) 삭제

설계적으로 특이점을 하나 발견했다. 
예를 들어 전체 채팅방에 A라는 유저가 캐릭터를 바꿨다는 로그가 계속 뜨는게 맞는건가?
다른 맵에 있는 사람도 그 정보를 받아서 뭔지도 모르는 A라는 유저가 캐릭터를 변경했다는 정보를 받아야 하는가?

다른 사람이 궁금한 정보인가? ㄴㄴ
다른 사람이 알아야 하는 핵심적인 정보인가? ㄴㄴ
다른 맵에 있는 사람이 누군가 캐릭터 설정을 바꾼 정보를 알아야 하는가 ㄴㄴ

게임에서도 유저가 쓰는 전체 채팅에 특정 유저가 몬스터 1마리 잡았다 라는 로그를 찍지는 않음.
=> 없애는 방향성으로 가고 상단에 토스트 메시지는 유지

이름 변경의 경우에도 비슷한 이유로 삭제했다. 

 

3. 장면이 로드되기 이전에 요청하는 이벤트에 대한 방어 코드 추가

주로 현재 장면의 정보를 받아오지 못하는 경우 inActiveScene 정보에서

받아다가 콜백을 등록하고 create 시점에서 처리하는 방식이다. 

 

장면 초기화 전에 오는 toast, chatting, updatePlayer, exitPlayer, newPlayer 이벤트에 대한 콜백 처리.

 

4. 장면 전환시 회색 배경 나오는 이슈 수정

정확한 이유는 모르겠으나 동시에 scene.start와 데이터 정보를 서버에 받아오는 처리를 했을 때

문제가 발생했다. 분명 callback 등록해서 처리를 하고 있는데도 뭔가 scene 객체 자체가 생성이 안 되어 있더라.

 

딜레이를 주는 방식으로 일단 처리를 해뒀다. 

 

5. 채팅 동기화(전체, 회의실 분리)

서버에서 채팅 배열을 관리하고 장면을 전환할 때, 채팅 정보를 넘겨주고 동기화한다. 

클라이언트에서는 배열을 받아서 처리하고(장면 전환) 채팅이 왔을 때 UI상의 처리, 내부 데이터의 갱신에 대한 처리를 진행한다. 이 과정에서 서버는 all이면 broadcast, 회의실이면 특정 Scene에 있는 클라에게만 처리한다. 

 

테스트 조건

 - 장면 전환시 채팅 동기화 잘 되는지 
 - 각 장면에서 채팅 값이 정상적으로 들어오는지  
 - 채팅 채널을 변경시 값이 맞는지  
 - UI에 잘 추가가 되는지 

 

내일 작업은 다음과 같다. 

1. 미디어 수프 클라이언트 연동 작업
 - 다이얼로그를 통한 장치 설정
 - 마이크 on/off 처리
 - 마이크 테스트 부분
 
2. 미디어 수프 멀티 연동 작업
 - 룸에 입장시 영상뷰 활성화
 - 마이크 on/off 처리 적용(타 유저에게 보여지는 부분)
 - 방 퇴장시 연결 끊기

 

내일 중으로 끝났으면 참 좋을 것 같다. 

댓글