본문 바로가기

트러블 슈팅

[트러블 슈팅] 카드 시각 정보 추가 도중 최적화 이슈

 

웹 빌드 테스트 이후, 구글 설문지 피드백을 통해 여러 피드백을 받았다.

그중 대다수의 유저에게서 2가지의 피드백이 중복해서 왔다.

 

1. 카드효과 등의 시각적 정보 부족

2. 자세 시스템의 존재 가치 의문

 

 

 

따라서, 내가 담당했던 Carddisplay 쪽과 밀접한 연관이 있는 카드효과와 시각적 정보 부분의 개선에 들어갔고

 

 

기존에 있던 마우스 이벤트 핸들러와 카드 비주얼라이저의 enum을 활용하여 연계 카드의 테두리 효과는 금방 구현이 가능하였다.

 

 

하지만, 카드를 사용 가능한 대상에 화살표를 표시하는 기능을 추가하는 과정에서 작은 트러블이 발생했다.

 

 

 


 

 

 

카드의 구조는, 카드의 데이터인 CardModel 을 통해 시각화하는 방식으로, 실제로 모든 데이터는 CardModel이 가진다.
이곳에서 카드를 드래그 앤 드롭 하는 대상을 TargetType enum 으로 가지고 있는데, 카드의 각 효과 적용 대상과, 카드를 드래그 앤 드롭 가능한 대상과 맞지 않아, 기존 방식을 변경 없이 그대로 구현하고자 할 경우.

 

아래의 코드와 같이 각 카드의 효과들을 확인 , TargetType을 확인하는 구조로 화살표 대상을 확인할 수 있다.

 

카드의 OnPointerEnter 이벤트 핸들러 내부의 메서드

 

 

 

 

하지만 문제는 해당 방식대로 구현을 하고자 하기엔, 이미 지금도 게임 진행 시 카드 이벤트 시스템에서 높은 로드 비중을 차지하고 있기 때문에 카드와의 상호작용이 더 이상 무거워 지면 안 된다고 생각하였다.

 

 

 

 


 

 

 

따라서 카드가 처음 빌드 될 때 기존의 TargetType의 설정 기준을 카드를 "드래그 앤 드롭" 가능한 대상 에서

카드의 효과가 적용될 대상으로 변경하며 구조를 수정하였고.

 

이를 통해 기존의 모든 카드 효과들을 확인하는 과정 대신, 간단하게 CardModel의 TargetType 만 확인하는 것으로 화살표를 표시하게 되어, CardModel의 구조 수정을 통해 최소한의 성능 부담만으로 화살표 표시 기능을 추가할 수 있게 되었다.

 

 

카드의 효과 적용 대상 화살표 표시