인프런 커뮤니티 질문&답변

흑연님의 프로필 이미지
흑연

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

유니티클라에서 패킷을 계속 보내지 않고 lockstep이나 추측항법으로 동기화를 할 수 있을까요?

작성

·

449

0

여러 캐릭터를 움직여서 싸우는 유사 RTS장르를 구상중인데요

클라에서 매순간 쏴주는 패킷이 부담되지 않을까 고민중입니다.

패킷을 자주보내지 않고 동기화 하려면 double형이 보통 쓰인다고 얄팍하게 알고있는데요

입력값을 보내서 동기화 하는 추측항법이나 특히나 각클라에서 어긋나면 안되는 lockstep같은경우 유니티 클라이언트에서 실현하려면

기본적으로 제공되는 float형의 Vector3, transform.position이나 다른 여타 제공되는 함수를 다 버리고

double형으로 전부 새로 다시파야할까요? 아니면 일반적으로 쓰이는 보정하는 방법이 있는지요?

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

RTS는 근본적으로 MMO와 동기화 방식이 다릅니다.
스타크래프트 같은 게임은 유닛이 너무 많아서
이를 일일히 MMO 방식의 [유닛 별 좌표 이동]으로 할 순 없겠죠.
보통 사용되는 방법은 실제 키보드/마우스 커맨드 입력을
서버를 통해 다른 클라에게도 전달해 동일하게 시뮬레이션을 하는 것이고
프레임 또한 모든 클라/서버가 동일하게 맞춰서 연산해야 합니다.
(RTS는 좌표 틀어짐 등을 용서할 수가 없기 때문)

패킷을 자주보내지 않고 동기화 하려면 double형이 보통 쓰인다고 얄팍하게 알고있는데요

질문이 이해가 안갑니다. double형이 쓰인다는게 어떤 의미일까요?

흑연님의 프로필 이미지
흑연
질문자

답변 감사합니다.

입력값을 받아서 각 클라와 서버가 동일하게 연산할때 double형을 써야 오차가 안생긴다고 들었습니다.

루키스님 강의를 듣고 습작으로 응용한거 만들었는데 언제한번 중간과정을 올리겠습니다.

소녀전선이나 거상같이 전투태세 돌입하면 여러 유닛이 나와서 싸웠으면 좋겠다고 생각했습니다.

갈 길이 멀군요..

흑연님의 프로필 이미지
흑연

작성한 질문수

질문하기