성능 팁

성능은 어플리케이션에 멀티플레이어 요소를 통합할 때 유연하고 끊이지 않게 제공해야 하는데 있어서 매우 중요 한 부분입니다. 그래서 Photon 을 이용하여 개발 할 때 항상 염두에 두어야 할 것에 대한 목록을 작성 해 놓았습니다.

정기적으로 서비스 호출 하기

클라이언트 라이브러리는 서버와 계속 통신하기 위해서 LitePeer.Service 를 정기적으로 호출 하게 됩니다. 이 서비스 호출을 장시간 동안 하지 않으면 타임아웃 연결 해제가 발생되어 클라이언트가 접속을 유지 할 수 없게 됩니다.

데이터 로딩은 메인 루프에서 진행 되기 때문에 초당 업데이트가 적게 발생 하는 것이 일반적인 상황입니다. 로딩 할 때와 연결, 닫을때 문제가 발생하는 경우 이 서비스가 호출 되도록 해야 합니다. 이런 사항을 간과 하시면 이 문제에 대한 식별과 재현이 아주 어렵습니다.

업데이트 vs. 대역폭

초당 업데이트 회수를 증가시키면 게임이 더 유동적이고 최신의 것으로 유지됩니다. 반면 사용하고 있는 대역이 극적으로 증가 할 것 입니다. 오퍼레이션 호출로 인해 다른 플레이어들의 이벤트가 생성 될 수 있다는 것을 기억 하세요.

모바일 클라이언트 4개에 대하여 초당 6개 오퍼레이션이 좋습니다. 특정한 경우에 3G 단말은 좀 느린 네트워크를 사용 할 수 있습니다. 이런 경우 초당 업데이트를 줄이면 속도가 더 빨라질 수 있다는 것을 기억 하세요.

PC 기반의 클라이언트는 속도가 많이 빠릅니다. 이러한 클라이언트들에 대해서는 목표 프레임 속도를 제한 해 주어야 합니다.

데이터의 생성과 소비

수신 말단에서 처리할 수 있는 데이터 양은 대역폭과 관련이 있습니다. 성능과 프레임 속도가 수신되는 이벤트를 따라갈 수 없으면 이 이벤트들이 실행 되기전에 이미 지나간 것입니다.

최악의 경우에 수신 측에서 처리 할 수 없을 정도로 수 많은 데이터를 발생시키는 것입니다. 개발 하는 동안 클라이언트들의 큐 길이를 항상 주의 깊게 살펴보시기 바랍니다.

비신뢰 커맨드의 실행 제한

클라이언트가 잠시동안 수신되는 메시지를 처리할 수 없을 지라도 (예를 들어 로딩중) 여전히 모든 메시지를 받아 버퍼에 쌓아 놓고 있습니다. 다른 플레이어들의 활동에 따라서 클라이언트가 따라 잡아야 할 것이 많이 있을 것 입니다.

의존도 최소화를 위해 클라이언트는 자동적으로 비신뢰 메시지를 특정 길이로 자를 것 입니다. 가장 최신의 것을 빠르게 얻으며 놓친 변경 사항은 곧 최신의 메시지로 교체될것이라는 사상입니다 .

LoadbalancingPeer.LimitOfUnreliableCommands 의 값을 설정하여 제한 시켜 주는 데 이 기본 값은 20 (PUN 도 동일) 입니다.

데이터그램 크기

데이터그램의 컨텐츠 크기는 모든 단말에 대해서 동작할 수 있도록 1200 바이트로 제한되어 있습니다.

1200 바이트가 넘는 오퍼레이션과 이벤트들은 여러 개의 명령어로 나누어져서 전송 됩니다. 이렇게 되면 자동적으로 신뢰 할 수 있는 것으로 되기 때문에 수신측에서는 수신이 완료 되었을 때 이 큰 데이터를 재조립하고 해석 할 수 있습니다.

더 큰 데이터 "스트림"은 해석되기 전에 수많은 패키지로 부터 재 조립되어야 할 필요가 있기 때문에 레이턴시에 상당한 영향을 받습니다. 분리된 채널로 전송 될 수 있기 때문에 (낮은)채널 번호의 위치 갱신 "thrown away" 에는 영향을 미치지 않습니다.

 기술문서 TOP으로 돌아가기