해결된 질문
작성
·
168
0
안녕하세요 루키스님.
지금은 C#서버로 칸 없이 3D 이동 동기화 토이프로젝트 여러모로 시도해보고 있습니다.
제 토이 프로젝트의 목적은
추측항법을 사용해 칸 없이 3D 이동 동기화
로써 루키스님 강의들 Q&A 뒤적여서 이해한 추측 항법은 "목적지를 뿌려주고 거기로 어떻게 하던지간에 이동하게 해준다" 로 다음 아이디어를 적용해보게 되었습니다.
기본 아이디어는
플레이어 A가 [0,0,0]에 있다면,
바라보는 방향으로 벡터1 만큼을 더한 위치,
예를 들어 w를 누르면 [1,0,0]의 C_Move 요청 패킷을 날리고, 서버가 모든 유저들에게 브로드캐스팅 해주면,
각 클라이언트는 A의 위치를 [0,0,0] 에서 [1,0,0]으로 자연스러운 Transform 변경으로 '스르륵'을 구현했습니다.
// 참고용 위치 동기화 핵심 코드
void Update()
{
// destinationPos : S_Move패킷을 통해 갱신된 목표 위치
float distance = Vector3.Distance(transform.position, destinationPos);
// 목표지점에 거의 다왔으면 목표 위치로 순간이동
if(distance < 0.1f)
{
transform.position = destinationPos;
}
else
{
// 스르륵 이동
transform.position = Vector3.MoveTowards(transform.position, destinationPos, Speed * Time.deltaTime);
}
// TODO : 보정 등
}
현재 C++ 서버도 병행해서 공부하는 저의 시점에서, 몇가지가 궁금해서 질문 드리게 되었습니다.
Q1. 지금 강의, IOCP와 UE5에서 소개해주신 이동 동기화를 추측항법은 아닌 것으로 이해됩니다(과거 위치를 브로드캐스팅 해주고 있으므로). 제가 이해한게 맞을까요?
Q2. 제가 구현한 아이디어와 코드도 일종의 추측항법이라고 우겨도 될까요? 포트폴리오 키워드로 녹이고 싶은 욕심이 있습니다.
Q3. 제가 채택한 이동 동기화의 방법의 피드백도 가능하다면 받고 싶습니다. 위 코드에 보정은 어느 정도 넣을 예정이지만, 기본 아이디어에 대해 시니어님의 의견도 여쭈고 싶습니다.
차기 강의 항상 기대하고 있습니다 ㅎㅎ 몸은 다 나으셨는지 모르겠네요.
답변 미리 감사합니다!
답변 1
0
역시 질문을 해놓으니까 나중에라도 얼추 해답이 나오는군요..
A1. 이것은 추측항법 까진 들어가진 않습니다.
A2. 제가 적용한 방법은 굳이 꾸역꾸역 우기면 가~~~장 간단한 추측항법 이겠지만 아무래도 너무 빈약하여 어디가서 말하긴 부끄러운 수준입니다.
A3. 이 해답은 아직 조심스럽지만 포트폴리오 수준으로 충분한 것 같습니다. 어쨋든 위치 동기화가 잘 맞아 떨어지니까요!