캐릭터 위치 동기화하기

멀티플레이에 참여한 모든 게임 호스트들은 게임 내 모든 캐릭터 위치가 서로 같게 보여야 합니다. 이를 위해 캐릭터 위치 동기화하기가 필요합니다.

synch_basics.png
Client 1에서 움직이고 있는 캐릭터의 위치가 Client 2,3,4에서도 동기화되고 있습니다.

일반적으로 인터넷에서는 한 호스트에서 다른 호스트로 메시지를 보내는 데 걸리는 시간(레이턴시)가 발생합니다. 레이턴시와 통신량의 제한 때문에 캐릭터의 위치를 보내는 횟수와 신속성은 한계가 존재합니다. 그렇기 때문에 움직이는 캐릭터의 위치를 동기화하는 대표적인 방법은 dead_reckoning입니다.

한 게임 월드에서 소수의 사용자가 게임을 즐기는 캐주얼 게임에서는 각 유저들이 조종하는 캐릭터의 정보를 다른 호스트로 보낼 때는 게임 월드의 모든 유저를 1개의 P2P 그룹으로 묶어서 그들끼리 P2P간 다대다 통신을 하면 됩니다. 자세한 것은 small_game_world_synch를 참고하십시오.

하지만 게임 월드에 다수의 사용자가 게임을 즐기는 경우에는 모든 유저의 정보를 위 방식처럼 다대다로 통신하면 기하급수적으로 통신량이 증가합니다. 따라서 위 방식이 아니라, 각 유저의 시야에 들어오는 캐릭터들만 동기화 범위로 제한을 해야 합니다. 자세한 것은 large_game_world_synch를 참고하십시오.

예제 프로그램 3D 월드에서 캐릭터 동기화 도 있습니다.