만족

[Android] 사이퍼즈 서포터 업데이트 후기 (Version 3.0.3) 본문

[Android] 사이퍼즈 서포터 업데이트 후기 (Version 3.0.3)

Project/사이퍼즈 서포터 Satisfaction 2019. 9. 7. 02:43

 

안녕하세요?

 

상당히 오랜만의 업데이트입니다.

 

원래는 2.x버전에서 유지/보수만 조금씩 해줄 예정이였는데, 얼마전에 OPEN API를 공개했더라구요.

 

기존 API는 보여주는 정보도 적을 뿐더러, 데이터가 분산되어 있어서 속도도 느리고 받을 수 있는 정보도 극히 제한적이였지만,

OPEN API는 대놓고 유저에게 '이거 써!' 하고 친절하게 준 느낌이라 바로 개발에 들어갔습니다.

 

현재 학부과정 4학년에 있고, 곧 취업시즌이다보니, 여기저기 많이 불려다니고 그러느라 상당히 오래 걸렸네요.

 

하지만, 그만큼 유용한 기능들이 많이 추가되었고, 답답했던 속도도 많이 개선되었기 때문에

분명 패치내용은 만족하실거라고 생각해요.

 

사족이 조금 길었는데, 이제 본론으로 돌아가겠습니다.

 

먼저, 3.0.3버전 기준으로 사이퍼즈 서포터가 지원하는 주요 기능들에 대해서 설명드리겠습니다.

 

목차

1. 특정 유저 전적 검색

2. 특정 유저 전적정보/기타정보 조회 

3. 특정 경기 상세보기

4. 랭킹 조회

5. 모든 캐릭터 정보 상세보기

6. 홈페이지 공지사항/이벤트/매거진 등 조회

7. 캐릭터 픽률/승률 조회

8. 포지션 정보 조회 (새로 추가된 기능!)

9. 맺음말

10. 여담

 

1. 특정 유저 전적 검색

 

이 기능은 두가지 경로를 통해 사용할 수 있습니다.

 

메인 페이지에서 직접 검색하거나, 랭킹 조회 버튼을 누른 후, 랭킹에서 검색하는 방법을 사용할 수 있어요.

 

2. 특정 유저 전적정보/기타정보 조회

 

존재하는 유저의 닉네임을 입력할 경우

이런식으로, 해당 유저의 상세정보를 확인할 수 있습니다.

 

 모스트 사이퍼를 통해, 검색된 유저의 주 포지션/사이퍼를 확인하는데 많은 도움이 될 것이라고 생각됩니다.

 

이번에, 기능 업데이트에 많은 도움을 주신 '착한어른이' 님 께서 제안해주신 방법을 적용해서

'최근 승률 분석' 기능도 만들어 봤습니다.

 

이 기능은 최근 게임 전적 정보를 바탕으로, 현재 자신의 실력이 상승세인지, 하락세인지 한눈에 볼 수 있게 해줍니다.

 

전적같은 경우에도, 기존에는 최대 20개의 전적만을 불러왔지만

open api가 추가됨에 따라서, 90일 이내에 플레이한 모든 로그를 확인할 수 있게 되었습니다.

 

이 기능은 특히나 OPEN API의 덕에 가장 큰 이득을 본 기능입니다.

 

기존에는 홈페이지나 앱에서 하나하나 데이터를 긁었기 때문에 로딩속도가 정말 극악이였죠...

(아무리 작업을 분산시켜도 데이터가 너무 파편화되어있다는 고질적인 문제는 해결이 불가능했었습니다)

 

하지만 이제 한번의 요청과 한번의 응답이면 충분해졌답니다!

 

3. 특정 경기 상세보기

 

2번 기능(플레이어 정보 조회)에서 전적을 탭하면

그 경기의 상세 리포트를 볼 수 있습니다.

각각의 유저마다 어떤 아이템을 착용했는지, 어떤 특성을 들었는지, 딜은 얼마나 했는지를 확인할 수 있으며

그리고 팀 단위로도 리포트를 확인할 수 있습니다.

 

팀 단위 리포트의 경우 단순 숫자로 보는 것 보다 시각화해서 전달하는게 더 좋다고 생각되어

예전 업데이트때 추가한 부분입니다.

 

#광전사와 같은 해시태그는, 팀 내에서 활약한 인원을 어떤식으로 강조해서 표현할 수 있을까를 고민하다가 나온 부분입니다.

 

개인적으로 센스있게 잘 지었다고 자화자찬 했었지만, 정작 세부의미는 저만 알고있었다는 점을 잊고 있었지요....

실제로 태그 기능이 업데이트 되고 난 이후, 많은 사용자분들께서 태그의 의미를 질문해 주셨었습니다.

 

이제야 그 불편함을 해소시켜드리네요 ㅠㅠ ...

(역시 저는 센스가 없나봅니...다...)

 

 

해당 페이지 오른쪽 밑의 태그 아이콘을 누르면, 각 태그별 세부의미를 확인하실 수 있습니다.

 

4, 랭킹 보기

 

아마 공식전을 즐기는 유저라면, 이 기능이 제일 중요하다고 생각하시는 분들이 많을 거에요.

 

랭킹 조회 기능 역시 속도가 매우 향상되었습니다.

 

기존에는 사이퍼즈 홈페이지의 랭킹 페이지로 가서 하나하나 데이터를 긁어온 다음

사용자의 스마트폰에서 필요없는 데이터를 쳐내고 가공하는 과정을 거치느라

매우 긴 로딩시간이 필요했습니다.

 

그러나 이제는 OPEN API를 통해 필요한 데이터만 가져올 수 있게 되어 훨씬 더 빠르게 사용하실 수 있습니다.

 

(하지만 저는 언랭입니다...ㅎㅎ)

 

5. 모든 캐릭터 정보 상세보기

 

 

모든 캐릭터에 대해, 주요 포지션/스킬 정보/추천 아이템(티어별)/외부 링크(유튜브, 나무위키 등)의 정보를 제공합니다.

 

이 기능 역시 추천 아이템을 표시하기 위해 한부위씩 모두 조회하느라 비교적 긴 시간이 걸렸었습니다.

OPEN API에서도 해당 기능은 지원해주지 않아서, 그냥 둘까도 고민했습니다만

결국 최적화를 진행해서 업데이트에 반영했습니다.

 

바뀐 로딩 방식에서는 이제 제 서버가 해당 데이터를 모두 모아주면, 사용자는 16번(아이템 부위 갯수)의 조회가 아닌

서버로부터 한번의 데이터 조회를 함으로써 엄청난 속도의 차이를 느끼실 수 있을 겁니다.

 

또한 밸런스 패치 내역, 캐릭터 공략/세부정보의 경우 홈페이지에서는 지원이 미숙하기 때문에

나무위키를 링크를 연결해두었습니다.

(이 기능도 '착한어른이'님께서 건의해주신 기능이고 데이터 수집에 많은 도움을 주셨습니다)

 

추천 아이템의 경우

저도 8년째 사이퍼즈를 즐기는 유저이지만 대부분의 캐릭터가 어떤 아이템을 끼워야 제일 효율이 높은지 모르는데다

홈페이지에서는 한부위씩 검색해야 하는 번거로움이 있기 때문에

저도 매우 유용하게 사용하는 기능이며, 뉴비, 올드비 할것 없이 많이 좋아해주시는 기능입니다.

 

6. 홈페이지 공지사항/이벤트/매거진 조회

 

어...예.... 그냥 그렇습니다.

(저는 티샤가 싫습니다... 이유는 맨 마지막에....)

 

7. 캐릭터 픽률/승률 조회

 

캐릭터 별 승률/픽률을 알아볼 수 있습니다.

 

캐릭터를 터치하면 (5)캐릭터 정보 상세보기 페이지로 자동 이동합니다.

 

(휴톤이 인기가 많네요 ㅎㅎ)

 

8. 포지션 특성 조회

 

최근 사이퍼즈에도 롤에서의 '룬 시스템'과 비슷한 '포지션 특성' 기능이 추가되었습니다만

별도로 홈페이지나 API에서 포지션 특성 리스팅 기능을 표시해주지 않더군요.

 

새로운 기능 추가와 데이터 수집은 매우 귀찮고 번거롭지만, 이 기능은 반드시 필요한 기능이라 생각되어

'착한어른이'님과 함께 개발하였습니다.

 

9. 맺음말

 

사이퍼즈 서포터는

"왜 사이퍼즈는 lol의 opgg나 fow같은 서비스가 없을까? 그럼 내가 만들어보자!" 라는 생각으로

2018.8에 개발을 시작했습니다.

 

당시 안드로이드 앱 개발 경력은 2번밖에 없었던 데다,

처음엔 이렇게까지 많은 분들이 좋아해주실지 몰랐고, 저 역시 이렇게 열심히 관리할 줄은 꿈에도 몰랐습니다.

 

