티스토리 뷰

반응형

지금 쓰는 글은 지독히 개인적인 주관이 많이 들어갔기에 쓰는것이다.

기본적으로 각 클라이언트들이 들어오면 각자의 HUD와 Widget이 할당되어 실행이 되며 각자에게 맞는 주소를 찾아 그 주소로 찾아 들어가야 할것이다. 하지만 이에 해당하는 많이 애매한 오류들이 생긴다.

 

먼저 개념을 잡자면 첫번쨰로 말할것이 먼저 Role의 개념이다.

위에 그림과 같이 각 클라의 액터들에게는 각자의 Role이라는 역할이 있다. 

먼저 서버클라의 모습을 보면 Authority라고 써있을것이다. 서버의 입장에서는 자신인 Host에서 다 받고 호출을 해주기에 Authority즉 자신의 소유라고 보는것이다. (당연히 서버(Host)가 끊기면 모든 클라이언트들도 당연히 킥을 당한다. <호스트ip로 통해서 들어가기 때문에 그렇다.>)

반면, 클라1과 클라2의 입장으로 보면 각 클라 소유의 폰들을 보면 AutonomousProxy, SimulatedProxy라고 보일것이다. 이건 RemoteRole이라고 한다. 각 클라에서의 자신의 역할이며 이렇게 구분짓는 이유를 먼저 이해를 할 필요가 있다.

먼저 각 클라들에게 맞는 이동이 있어 해당에 맞는 데이터를 주고받는 방식이나 호출의 방식은 전에 쓴 글에 알수 있다.

그리고 이렇게 생성된 객체들은 위에 이미지의 액터들 말고도 서버소유의 GameModeBase와 HUD가 있다 하지만 ActorComponent와 Multicast로 호출된 함수의 Server소유의 객체를 호출할때의 애매모호성이 존재한다. 이건 다음에 쓰도록 할려고 한다. 그러면 "아니 그러면 각각에게 할당해서 만들면 되지않음?" 이런식으로 생각 할수 있지만 그렇게 되면 게임 스코어 다른 게임의 방식이 공유가 되어야 할 양도 많이 질 뿐더러, 공유가 어려워진다. (아직 학생의 입장이기에 정확하지 않을수도 있다.)

 

그 다음으로는 데이터를 주고받는 방식에서는 다양한거 같다. 보통의 멀티플레이어게임을 보면 갑자기 인터넷의 접속이 안좋아 순간이동을 한다던지, 아니면 자유롭게 못 움직이고 끊기기전의 속도를 유지한채 걸어가는걸 볼수 있을거다. 

기본적인 싱글플레이어게임의 방식으로는 캐릭터가 이동을 할때 그 위치의 값을 받는게 아니라 해당 벡터의 힘을 받아 움직이는게 보통이지만 멀티플레이어입장에서는 자신소유 액터는 힘을 주고받는 방식으로 움직이지만 다른 클라이언트 소유의 액터는 값을 위치를 받는거다.

좌표계의 위치를 계속 받는거다.(물론 속도도 받는다.) 하지만 여기서의 문제점도 위치를 Tick(시간)으로 계속 받더라도 각 위치 사이의 위치를 모르기에 계속 움직이고 다른데로 벗어나게된다.

그래서 보완한게 선형보간으로 두 지점의 좌표사이의 값을 얻어가며,

 

선형 보간법 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 선형 보간법(線型補間法, linear interpolation)은 끝점의 값이 주어졌을 때 그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적으로 계산하는 방법이

ko.wikipedia.org

이동간의 부드러운 이동의 모습을 나타내기 위해 스플라인 보간법을 이용한다.

 

스플라인 보간법 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

이런식으로 기본적인 전달방식에 대해 공부했다. 다음에는 ActorComponent의 애매모호성을 써낼것이다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함