주의 사항:Photon TrueSync와 Thunder는 서비스 종료되었으며 앞으로도 업데이트 및 릴리즈는 없을 예정입니다. 기존 어플리케이션에 영향은 없습니다만 현재 개발중인 어플리케이션에 대해서는 마이그레이션을 장려합니다.

기능 개요

PUN 상단의 Unity3D용 Lockstep 엔진

Lockstep 엔진에서 게임 클라이언트들은 input 값만 교환하게 됩니다. 개별 틱(lockstep 프레임)은 로컬에서 시뮬레이션되며 클라이언트들의 모든 input 값은 특정 머신에 도착해야만 합니다.

TrueSync는 사용하기 간단한 input 큐, 커스텀 시뮬레이션 루프(콜백과 같이)와 결정론적 물리엔진을 제공함으로서 lockstep 게임 개발을 단순화시켜주므로, 개발자들은 게임플레이 코드에 집중 할 수 있습니다.

크로스-플랫폼 결정론적 물리 엔진

TrueSync에는 두 개의 커스텀 물리엔진이 포함되어 있는데 하나는 2D게임용이고 하나는 3D 용입니다. 두 물리엔진 모두 결정론적 엔진이며 개발자가 난수사용방법, float 변수 지양(float 를 FixedPoint 형으로 대체)과 올바르게 큐에 값을 input 하는 다음의 기본 규칙을 지켜주기만 한다면 서로 다른 머신, 플랫폼 사이에서 시뮬레이션 상태 동기화 유지가 보장됩니다.

이 커스텀 물리 엔진의 컴포넌트 아키텍처와 API 는 Unity의 내장 물리 엔진 기반위에서 개발되었으므로 개발자들은 대응되는 컴포넌트로 교체하고 기존코드를 약간 변경하여 간단하게 게임을 TrueSync 로 쉽게 포팅할 수 있습니다.

자동 리플레이

Lockstep 시스템의 가장 큰 장점중의 하나는 게임 섹션 리플레이를 하기 위해서 필요한 것은 모든 게임 클라이언트들의 순차적인 input 값만 필요하다는 것 입니다. TrueSync는 개발자들을 위해 이 작업을 모든 게임플레이 섹션에 대한 순차적인 input 을 기록하여 추후 사용을 위해 시리얼라이즈하고 저장합니다.

리플레이를 하기 위해서는 이전에 기록되었던 일련의 input 을 통해 게임플레이 신을 실행하기만 하면 TrueSync 가 모든 것을 진행하게 됩니다.

롤백과 상태 추적

Lockstep 시스템은 RTS와 타워 디펜스 게임 유형에 매우 좋으나, 전투와 스포츠 게임 분야등의 액션 게임에는 플레이어에서 발생되는 네트워크 레이턴시를 숨기기 위한 약간의 추가작업이 필요합니다. 이 추가작업을 롤백이라고 합니다.

TrueSync의 롤백 시스템은 언제든지 발생할 수 있는 인터넷 레이턴시에 대해 다른 게임 클라이언트의 input 을 로컬에서 '추측'하여 input 이 수신되기전에 시뮬레이션을 수행하여 플레이어들을 보호해줍니다.

만약 input 값 추측이 잘못되었다면, TrueSync 는 이전의 틱에서 게임상태를 복구하고 올바른 현재 input 값으로 다시 시뮬레이션합니다. 이것은 개발자의 개입없이 자동적으로 수행되며 시뮬레이션 전에 추측-롤백 엔진에 원하는 틱 수를 설정만 해주시면 됩니다.

물리 콜백에 의해 게임 오브젝트들이 생성 또는 파괴되었더라도 개발자가 이러한 동작에 대해 세이프 메소드를 사용하는 한 롤백은 올바르게 이전상태로 복구해 줍니다.

개발자는 체력 값, 위치등의 커스텀 값을 생성하고 TrueSync는 이러한 변수들을 게임 상태에 관찰하여 롤백이 발생 될 때 복구를 위한 상태 추적 메카니즘을 제공합니다.

PUN과 완벽한 호환

TrueSync 는 PUN(Photon Unity Networking) 과 완벽하게 호환되며 최신 버전에는 모든 TrueSync 버전이 포함되어 있습니다.

PUN은 TrueSync의 기본 네트워크 시스템으로 사용되므로 결정론적 게임 플레이 섹션이 PUN 룸에 연결된 게임 클라이언트들 사이에서 발생합니다.

Phton 네트워크 연결, 룸 생성 및 참여, 커스텀 Photon 서버 관리 모든 것은 일반적인 PUN 게임과 동일하게 동작합니다. RPC 기능을 일반적인 PUN 기능으로 유지하는 것이 가능하며 또는 TrueSync와 PUN의 동기화 기능을 동시에 사용하는 하이브리드 시스템으로도 사용할 수 도 있습니다.

Photon 등록 방법에 대해서는 PUN의 시작문서를 참고하시고 TrueSync가 번들로 들어있는 샘플 게임을 이용하여 완전 동기화 결정론적 게임 플레이 섹션을 시작하는 방법을 학습하시기 바랍니다.

Back to top