이동 동기화 질문입니다.

3권에서 새로 도입된 네트웍 및 멀티플레이어 프로그로그래밍 섹션을 위한 게시판입니다.

Moderator: 류광

Locked
비회원

이동 동기화 질문입니다.

Post by 비회원 »

이동 동기화 할때 서버에서는 어떤 처리를 해야하나요?
단순히 브로드캐스팅을 하나요?
그래서 클라이언트에서 패킷이 오면 그 위치를 저정하고 있는건가요?
서버에서도 클라이언트처럼 이동을 해야할거 같은데,
그러면 부하가 많이 걸릴거 같기도 하고,
동기화 맞추기도 어렵고,
브로드캐스팅만 하면 해킹에 취약할거 같기도 합니다.
고수분들의 조언 부탁드립니다.
비회원

Re: 이동 동기화 질문입니다.

Post by 비회원 »

비회원 wrote:이동 동기화 할때 서버에서는 어떤 처리를 해야하나요?
단순히 브로드캐스팅을 하나요?
그래서 클라이언트에서 패킷이 오면 그 위치를 저정하고 있는건가요?
서버에서도 클라이언트처럼 이동을 해야할거 같은데,
그러면 부하가 많이 걸릴거 같기도 하고,
동기화 맞추기도 어렵고,
브로드캐스팅만 하면 해킹에 취약할거 같기도 합니다.
고수분들의 조언 부탁드립니다.
이동 처리루틴은 주위에 있는 캐릭터를 대상으로 해야겠죠.
예를 들어서, 캐릭터의 시야가 10이라면, 상, 하, 좌, 우 10 범위 내에 있는 캐릭터들에게
이동패킷을 전송해주면 됩니다.

이때, KnownObject (알려진 객체)라는 것을 활용하는데요.
주로 해쉬맵이나, C++에서는 map과 같이 검색이 빠른 컨테이너를 사용합니다.
이는 ALL 브로드 캐스팅이 아니라, 주위에 있는 오브젝트에 대해서만 처리를 실시할 수 있게되는 개념이죠.

그리고 캐릭터가 이동한만큼 새로운 범위에 대한처리, 이전 범위에 대한 처리를 해줘야겠죠.
새로운 범위에 있는 캐릭에게는 자신의 모습을 리젠해주고, 또한
상대 캐릭터의 모습을 주인공 캐릭터에게 띄워줍니다. (상호 리젠 패킷을 띄워주는거죠.)
이전 범위, 즉 지나온 범위에 있는 캐릭은 서로 오브젝트를 지워서 더이상 안보이도록 하구요.
동시에 서로 KnownObject 리스트에서 각자 캐릭터를 지워줍니다.
새로운 범위에 있는 캐릭터와는 서로 추가하구요.

그러면 새로운 범위로 이동한 캐릭터가 공격 또는 어떤 모션을 취할때
주위에 있는 알려진 대상에게만 간단히 브로드 캐스팅을 하면 되겠죠.
Locked