티스토리 뷰

보통 횡,종스크롤 게임을 cocos2d-x를 이용하여 만들 때 CCParallaxNode를 방법으로 제시한다.


실제 예제로도 제안되어 있기도 하고.


하지만 나는 다음과 같은 이유로 인해 CCParallaxNode를 사용하지 않기로 결정했다. (대표적인 이유들만 쓰도록 하겠다.)



1. 별로 직관적이지 못한 구조

CCParallaxNode가 '원래' 스크롤링을 위해 만들어진 클래스인지는 잘 모르겠다. 하지만 어쨌든 스크롤링을 구현하는데 별로 직관적이지 못한 구조를 가졌다. 보통 CCParallaxNode를 사용할 때 addObject를 하면서 얼마나 이동될 값인지를 나타내는 ratio를 넣고, 매 루프마다 CCParallaxNode의 position을 변경시키는 방법을 이용한다. 다른 사람들에게는 직관적일지는 모르겠으나 내가 봤을 때 이건 별로 직관적이지 못한 구조다. 차라리 CCParallaxNode 안에서 새로운 Layer와 같은 기분으로 local coordinate를 사용하는 것이 직관적이지 않을까 생각한다.


2. 디버깅이 어려움

주로 횡스크롤에서 뒷배경이 오른쪽->왼쪽으로 이동하는 표현을 할 때는 CCParallaxNode의 position의 x 좌표를 점점 더 큰 음수가 되도록 바꾼다. 이 때문에 CCParallaxNode는 시간이 어느정도 흐른 뒤 position 값이 엄청나게 큰 음수값이 되어버린다. 그렇기 때문에 화면상의 좌표로 생각을 하면서 디버깅을 하기가 굉장히 어렵다. convertToWorldSpace 함수를 통해 window coordinate를 알아낼 수 있긴 하지만, 이걸 써야한다는 것부터가 1번에서 제시한 직관적이지 못한 구조와 이어져 개발이 불편해진다.


3. 게임 상황과 유연한 interaction이 어려움

예를 들어 부스터라는 아이템이 있다고 치자. 캐릭터가 부스터 아이템을 먹으면 속도가 빨라진다. 이걸 CCParallaxNode에가 적용시켜야 되면 이중으로 힘들어진다. 그냥 delta 값을 이용해서 이동시킬 때는 delta값에다 일정 값을 곱하거나 더해주기만 하면 되기 때문에 훨씬 더 편하다.


4. 게다가 굳이 CCParallaxNode를 쓸 필요가 없음

3번에서 언급한대로 Array를 만들어서 scrolling시킬 node들을 그냥 수동으로 position 값을 바꿔줘도 된다. 아마 CCParallaxNode 내에서도 이렇게 처리하는 것으로 알고 있다. 오히려 성능을 낮추는 요인이 되는 것이다. 게다가 이것을 제외하곤 딱히 CCParallaxNode를 쓸 이유가 없기도 하다.




결국 이러한 이유들로 인해.... 내 생산성을 굉장히 급락시켰던 CCParallaxNode를 과감히 사용하지 않기로 결정했다. 이 컴포넌트를 계속 사용하겠다고 희생한 시간들이 주마등처럼 스쳐지나가지만.... 지금이라도 그만 사용해야겠다. 너무 과도하게 주어진 컴포넌트를 사용하는 것도 딱히 좋진 않은 것 같다. 결국 깔끔하게 구조를 잘 짜는게 중요한데, 잘 모르는 컴포넌트를 막 사용한 감도 없잖아 있긴 했다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday