-
[계획] 230618 - 여름방학 개발 계획활동/Arkhive 2023. 6. 18. 20:12
Updater 제거
실시간 업데이트 기능을 삭제하는 방향으로 바꿨습니다.
(엄밀히 말하면 기능 롤백)
해당 기능을 제거하는 이유는 다음과 같습니다.
1. 데이터 관리의 편의성
게임의 데이터는 아래의 소스를 사용합니다.
기존의 개발방법은 위 데이터에서 일부 json파일을 다운로드하여,
Arkhive앱과 Firebase 사양에 맞도록 데이터를 일부 가공하여 사용하고 있었습니다.
하지만, 이렇게 사용할 경우 /level 카테고리의 json 파일들이 분산되어있어,
Firebase-Realtime database 사양에 맞도록 추출하는데 비용이 너무 크다는 문제가 있습니다.
/level 카테고리의 데이터를 포기할 경우 아래의 데이터가 누락되는 문제점이 있습니다.
- 스테이지별 출현하는 적 리스트
- 스테이지 CCTV(맵 구성)
- 웨이브, 적 이동경로 등
2. 상수를 포함한 과다한 업데이트 항목 (비용문제)
현재 개발된 데이터 업데이트 방식은 다음과 같은 순서로 진행됩니다.
- 위 데이터 소스에서 Arkhive앱 개발 사양에 맞도록 update_dependency 추출하기
- 각 카테고리별로 업데이트 소스 파악 및 업데이트 진행
위와 같은 방식으로 진행되기 때문에 230618 현재 업데이트 하기위해 관리되는 항목은 아래와 같아졌습니다.
위 항목은 상수를 제외한 데이터 카테고리 입니다.
여기에 태그, 사정거리, 포지션 등 상수도 모두 관리하려면 업데이트 카테고리가 더욱 늘어나게 됩니다.
사실 개발하는 입장에서는 코드 10줄 내로 추가하도록 할 수 있지만,
진짜 문제는 이로 인한 서버로의 과도한 요청과 응답입니다.
Firebase를 이용하고 있기에, 무료로 사용할 수 있는 데이터 요청량에 제한이 있습니다.
현재로서는 이 서비스를 무료로 제공하도록 계획 중이기 때문에 비용적인 측면을 고려하지 않을 수 없습니다.
3. 이미지 로딩 최적화
이미지 역시 실시간 업데이트 기능으로 관리되고 있습니다.
모든 이미지와 텍스트 데이터는 flutter의 secure_storage 라이브러리로 관리되고 있습니다.
따라서 이미지를 불러올 때 역시 이 저장소에 접근을 해야만 가져올 수 있습니다.
하지만, 이미지를 key를 이용해 가져오고 이를 decode하는 과정에서 오버헤드가 생각보다 큰 거 같습니다.
그렇기에 한 번에 이미지를 30개 정도 로드하는 상황이나, 빠르게 스크롤 하는 경우에 버벅이는 현상이 발생했습니다.
비동기처리를 통해 이미지를 불러오긴 하나, 성능하락을 막을 수는 없었습니다.
compute() 함수를 이용해서 해당 과정 최적화 하는 기법이 있는 거 같습니다만...
아직 해당 함수를 완벽히 이해하지 못했기에 일단은 이 기능을 사용하지 않기로 했습니다.
위의 이유들로 인해 Updater 기능을 제거하기로 합니다.
다만, 사용자의 입장에서는 큰 불편함이 없도록, 플레이스토어, 앱스토어에 애플리케이션 업데이트시
업데이트 사항이 있다는 알람을 볼 수 있도록 구현해놓을 예정입니다.
비즈니스 로직, 도메인 로직 완벽 분리
비즈니스 로직: 사용자 눈에 보이지 않지만, 서비스 운용에 필수적인 기능을 처리하는 부분
도메인 로직: 사용자 눈에 보이는 디자인 부분개발 도중 Bloc 상태관리 기법을 익혀 일부 성능이 필요한 부분만 이 기법을 적용한 상태입니다.
궁극적인 목표는 모든 부분에서 Bloc 기법을 적용하여 비즈니스 로직과 도메인 로직을 분리하는 것이 목표입니다.
데이터 모델링 부분은 이미 개발하여 적용이 완료되었지만,
모든 부분에서 Bloc 기법을 적용하기 위해서는 시간이 좀 소요될 거 같습니다.
추가로 시간의 여유가 된다면, 기존에 일일이 모델링한 부분도 freezed 라이브러리를 이용해
재 구현할 계획은 있습니다.
목표했던 기능 개발
범주: 개발 완료 개발 중 개발 전
- 핵심 기능
- 창고 아이템
- 스테이지 기믹
- 스테이지 정보
- 오퍼레이터
- 적
- 부수 기능
- 설정
다크모드, 기본 정렬상태, 기본 스탯 등 - 광고 or 후원 기능
- 개발자 모드
위에 언급한 두 가지 개선사항을 반영한 후 나머지 부분 개발 진행할 예정입니다.
참고로 이미 개발이 완료된 부분에서도 추가적인 구현이 있을 예정입니다.
- 오퍼레이터 - 소환물 정보, 사거리 정보
- 스테이지 정보 - 적 정보, CCTV (맵)정보
스토어 등록
플레이스토어, 앱스토어 등록하여 실제 서비스 하는것이 궁극적인 목표입니다.
물론 위 과정이 순탄하게 진행되었을 경우에만 등록할 수 있겠죠...?
(방학때 이 프로젝트 말고도 다른 프로젝트도 병행 중이기에 못할 가능성이 있습니다...)
'활동 > Arkhive' 카테고리의 다른 글
[개발] #04 다크모드, 즐겨찾기 업데이트 (0) 2023.08.24 [개발] #03 richText(+@) 업데이트 (0) 2023.08.22 [개발] #02 아이템 정보 업데이트 (0) 2023.08.01 [개발] #01 스테이지 정보 업데이트 (0) 2023.03.23 [개발] #00 Arkhive 프로젝트 개요 (0) 2023.03.05