"Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention." http://www.cocos2d-x.org/forums/6/topics/37531 오늘 위 링크에 나온 에러를 겪었는데 참 난감했다. 여태껏 프로그래밍 하면서 한 번도 만난 적이 없었던 에러였는데 해결 방법 조차도 난해했기 때문이다. 다른 개발자 분들은 어떤식으로 개..
Lua로 코딩을 하다보면 Lua에서 하는 것보다는 엔진에서 뭔가 해줬으면 하는 경우가 있다. 이유로는 퍼포먼스 등이 있겠다. Cocos2d-x에서는 toLua(++)을 사용해서 C++ 코드로 작성해둔 것을 Lua에서 가져와 사용할 수 있도록 할 수 있는데, 이게 한국어 가이드는 별로 없더라. 중국어 자료가 많이 나오는데.... 중국어 자료를 읽는 고통을 다른 한국 개발자 분들이 겪지 않았으면 하는 마음에서 포스팅한다. toLua로 바인딩하는 작업을 크게 분류하면 다음과 같다.1. 내 Custom Class를 만든다.2. pkg 파일을 만든다.3. 빌드한다. 좀 더 자세히 살펴보자. 1. 내 Custom Class를 만든다.본인이 사용하고 싶은 클래스가 있을 것이다. 이 글에서는 다음 파일의 MySprit..
Cocos2d-x의 CCMenuItemImage를 생성할 때는 보통 normal image와 selected image를 넣어서 만들게 된다. 그러면 이 이미지 버튼이 down된 상태에 selected image를 보여주는 것이다. 문제는 이런 방식을 사용할 경우 selected image를 만들지 않을 경우 버튼이 클릭된 느낌을 내기 어렵다는 것이다. 그래서 이미지 한 장으로 이미지 버튼을 만들 때 흔히 사용하는 방법으로 버튼을 확대시키거나 축소시키는 액션을 취해준다. Cocos2d-x의 터치 시스템이 괴랄해서 따로 버튼을 만드는 것은 상당히 귀찮은 일인 것은 다들 동의할 것이다. 그래서 고민을 해봤는데, 그냥 CCMenuItemImage 클래스를 살짝 수정하면 해결이 될 것 같아서 한 번 해봤다. 해..
Cocos2d-x에는 lua와 js 스크립트를 바인딩해서 게임을 개발할 수 있다. js는 내가 경험이 없어서 말을 못하는데 lua binding 같은 경우에는 현업에서도 많이 쓰이는 방법 중 하나이다. 왜냐하면 C++로 개발할 때에 비해 생산성이 굉장히 향상되기 때문이다. 물론 숙련되지 못한 코딩을 하다가는 C++로 개발할 때보다 훨씬 힘들어질 수도 있지만. 디버거와 인텔리센스 기능의 부재 때문이랄까. (C++와 Lua 중 어떤 것으로 개발하는 것이 더 낫다고는 하지 않겠다. 장단이 있으니까 알아서 선택해야 한다.) 꽤 옛날 일이긴 하지만 11월 11일, 즉 빼빼로데이를 맞이하여 혼자서 게임잼을 했었다. 일명 '빼빼로 부수기' 게임인데, 말 그대로 아주 심플한 게임이다. 화면 중앙에 나타나는 빼빼로를 연..
게임 내 데이터를 효율적으로 관리하려면 추가 파일 데이터를 갖고 있는 것이 바람직하다. 그런데 데이터 파일을 Plain Text로 갖고 있다면 사람이 파일을 봤을 때 무엇을 의미하는지 알기 쉽지 않을 것이다. 따라서 사람에게 가까운 형식으로 만들어진 파일인 XML이나 JSON을 주로 사용하게 되는데, 여기서 또 XML과 JSON 중 어떤 것을 선택해야 하는 것인가에 대한 고민을 하게 된다. 결론부터 말하자면 JSON을 사용하는 것을 권장한다. 개인적으로 꺽쇠 괄호가 남발되는 XML을 선호하지 않기도 하지만, 무엇보다도 데이터 용량의 차이와 파서 라이브러리가 잘 되어있는 것이 JSON이기 때문이다. JSON의 경우 Indentation을 예쁘게 했을 경우 용량이 다소 커보인다. 하지만 Indentation..
스프라이트 애니메이션은 게임에서 가장 많이 쓰이는 기능 중 하나일 것이다. Cocos2d-x에서는 나름대로 CCAnimate, CCAnimatio이라는 클래스를 만들어서 쉽게 스프라이트 애니메이션을 만들 수 있도록 하려하지만.... 솔직히 그닥 편리하진 않다. (물론 일일이 새로 만들어야 하는 것보다는 훨씬 편하긴 하다.)아무래도 스프라이트 애니메이션에 필요한 텍스쳐를 두고 애니메이션 데이터를 따로 갖고 있는 것이 관리에는 더욱 편리하다. 보통은 왼쪽에서 오른쪽으로 균일한 크기의 프레임으로 주르륵 배열을 하기 마련인데, 이러면 빈 공간들, 그리고 겹치는 이미지를 처리해주지 않는 문제 때문에 용량의 낭비가 발생한다. 스프라이트 애니메이션이 한 두개일 경우에는 상관없지만 여러개가 되면 용량 낭비가 누적되는데..
[Get data from file xxx.yyy failed.] 라는 에러 메세지를 종종 보게 된다.여기서 xxx는 파일명, yyy는 파일 포맷이다. 나 같은 경우에는 스프라이트 생성이나 텍스쳐 생성을 할 때 저 에러 메세지를 받고 상당히 당황했는데당연히 Resources 폴더에 파일이 없으면 저런 에러가 날 것이라 생각했기 때문이다. 현실은 그냥 XCode 프로젝트에 파일을 안 올려줘서 그런거다. -_-;;그림 파일이 수정된거는 상관없는데 새로 추가된 그림 파일이 있다면 프로젝트에서 꼭 add 해주자. 괜한걸로 시간 날려먹을 수 있다....;; // Update : 2013_11_20XCode에도 정상적으로 올라가 있는데 계속 에러가 나는 경우가 있다.이런 경우에는 그냥 XCode Project Na..
예전에 DirectX에서 숫자를 화면상에 띄울 때는 숫자마다 그림을 따로 둬서 출력했었는데요.Cocos2d-x에 Label이 잘 되어 있긴 합니다만 커스텀 텍스쳐를 이용하여 Label을 만드는것은 조금 난해하더군요..fnt 파일 만드니, 뭐니 하는건 갠적으로 별로 맘에 안들어서 그냥 이전처럼 직접 만들었습니다.소스 보시면 딱 감이 오실텐데요. CCNode* MakeNumberLabel( unsigned int number, const char* texture_file_name, const float width, const float height ){CCArray *frames = CCArray::create();CCSpriteFrame *frame; int i;for( i=0; iaddObject( fr..
cocos2d-x가 약간 터치 시스템이 괴랄해서 사용하기 조금 불편합니다. 그래서 많은 분들이 터치 매니저를 직접 만들어서 사용하고 있죠. 이미 터치 매니저를 만드신 분들은 상관 없겠지만 혹시 차후에 만드실 분들은 제가 만든 것을 참고하시면 될 것 같습니다. https://github.com/growingdever/cocos2dx-touchmanager 사실 별 내용은 없고, CCNode를 상속받은 터치 매니저를 Scene의 최상위 노드로 둔 다음, 터치와 관련된 Node들을 전부 터치 매니저 노드에 등록하면 Z Order가 가장 높은 Node에게 터치 이벤트를 날려주는겁니다. (말로 설명하니까 복잡한데, 별거 없습니다.) 이런거 때문에 시간 낭비 하시지 마시라고 공유합니다. 많은 도움이 되길 :) p...
- Total
- Today
- Yesterday