내가 여태껏 게임 프로그래밍하면서 이 게임 저 게임 많이 만들었었는데.... 참 클린업은 내게 많은 의미가 있는 게임이다. 물론 내가 만든 게임들 중에서 재미도 있는 편인 것 같고, 무엇보다 처음으로 만든 게임이라는 점이 나를 향수에 빠지게 하는 것 같다. 특히 게임 자체도 게임 프로그래밍을 처음 배울 때 기초적인 부분을 배우기 좋도록 게임이 만들어져 있어서 새로운 게임 엔진에 대해 공부할 때 많이 제작하는 게임이기도 하다. 처음 클린업 만들었을 때는 이상한걸 넣어서 요상한 게임이 되버렸는데 지금 와서 생각해보면 그 때 게임 만들면서 정말 즐거웠던 것 같다. 왠지 요즘 들어서는 뭔가에 쫓기면서 만드는 듯한 느낌이 들어서 재미가 덜 한 것 같기도 하다. 어찌되었든 나 자신은 나름 재밌는 게임이라고 느끼고 ..
Cocos2d-x를 하다 보면 팩토리 패턴 함수들이 자주 눈에 띕니다. 가장 많이 쓰는 CCSprite를 예로 들어보면 ### cpp static CCSprite* spriteWithTexture(CCTexture2D *pTexture); static CCSprite* spriteWithTexture(CCTexture2D *pTexture, const CCRect& rect); static CCSprite* spriteWithTexture(CCTexture2D *pTexture, const CCRect& rect, const CCPoint& offset); static CCSprite* spriteWithSpriteFrame(CCSpriteFrame *pSpriteFrame); static CCSprit..
01-16 11:39:43.596: I/System.out(17421): Exception : android.os.NetworkOnMainThreadException 이 오류가 갑자기 났다. 일단 결론부터 말하자면 안드로이드 버전 때문에 생긴 오류였다. 게임을 만드는데 게임랭킹을 구현하느라 네트워크를 쓰고 있었는데, 이전 게임에서는 잘 되던게 이번 게임에서는 왜 안되나 하고 봤더니 자세히 확인은 안해봤지만 안드로이드 버전 1.6에서는 네트워크 관련된 작업을 할 때 아무데서나 해도 상관없지만 2.2 버전(내가 2.2 버전에서 안 됬기 때문에. 몇 버전부터인지는 모름)부터는 Main Thread(UI)에서 네트워크 호출을 하면 무조건 error로 간주한다는 것이다. (참고 : http://ironheel.t..
갑자기 궁금해진 것이 있었다. A 클래스에 virtual release() 함수를 만들고 그 안에서 delete this를 한다. 그리고 B 클래스에서 A 클래스를 상속 받고 release() 함수를 오버라이딩 하지 않는다. 그 다음 B 클래스의 객체로 release() 함수를 호출하면 과연 B 클래스를 전체를 지울 것인가(A 포함), B 클래스의 A 클래스 부분만 지울 것인가가 헷갈렸다. 본능적으로 당연히 전자가 답이라고 생각이 들었지만 확실한지 궁금해졌다. #include class A { char *a; public: A() { a = new char[10]; }; virtual ~A() { delete []a; }; void release() { if( true ) delete this; } vo..
안드로이드의 경우엔 다양한 해상도 때문에 골머리를 앓는 경우가 많다. 다들 알겠지만 cocos2d-x로 안드로이드 프로젝트를 만들 때에는 cygwin, ndk 등을 이용하여 안드로이드 프로젝트를 생성하는 create_android_project.bat 파일을 실행하고 이렇게 해서 만들어진 안드로이드 프로젝트에 기존에 만든 cocos2d-x 데스크탑용 소스들을 넣은 뒤 컴파일해서 안드로이드에 포팅한다. 난 cocos2d-x가 C++로 작업하며 윈도우를 띄워서 작업하다가 그대로 안드로이드와 iOS에 올릴 수 있다느 사실을 굉장히 매력적으로 느꼈으나 가장 큰 문제인 해상도 문제를 어떻게 해결해야할지 몰라서 꺼리고 있었는데 열심히 해결 방법을 찾기 위해 노력한 결과 그 방법을 찾아낼 수 있었다. 뭐 현재 해상도..
- Total
- Today
- Yesterday