느리지만, 한차례 한차례 업데이트를 반복하며 만들어지는 프로그램을 보다 보니

어느새 지금은 저의 가장 뿌듯한 앱이 되었습니다

 

잠깐 보여드리자면 1.x버전 당시의 앱 홍보 이미지입니다.

(눈뿅주의)

(이렇게 보니 정말 많이 나아진것 같긴 하네요...)

 

사이퍼즈 서포터를 사용해주시는 모든 분들께 정말 감사드립니다.

 

늘 노력하고 있긴 하지만, 아직도 제 실력이 너무나도 작게 느껴져

이용자분들에게 불편을 드리는 것 같아 항상 미안한 마음을 가지고 있습니다...

 

여기까지 올 수 있었던 것은 사용자분들이 부족함에도 애용해주신게 가장 컸던 것 같습니다.

앞으로도 열심히 노력해서 좋은 실력으로, 좋은 애플리케이션 제공하도록 하겠습니다.

 

다시한번 감사합니다!

 

++++

10월이나 11월에는 플레이어 정보/경기 상세보기 전적 공유를 위한 웹사이트 제작을 완료할 예정입니다.

많이 기대해주세요...!

(디자인 공부를 하고 계신 분께서 도와주시기로 해서 지금보다는 안구보호가 될 것 같습니다...ㅎㅎ)

 

10. 여담

 

지난학기에 운영체제와 컴퓨터 구조 과목을 수강하면서, optimization에 대한 idea를 많이 얻을 수 있었어요.

덕분에 앱에도 변형하며 적용하면서 조금 더 쾌적한 환경을 제공할 수 있게 되었구요.

(특히 memory hierarchy structure와 concurreny가 도움이 컸습니다...!)

 

또한 backend-programming(server)관련 과목도 수강하면서

서버 최적화 및 논리적 구조 향상에도 도움이 많이 되었습니다.

 

잘 가르쳐주신 교수님들께도 정말 감사드려요...!

 

사용 기술 스택에 대해서도 궁금하신 분들이 계실 것 같아서 말씀드릴게요.

 

Version Management: git

App: JAVA

Server: Ubuntu 16.04 LTS/php 7.4/Mariadb 10.3

Web: React (예정)

 

서버는 Digital Ocean에서 월 $5플랜을 이용하고 있어요.

 

현재 서버는 물리적으로 싱가폴에 있기 때문에 지연되는 것도 있고

서버에서는 MultiThread를 사용하지 않아서 처리속도가 늦는 것도 있어요.

 

다만 현재 nodejs를 공부중이며, 내년 초까지는 php를 모두 걷어낸 뒤 nodejs를 적용하고

aws lightsail(Seoul)로 서버를 옮겨서 더 나은 성능을 제공할 것을 약속드리겠습니다.

 

그리고 네오플 공식 OPEN API 관련해서 얘기를 좀 하고 싶어요.

 

9월 4일, 신규 캐릭터 '악몽의 티샤'가 추가되었는데

OPEN API의 유저 정보 조회, 경기 상세보기 조회 기능에서는

캐릭터 이름(characterName)이 "티샤"가 아닌 비어있는 값(null)로 전달됩니다.

또한 /characters에서도 티샤는 표시되지 않구요.

(덕분에 3.0.0 업데이트하자마자 앱이 빵빵 터졌어요....)

(++ 물론 제가 처리 못한것도 있지만,

그렇다면 response data 에 대해 최소한 각각의 key 마다 nullable, nonNull 여부를 표시해주시면 좋을 것 같아요,

모든 object에 대해 예외처리를 하라는건 조금... 문제가 있어보여요)

 

또한 포지션 정보는 밸런스 패치 이후에도 수정되지 않고 있는 상태라서

제가 어떻게 손 쓸 수가 없습니다...

 

캐릭터 스킬 정보는 올해 초 1회 크롤링하고 앱 내에서 사용하고 있는데

OPEN API에서 해당 기능을 지원해줬으면 더 좋을 것 같아요.

현실적으로 매일 패치노트를 들여다보기는 관계자가 아니라면 어렵습니다...

 

무료로 OPEN API를 개방한것은 정말 대단하다고 생각하고, 감사합니다...

하지만 조금만 더 신경써주셨으면 합니다..!

 

문의사항이 있다면 rndrjs123@naver.com 으로 연락주시면 확인하는대로 답장 드리겠습니다!

앱 링크: https://play.google.com/store/apps/details?id=kr.co.dothome.whenever.cyphersapp

 

 



Comments