[Cocos2d-x] 프로젝트 생성을 1초만에 만들고 용량 경량화하기

Cocos2d-x를 사용하면서 항상 불만이었던 것이 있는데, 프로젝트 생성시간이 오래걸린다는 것과 프로젝트 용량이 용납할 수 없을 정도로 너무 크다는 것이었습니다. 이번 포스팅에서는 1타 2피로 위 두가지를 해결하는 것에 대해 정리해봅니다.

  • 엔진 버전 : cocos2d-x 3.17.1
  • 생성 장소 : HDD

사실 내용 파악은 예전에 했던 것이라 엔진 버전은 그 이하 3.17이나 3.16등도 상관없이 잘 될듯합니다.

먼저 기존방식대로 프로젝트 생성을 해봤습니다.
첫 생성이라 2분이 넘게 걸렸는데 캐쉬 버프를 받아 다시 생성해보면 아래와 같이 28초 정도 나왔습니다.


프로젝트 생성하는데 28초나 걸린다? 뭐 사실 유니티도 비슷한 시간을 보여주긴 합니다만, 전 더 줄여보고 싶었습니다. 그래서 찾은 방법이 프로젝트 생성시마다 엔진 폴더에서 복사하는 cocos2d 폴더를 복사하지 않고 엔진 폴더에 있는 것을 참고하는 것으로 시도했습니다. 심볼릭 링크라는 것을 활용해서 말이죠. 간단히 심볼릭 링크는 바로가기 링크를 만드는 것인데 이게 파일뿐 아니라 폴더에도 적용이 되고 바로가기가 아닌 실제 폴더 처럼 인식이 되게 해줍니다. 자세한 것은 위키백과를 참고하세요.

용량만 줄일 것이라면 프로젝트 생성 후 cocos2d 폴더를 지우고 각 OS 별로 아래와 같이 해주면 심볼릭 링크를 생성할 수 있습니다.

  • Windows : mklink /J project_dir\cocos2d cocos_root
  • Mac : ln -s cocos_root project_dir\cocos2d

하지만 이건 프로젝트 생성시마다 해줘야하는 용량만 최적화하는 반쪽짜리 개선일 뿐이고, 처음 의도했던데로 프로젝트 생성할 때부터 자동으로 개선이 되도록 해보겠습니다.

먼저 Cocos2d-x 엔진을 설치한 폴더에서 파이썬 스크립트를 수정해야합니다.
tools/cocos2d-console/plugins/plugin_new/project_new.py
수정할 함수는 def append_x_engine(self, v): 부분입니다.


수정후 프로젝트를 생성해봅니다.
프로젝트 생성이 1초만에 끝나는군요. 불필요하게 cocos2d 폴더를 복사하지 않아서 빨리된 것이죠.

기존 방식은 용량이 300메가가 넘는데 3메가가 안되는 용량으로 줄었습니다. 100분에 1이나 줄어든 것이죠.

생성된 프로젝트 비교 화면입니다. 다 쪽같은데 cocos2d 폴더가 심볼릭 링크로 되어 있습니다.

cocos2d 폴더안은 조금 다른데 크게 상관은 없습니다.

실제 엔진폴더와 심볼릭 링크로 생성한 폴더가 같은 것을 볼 수 있습니다.

이제 프로젝트 빌드를 해봅니다. 솔루션 파일을 열어 빌드를 하면 아래와 같은 에러가 발생할 것입니다.

error MSB8036: The Windows SDK version 10.0.17134.0 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution".
error MSB8036: The Windows SDK version 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution".


cocos2d-x 엔진이 설치 처음 빌드라면 발생할 수 있는 에러입니다. 따로 정리한 링크가 있으니 확인하시면 됩니다. Retarget Projects의 경우도 기존처럼 프로젝트를 생성했다면 libcocos2d 같은 녀석들을 프로젝트 생성시마다 해줘야 할텐데 이렇게 심볼릭 링크를 해두면 원본을 설정해주기 때문에 한번만 해주면 다음부터는 에러가 발생하지 않습니다.

이제 빌드가 성공하고 실행이 잘 됩니다.

마지막으로 프로젝트 빌드 후 용량 비교입니다. libcocos2d나 libSpine등의 lib의 빌드 용량이 프로젝트에 포함이 안되기 때문에 용량이 훨씬 작습니다. 450메가도 사실 빌드한 obj파일이나 VS에서 만든 pch 파일들의 용량이 대부분이죠. 아무튼 용량 경량화도 성공입니다.

댓글

이 블로그의 인기 게시물

CMake Windows에 설치하기

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

크로스 스레드 작업이 잘못되었습니다. xxx 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다