Open Jun1102 opened 7 months ago
사용자 이동 로그 :
사용자 상호작용 로그 (request):
사용자 상호작용 로그 (response) [request 승인 시 브로드캐스트] :
사용자 상호작용 로그 (response) [request 실패 시 설치 요청한 유저에게만] :
에셋 설치 (request) :
에셋 설치 (response) [request 승인 시 브로드캐스트]
에셋 설치 (response) [request 실패 시 설치 요청한 유저에게만] :
에셋 삭제 (request) :
에셋 삭제 (response) [request 승인 시 브로드캐스트] :
에셋 삭제 (response) [request 실패 시 삭제 요청한 유저에게만] :
[에셋 Lock 관련 합의 후에 확정 예정]
에셋 변경 (request) :
에셋 변경 (response)[request 승인 시 브로드캐스트] :
에셋 변경 (response) [request 실패 시 삭제 요청한 유저에게만] :
에셋 설치, 삭제, 변경의 경우 클라이언트에서 1차로 검증한 후에 문제가 없으면 서버로 요청 예정 (클라이언트도 일단 크리에이터 목록을 가지고있음)
사용자 아이디를 메시지에 넣어서 보내지 않는 방법도 생각 중 (사용자가 접속할 때 발급하는 세션 키를 기억하고 있다가 요청이 소켓으로 들어오면 대조해서 사용자 아이디 찾기?)
접속/퇴장 관리 방법
서버와 클라이언트에 플레이어 목록 리스트가 있음 두 플레이어 목록 리스트는 늘 동기화 되어야 함
서버에 날라오는 모든 로그의 유효성 검사할 때 플레이어 리스트에서 확인 (ex. 에셋 생성 로그를 받았는데 보낸 플레이어가 플레이어 리스트에 없으면 거부)
플레이어 상태도 로그에 남길 필요 O
상태에 따라 재생해야 하는 애니메이션이 달라질 수 있기 때문 enum 사용?
@Jun1102 <- 리스너 틀 작성함
여기서 확장 필요
한 스키마 당 파싱 함수 따로 제작
브로드캐스트 되는 신호의 양식 커맨드$메시지
메시지는 스키마 파싱 함수 거쳐서 분리함
Schema 클래스를 상속받아 사용할 스키마 클래스를 생성
스키마 클래스 생성 규칙
PackageAddListner 메서드 안에서 AddListener 메서드를 호출해 리스너 추가 AddListener("명령어", (message) => { "사용할 스키마 클래스명" 변수명 = new "스키마 생성자"(message);
이후 스키마 객체에서 필요한 데이터를 참조하여 작업 구현 }
실행해볼 경우 Asset/Resources/EventListener/test.txt 파일을 수정하여 사용할 것 브로드캐스트 되는 신호 양식('$' 을 기준으로 split) - 커맨드$메시지 메시지의 양식(';' 을 기준으로 split) - data;data; ... ;data
PlayerJoin 구현 성공 (feature/MultiPlayJoin)
로그 형태 : PlayerJoin$PlayerID$PlayerNickname
움직일 때 카메라의 각도에 맞게 플레이어 위 닉네임도 회전하도록 함
클라이언트 매니저에 플레이어 딕셔너리 (Key : PlayerID, Value : PlayerNickname) 와 플레이어 생성하는 함수 구현 (PlayerJoin(string playerId, string playerNickname))
PlayerLeave, PlayerMove 구현 성공 (feature/MultiPlayJoin)
Player Leave 로그 형태 : PlayerLeave$PlayerID Player Move 로그 형태 : PlayerMove$PlayerID;positionX/positionY/positionZ;rotationX/rotationY/rotationZ
testListener 0.5초 간격으로 바꿔뒀음