안녕하세요. 랭킹 갱신에 대해 문의드립니다.

현재, 랭킹버튼을 눌러서, 랭킹 팝업에 진입하면,

UpdateUserScore ()로 랭킹 업데이트 하고,

GetRankList() 로 100위까지 찾아서 콜백으로 데이터 사용하고있고,

GetMyRank()로 내 순위를 보여주고있습니다.

이 3개를 동시에 사용하고있다보니,

가비지가 엄청 발생하고, 2~5초간 멈추게되는데요.

다른 뒤끝서버 게임들 해보니, 저처럼 오래멈추진않는데, 효율적인 방법이 있는지궁금합니다.

(비동기 방식으로 callback 받아서했는데 왜 순간적으로 멈추는지 모르겠네요.

안녕하세요 개발자님,
비동기 함수에 등록한 콜백 함수의 경우 메인 스레드에서 실행되기에 콜백 함수에서 부하가 심한 경우 멈춤 현상이 발생할 수 있습니다.

남겨주신 말씀을 확인하여보니 UpdateUserScore 함수를 비동기로 사용하고 있지 않은 것으로 확인됩니다.

CallbackRankingList 함수를 확인했을 때, 내부에서 GameObject clone을 생성하는데
리미트가 100개라면 한 프레임에 100개의 인스턴스를 생성하기 때문에 가비지가 발생하고 부하가 생길 수 있습니다.
미리 랭킹 인스턴스를 만들어두고 값을 변경하는 방식으로 수정이 필요해 보입니다.

UpdateUserScore 함수를 동기로 사용하신 것이 정보를 보여주기 위함으로 예상되는데
UpdateUserScore 콜백 함수 내에서 GetRankList와 GetMyRank를 비동기로 호출하면 UpdateUserScore도 동기방식으로 호출하지 않아도 되니 이점 참고 부탁드리겠습니다.
감사합니다.

아. 랭킹정보 갱신할떄, 동기방식으로 하고있었네요. ㅠㅠ 감사합니다…

  1. “미리 랭킹 인스턴스를 만들어두고 값을 변경하는 방식으로 수정이 필요해 보입니다.” <이 말씀은,

랭킹 팝업에서, 100개의 오브젝트를 미리 만들어놓고, 랭킹 데이터 받아서 셋팅만하고, 사용안하는거는 게임오브젝트를 끄라는 말씀이신가요??
이해를 잘못해서 예시로 말씀해주시면 정말 감사해요. 부탁드립니다.

  1. UpdateUserScore() : 랭킹정보 갱신 함수에서,

BackendReturnObject로 콜백받으면,

GetRankList() 처럼, JSON으로 랭킹정보 데이터 받을수있나요?
API 문서에는 JSON 받는게 따로안보여서 질문드립니다.

문의하신 내용에 대하여 순차적으로 답변 드립니다.

  1. 개발자님께서 이해하신 것이 맞습니다. :smiley:
    말씀해 주신 방법처럼 이용해 주시면 됩니다.

  2. 모든 리턴값은 JSON으로 제공됩니다.

감사합니다.