-
[개발] #01 스테이지 정보 업데이트활동/Arkhive 2023. 3. 23. 23:20
스테이지 정보 화면 업데이트 완료했습니다.
단, 적 등장 정보는 추가하지 않았습니다.
그 이유는, 적 정보가 스테이지 별 json 정보로 저장되어 있는데, 그 json 파일이 너무 많아서 시간적 여유가 되지 않았기에 생략했습니다.
양해 부탁드립니다.
또한, 현재 아이템의 목록은 날것의 데이터 형태로만 출력하고 있는데,
추후에 아이템 부분의 개발이 완료되면 순차적으로 디자인 할 예정입니다.
아래의 내용은 개발에 대한 내용입니다.
소스 데이터
위의 정보는 아래의 데이터를 기반으로 출력됩니다.
https://github.com/Kengxxiao/ArknightsGameData/blob/master/ko_KR/gamedata/excel/activity_table.json
https://github.com/Kengxxiao/ArknightsGameData/blob/master/ko_KR/gamedata/excel/zone_table.json
https://github.com/Kengxxiao/ArknightsGameData/blob/master/ko_KR/gamedata/excel/stage_table.json
구현 방법
데이터가 분산되어 있어 아래와 같은 작업을 거쳐 분류, 그룹화 했습니다.
stage_table
에 있는 스테이지 데이터를zone
에 따라 분류.a.
zone
이MAINLINE
인 경우, 메인 스테이지 취급.b.
zone
이ACTIVITY
인 경우, 이벤트 스테이지 취급.여기서 메인 스테이지의 경우에는
zone_table
에 이름이 기재되어 있지만,이벤트 스테이지의 경우에는 이벤트 이름이 아닌, 말 그대로
zone
의 이름이 기재되어 있습니다.따라서 이벤트의 이름을 받아오기 위해
activity_table
의 데이터를 활용하게 됩니다.하지만,
activity
의 key는zone_table
의zoneID
의 값으로는 받아올 수 없습니다.따라서
acrtivity_table
의zoneToActivity
의 데이터를 활용하여zoneID
를activity 키
값으로 변환하는 과정이 필요합니다.위 과정을 거치면 데이터를 이벤트(챕터)이름 \ Zone \ 스테이지로 그룹화 할 수 있습니다.
하지만 여기서 문제점이 2가지 발생했습니다.
TroubleShooting
1. 로딩 시간 최적화
첫 번째 문제점은 불러와야 하는 스테이지의 수가 너무 많다는 것입니다.
이 스테이지를 한 번에 모두 로드할 경우 로딩시간이 지나치게 길어지는 문제가 발생했습니다.
따라서 이 경우에는 애플리케이션을 업데이트를 할 때, 동시에 스테이지를
zone과 함께 인덱싱
하도록 구현했습니다.그렇게 하면 각각의
zone 키
에는stage id의 배열
이 인덱싱되어특정 zone
에 해당하는stage의 리스트
를 빠르게 불러올 수 있게 되었습니다.그 후, 스테이지 리스트 화면에서는 모든 스테이지를 로딩하는 대신
activity 이름을 key
값으로 받는 map을 생성하고내부에
zone의 리스트
를 담을zones
배열을 만들어 처리하였습니다.따라서 처음 로딩시에는
activity의 리스트
와 그에 맞는zone의 배열
만 로드하게 되고,특정 이벤트, 챕터를 터치하여 오픈했을 때
zones 배열
에 담긴zone
을 참고해미리 인덱싱 해놓았던 데이터
를 바탕으로 스테이지를 로드하게 됩니다.로딩 시점을 분산시킴으로서 로딩 시간을 절반 이하로 줄일 수 있었습니다.
2. 재개방 이벤트 중복 이슈
두 번째 문제점은 재개방 이벤트가 존재하는 경우,
stage_table
의zoneID
의 값이 재개방 버전의zoneID
로 설정이 되어 있습니다.즉,
마리아 니어 (재개방)
에는 스테이지가 존재하지만,마리아 니어
에는 스테이지가 존재하지 않는 문제가 발생합니다.저는 첫 이벤트 출시 순서로 정렬하고 싶었기에 이 문제를 아래와 같이 해결했습니다.
재개방 버전의 경우에는
isReplicate
의 값이true
로 설정되어 있습니다.따라서
isReplicate
의 값이true
인 activity의zones 배열
을(재개방)
을 제외한 이름과 같은activity의 zones 배열로 복사
를 하고,(재개방)
이 붙은 activity는제거
하는 방식으로 처리했습니다.ToDo
우선 아이템 관련 부분을 구현하고 난 뒤 아래의 스테이지도 추가 구현할 예정입니다.
- 요일별 파밍 스테이지
- 섬멸전
- 보안 파견
참고로 위에서 언급했지만, 적 정보는 분리된 json 파일이 너무 많아서 개발 우선순위를 가장 맨 뒤로 미뤄둔 상태입니다.
하지만, 만약 하게 된다면 아래의 기능도 추가로 구현 가능하게 됩니다.
- 적 정보
- 스테이지 타일(맵)
- 적 웨이브 정보
+ 로그라이크 (사실 로그라이크는 바로 구현할 수 있지만, 제공하는 정보의 가치가 없어 제외했습니다)
'활동 > Arkhive' 카테고리의 다른 글
[개발] #04 다크모드, 즐겨찾기 업데이트 (0) 2023.08.24 [개발] #03 richText(+@) 업데이트 (0) 2023.08.22 [개발] #02 아이템 정보 업데이트 (0) 2023.08.01 [계획] 230618 - 여름방학 개발 계획 (3) 2023.06.18 [개발] #00 Arkhive 프로젝트 개요 (0) 2023.03.05