-
[03.12] Object Pooling 기법 사용게임 개발 일기 2020. 3. 13. 00:16
『After Dungeon』이라는 게임의 특징은 화살이 벽에 꽂히면
One Way Platform과 같은 기능을 하게 된다.
이로써 플레이어는 플랫폼이 없는 곳에서도 능동적으로 발판을 만들면서
플랫포밍을 진행할 수 있다.
그런데 문제가 생겼다.
화살이 주요한 기믹이다보니까 플레이어도 화살을 자주 쏘고
필드에 존재하는 다른 장치들도 플레이어를 공격하기 위해 화살을 발사하게 된다.
맵이 어려워지면서 화살 쏘는 장치들도 늘어나다보니까
화살을 생성하고 부시는 작업을 많이하게 되면서
게임을 2~3분만 해도 렉이 심하게 걸리게 됐다.
이를 해결하기 위해서 Object Pooling이라는 기법을 사용하기로 했다.
기존에는 화살이 발사되야하는 시점에 화살을 직접 생성하고
화살이 사라져야할 시점에 파괴를 했지만
Object Pooling에서는
화살을 파괴하는 대신 비활성화시키고
화살을 생성하는 대신 비활성화된 화살을 활성화시키는 방법을 사용한다.
만약 생성해야하는 시점에 비활성화된 화살이 없다면
그때 화살을 하나 새로 생성한다.
그래서 영상에서 보다시피 플레이어가 직접 화살을 발사하기 전까지는
4개의 장치에서만 주기적으로 화살이 발사되고 있어서
arrow 0번부터 arrow 5번까지의 6개의 화살만이 hierarchy에 존재하는 모습이다.
그리고 플레이어가 화살을 쏘기 시작하자
더 이상 deactivate된 화살이 없어서 새로운 화살을 생성한다.
플레이어가 화살을 쏠 때도 쿨타임이 있기 때문에
화살 발사 버튼을 연타해도 씬 내에 존재하는 화살이 10개를 넘지 않게된다.
이를 이용해서 렉을 현저하게 줄일 수 있었다!
만세!
오늘도 뭔가 생산적인 일을 한 것 같다.
흐-뭇
뿌-듯
'게임 개발 일기' 카테고리의 다른 글
스마일게이트 온라인 게임잼 1등한 후기 (1) 2020.04.23 [03.11] Precision Platformer에 관한 간단한 고찰 (0) 2020.03.13 [03.09] 스토리 중심의 게임은 텍스트 파싱이 어려워! (0) 2020.03.10 [03.08] 주말에는 쉬어야지 (0) 2020.03.09 [03.06] 아침에는 코딩을, 저녁에는 기획을 (0) 2020.03.07