[TIL] 20241223 TIL :

Jaeyoung Ko·2024년 12월 23일
0

이번 시간은 6인 팀으로 구성되어 타워 디펜스 프로젝트를 시작하게 되었다.

오늘의 작업 내역은 다음과 같다.

  • 프로젝트 발제
  • SA 작성
  • 개발해야 하는 부분(API, 이벤트 기능 등)에 대한 명세
  • 파트 분배

사전 작업 이후 튜터님께 피드백을 받았을 때에 배운 몇가지 흥미로운 사항들에 대한 기록이다.


위치 동기화


서버와 연동한 게임을 개발하는 부분에 있어서 가장 중요한 부분 중에 하나가 바로 위치/이동 동기화 작업이라고 할 수 있다. 아무리 중요한 판정과 관리는 서버 사이드에 맡기고, 클라이언트는 뷰로써의 역할로 랜더링을 담당한다고 하더라도, 이동에 있어서 동기화 작업을 지나치게 자주하게 되면 쏟아지는 패킷으로 인한 traffic overload나 flooding의 문제가 생길 것이다. 하지만 이러한 성능적인 면을 고려하여 동기화 주기를 너무 드물게 준다면 뚝뚝 끊기며 UX적으로 굉장히 불편한 뷰를 연출하게 될 것이다.

따라서 이러한 부분들을 고려한 위치 동기화에 사용되는 기법은 다음과 같다.




Simulation


서버와 클라이언트가 Destination 목적지 정보만을 가지고 동일한 오브젝트의 이동 알고리즘(ex. A* algorithm)을 동시에 처리하여, 목적지 도착 시에 서버와 클라이언트 간의 오차범위 안에서의 시간차를 검증하는 방식이다.

목적지가 정해져 있다면 결국 ETA 예상도착시간은 자명하게 구할 수 있기 때문에 일부 오차범위 안에서 검증하는 것으로 이를 해결할 수 있는 것이다.


보통은 30 frame 단위로 이에 대한 threshold를 준다고 한다. 즉 fps로 본다면 33ms 대이지만, 턴제 카드 게임처럼 대단히 실시간성 동기화가 crucial하지 않은 환경이라면 100ms도 일반적으로 사용된다고 한다.





profile
안녕하세요, 고재영입니다. 언제나 즐겁게 살려고 노력합니다.

0개의 댓글