락스텝 알고리즘

게임 서버 프로그래밍/네트워크 개념정리

2020. 2. 18. 11:11

등장배경

같은 상태에 같은 입력을 주면 같은 결과가 나온다는 Deterministic 원리를 응용

 

정의

누군가 신호를 주면 그 신호에 맞추어 모두가 똑같은 행동을 하는 것

실행이 완전히 동일한 (결정론적) 로직을 바탕으로 입력만을 동기화 하는 것

 

특징

컴퓨터 하나하나가 P2P 방식으로 다른 모든 컴퓨에 연결하는 방식

많은 캐릭터와 복잡한 로직을 간단하게 동기화할 수 있음

개별 유닛 하나하나 동기화 하는 대신 플레이어가 입력한 명을 동기

 

장점

입력 명령만을 주고 받는다. 따라서 대역폭 관리가 수월하다.

통신량이 매우 적기에 리플레이 저장 기능을 추가하기 쉽다.

 

고려할점

게임 인스턴스마다 시뮬레이션을 독자적으로 수행하게 되므로 각 인스턴스를 다른 인스턴스와 정확히 동기화

할 수 있는지가 중요하다.

참가자수가 적은 RTS 게임서 사용해야 한다. 참가자 전체가 P2P로 연결되어 참가자 수가 많아지면 레이턴시가

급증한다.  

 

단점

플레이어와 관련된 연산에서 부동 소수점을 쓸 수없다. (하드웨어 종류마다 연산결과가 다를수 있다.)

가시영역 필터링 사용이 어렵다.

씬 업데이트가 일시정지 할 확률이 높다.

입력 명령의 속도에 민감한 게임에 적용하기 어렵다.

 

컴퓨터간 통신 레이턴시 영향 제거

언제 실행해야 하는에 대한 미래 시간을 입력정보와 함께 보낸다.

미래시간 = 현재시간 + 왕복 레이턴시 / 2 + 임의의 일정 값