-
프로젝트에 새롭게 도입한 기술 / 이유
-
코드의 개선을 위한 트러블 슈팅
프로젝트에 새롭게 도입한 기술 / 이유
-
Addressable
Addressables / Addressables는 AssetBundle을 관리하는 시스템으로 리소스들을 주소로 관리한다. 폴더에서 원하는 리소스를 찾아서 불러오는 Resource 와 달리 주소로 리소스에 접근하여 빠르게 로드가 가능하고 내부적으로 리소스를 효율적으로 관리해주며 리소스들을 빌드하지 않고 서버에 올려 Remote 방식으로 리소스를 관리할 수 있다는 특징이 있어서 도입하게 되었습니다.
-
async-await
async-await / Addressables는 비동기 방식으로 게임오브젝트를 생성하는 것이 권장된다. 비동기 방식으로 리소스를 로드하게 되면 추가적으로 리소스를 로드하는 동안 게임의 메인스레드를 활용할 수 있다는 장점이 있어서 async-await를 사용해서 비동기 방식으로 메서드를 변경.
코드의 개선을 위한 트러블 슈팅
-
ResourceManager에서 초기로딩때 모든 AssetReference를 불러오고 캐싱해둔후 사용하도록 구현을 했는데 로드에 생각보다 많은 시간이 소요되었다.
특정한 상황에서만 사용될 오브젝트들의 주소를 미리 리소스 매니저에서 캐싱하는것은 불필요하다고 생각되었고 이미 Addressable에서 관리하고 있는 리소스들을 이중으로 관리하는 것이라는 생각이 들어서 각 오브젝트를 생성하는 클래스에서 AssetReference를 Inspector창을 통해 할당해 관리하고 여러가지 리소스들 중에서 하나를 선택해야되는 Monster, MonsterSO, CardSO 같은 경우에는 각각을 SO로 묶어두면 좀 더 효율적으로 관리할 수 있겠다는 생각이 들어서 이후 시도해볼 예정이다.
-
Cage, Card Manager, Controller의 구조 개선
Cage와 Card의 기능은 구현을 한 후 리소스 관리 부분을 비동기 방식으로 변경하기 위해 코드를 수정하는 과정에서 각 클래스들의 결합도가 강해 하나의 코드를 변경하기 위해서 많은 코드 수정이 불가피 했고 많은 버그들이 발생해서 구조 개선의 필요성을 느낌 최대한 단일 책임의 원칙을 생각하여 클래스들을 분할 했고 결합도를 낮추기 위해 중간 관리를 위한 매니저 클래스들에서 다른 컨트롤러 클래스들을 사용해서 기능이 작동하도록 구현했음 <br/> <br/>