뒤끝매치 관련 문의입니다.

안녕하세요!
뒤끝매치 관련 문의가 있어 글을 남깁니다.

저희 팀은 현재 뒤끝 서버를 이용해 1:1 실시간 대전 게임(탑 vs 바텀)을 만들고 있습니다.
현재 이동과 아이템 생성 함수를 제작하고 있으며, 아군은 항상 아래 진영에 위치합니다.
그에따라 이동 메세지를 받으면 세션 아이디를 비교하여 자신일 경우 받은 위치와 받은 방향을 기준으로 계산하고, 받은 메세지가 자신이 보낸 메세지가 아니라면(즉, 적 캐릭터의 이동 메세지라면) 받은 방향을 반대로 계산하여 반대로 움직이도록 계산되어 있습니다.

여기서 궁금한 것은 뒤끝 매치 예제 게임을 받아보니 모든 계산을 호스트 클라이언트에서 계산하도록 처리했는데,
그렇게 되면 통신량이 1회분 더 증가하는 것으로 예측됩니다.

기존: 각 클라이언트가 움직이면 현재 위치정보, 방향정보, 세션아이디를 브로드캐스팅.
받은 메세지의 세션아이디를 비교하여 자신이 보낸 것은 정방향, 자신이 아닌 것은 역방향으로 계산 처리.

호스트에서 계산: 각 클라이언트는 움직이면 방향정보와 세션 아이디만을 전송(위치정보 조작 불가)
받은 메세지의 보낸 사람이 호스트인지 구별하여 호스트가 아니라면 리턴.
호스트라면 호스트 클라이언트의 캐릭터 좌표를 기준으로 각 계산하여 계산된 좌표값을 다시 브로드 캐스팅.
호스트는 이미 계산이 되었기 때문에 이 메세지는 호스트가 아닌 클라이언트에게 전달되어 좌표값을 수정.

호스트에서 계산하는 만큼 위치정보 조작의 위험성은 줄어들겠지만, 송신량이 필연적으로 많아지는 것을 확인했습니다.
그럼에도 불구하고 예제 게임에서는 호스트에서만 계산하는 방식이 꼭 유리한 것인지 궁금합니다!
각 클라이언트에서 메세지를 보내고 처리하는 것이 보안에 크게 취약한지 등의 정보가 궁금합니다!

안녕하세요 개발자님

1
우선 뒤끝에서 권장하고 있는 슈퍼게이머에서 연산하는 방법을 사용 시 송신량이 많아 질 수 있습니다.
그것을 대비하여 뒤끝매치에서는 슈퍼게이머(호스트)의 경우 쓰로틀링 한계를 일반 클라이언트의 3배로 제공하고 있습니다.

그렇기 때문에 송신량 관련해서는 큰 문제가 없으실 것 같습니다.

쓰로틀링 개발자문서


2
두번째로 슈퍼게이머(호스트)에서만 연산하는 것은 뒤끝에서 권장하는 방법이지만
실제로 적용할 때는 개발자님이 원하시는 방법으로 개발하셔도 무방합니다.

보안의 경우 슈퍼게이머 에서만 연산하는 것이 상대적으로 더 안전할 수 있습니다.
(1:1 기준으로 누군가 내부 클라이언트 데이터를 변조해도 슈퍼게이머로 지정된 유저가 변조한 것이 아니라면 의미가 없음)


결론적으로 각 클라이언트에서 메시지를 각각 처리하는 것이 보안에 크게 취약하지는 않습니다.

다만 슈퍼게이머에서 처리하는 것이 상대적으로 더 안전한 방법이고,
각 클라이언트 간 데이터 동기화(위치, HP 등의 데이터), 결과 처리 등이 더 쉽기 때문에
아래 방식의 사용을 권장드리고 있습니다.

실제로 게임에 적용하시는 것은 개발자님이 편하신 방법으로 적용하신 후 발생할 수 있는 위험은
리앱 등의 보안솔루션 사용 및 안티 치트 툴킷 등을 사용하셔서 방지하시는 것이 더 좋을 것 같습니다.