더북(TheBook)

락스텝 동기화 알고리즘은 많은 캐릭터가 적은 통신량으로도 정확히 동기화된다는 장점이 있지만, 한계도 있습니다.

1. 다른 플레이어가 플레이하고 있는 게임 중간에 확 들어오는 것을 만들기 까다롭습니다.

2. 물리 엔진 등 게임 플레이에 관여하는 연산에 부동소수점을 쓸 수 없습니다. 락스텝 동기화를 개발할 때 가장 까다로운 점이지요. 부동소수점 연산은 하드웨어 종류에 따라 연산 결과가 미세하게 차이가 날 수 있는데, 이 미세한 차이가 누적되면 마치 나비효과처럼 큰 차이로 이어집니다. 따라서 이 문제를 해결하려면 게임 플레이에 관여하는 연산은 모두 고정소수점으로 해야 합니다. 최악의 경우 물리 엔진을 고정소수점 기반으로 다시 만들어야 할 수도 있습니다.

3. 플레이어 수가 많아지기 어렵습니다. 통신량이 플레이어 수에 비례해서 증가하기 때문입니다. 앞서 소개한 가시 영역 필터링 사용도 어렵습니다. 모든 클라이언트가 모든 캐릭터 정보를 가지고 있어야 모두 정확한 게임 플레이 결과를 낼 수 있기 때문입니다.

4. 씬 업데이트가 일시 정지할 확률이 높습니다. 원활하게 게임을 플레이하려면 함께 플레이하는 플레이어 중에서 가장 레이턴시가 높은 사람을 기준으로 미래 시간이 결정되어야 합니다.

5. 입력 명령의 속도에 민감한 게임에 부적합합니다. 락스텝 동기화 알고리즘에서는 필연적으로 캐릭터에게 넣은 행동은 미래 시간이 되어야 움직이기 때문입니다. 그래서 방향키로 직접 이동하는 방식에 이 알고리즘을 적용하면 게임 플레이가 매우 답답하게 느껴집니다. 많은 전략 시뮬레이션 게임이 그렇듯이 이동 목표 지점을 찍어서 캐릭터를 움직이는 방식에 적합합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.