이 글을 발견하게 된 계기는 사소하다. GLUT, GLEW, GLFW와 같은 라이브러리들이 있는데, 대체 이 라이브러리들이 무엇인지에 대해 잘 이해가 안 가서 찾아보던 중이었다. 사실 나는 생각없이 GLUT를 쓰고 있었는데 이게 뭔지 제대로 알지도 못한 채 그냥 쓰고 있다는 사실을 자각하게 되었고, 거기다 맥과 우분투에서 동시에 작업할 수 있는 환경을 만드는 것에 대해 고민하다 차라리 이번 기회에 자세히 알지 못하던 부분을 자세히 알아봐야 겠다고 생각한 것이 시작이었다. 그러다 찾은 글이 바로 이 글이다. StackOverflow에 올라온 글인데, 채택된 답변 보다는 그 아래의 답변이 인상 깊었다. 꽤나 양질의 글인지라 번역해놓으면 도움이 되지 않을까 싶어서 부족한 실력이지만 번역을 시도해봤다. Q.I ..
SOIL : Simple OpenGL Image Library 이미지 파일을 읽어서 텍스쳐로 만들려면 라이브러리를 써야한다.(물론 직접 파일 포맷대로 읽어들일 자신이 있다면 그렇게 해도 상관없다만.... 좀 편하게 살아보자. -_-;;) SOIL에서 제공해주는 정적 라이브러리 파일(libSOIL.a)을 Link Binary With Libraries에 추가해도 잘 안 써진다. 아래 사진과 같은 에러가 뜬다. 아직 내가 링커 같은 데에 지식이 좀 부족해서 이유를 정확히 잘 설명은 못하겠다. 일단 뭔가를 못 찾겠다는 뜻인데.... -_-;검색하다보니 libSOIL.a가 32bit로 빌드된 것인데 64bit로 빌드해서 그런 것이라는 말도 있는데 32bit로 빌드하는걸로 바꿔도 컴파일 에러는 그대로다. C++ ..
다중 해상도를 지원하는 것은 상당히 골치 아픈 일이다. 굉장히 많은 방법이 있겠지만 내가 나름대로 삽질을 거듭하면서 괜찮다 싶은 솔루션을 공유해보려고 한다. 나는 Design Resolution과 Resource Search Path, Content Scale Factor를 활용하기로 했다. 이 글에서는 이 속성들을 깔끔하게 잡는 법에 대해 설명하려고 한다. 나는 AppDelegate.cpp에서 Design Resolution을 재가공 해주는 방안을 선택했다. 왜 재가공 해주어야 하는가? 세상에는 정말 다양한 해상도의 기기들이 많다. 문제는 이 기기들의 종횡비도 제멋대로라는 것이다. 아이폰만 해도 960x640, 1136x640은 종횡비가 다르다. 거기다가 아이패드까지 생각하면 1024x768으로 큰 차..
최근 머리를 앓게 하는 문제는 바로 Multi resolution screen support이다. 검색해보면 Designed Resolution에 대한 분석글이 몇 개 있긴 한데 만족스럽게 설명이 되어있지 않았기도 하고, 생각을 정리할 필요도 있을 것 같아 포스팅을 결심하게 되었다. 모바일 세상은 굉장히 다양한 해상도가 공존하는 세상인데, 멋진 게임이라면 스케일링을 깔끔하게 해서 해상도가 달라도, 또 종횡비가 달라도 예쁘게 보여져야 하는게 인지상정이다. 문제는 내가 초보라서 그런지, 문제 해결 방법이 쉽게 떠오르지 않는다는 것이다!! 게다가 이 문제가 가장 크게 대두되는 부분이 바로 UI 배치이다. 게임에서 UI는 유저한테 첫번째로 보이는 부분이기 때문에 굉장히 중요하다. (너무 당연한거라서 말하고도 뻘..
진짜 엄청 열심히 자료를 찾아다녔는데, 오늘에서야 잘 작동하는 소스를 찾을 수 있었다. 내 역량을 키워서 직접 수식을 만들 수 있으면 참 좋겠지만, 시간이 부족하다보니;;; 얼른 역량을 키워야 하는데 슬프다. 이 문제를 궁금해 하는 사람이 굉장히 많을 것 같은데 의외로 솔루션이 잘 검색되지 않아서 당황했다. 나 같은 경우에 처음에는 4개 직선의 방정식을 활용하여 타일 좌표를 구하는 방식을 이용했다. (참고 : http://eirenehue.egloos.com/970017) 소스는 다음과 같다. (나 같은 경우 맵 사이즈는 20 * 20, 타일 사이즈는 64 * 32 였다.) bool decisionLineAndPosition( float slope, CCPoint p1, CCPoint p2 ) {// s..
Cocos2d-x는 라이브러리가 몇 가지 나눠져있다. 물리를 담당하는 libBox2D, libchipmunk, 사운드를 담당하는 libCocosDenshion, 기본 cocos2d-x인 libcocos2d, 확장 컴포넌트들이 있는 libExtension, (lua의 경우)스크립팅을 도와주는 liblua, 이 정도이다. 게임을 개발 할 때 만들려는 게임이 무엇인가에 따라 다른데, 보통 물리가 들어가는 게임이 아니라면 물리 라이브러리는 사용할 필요가 없는 라이브러리이다. 하지만 Cocos2d-x에서 프로젝트를 생성해 줄 때 기본으로 이 라이브러리를 넣어서 만들어준다. 그렇기 때문에 처음에 빌드를 할 때면 굳이 쓰지도 않을 라이브러리를 빌드하느라 많은 시간이 소요되게 된다. 물론 딱 처음에만 그렇긴 하지만. ..
보통 프로젝트를 진행할 때 Git이나 SVN과 같은 리비저닝 툴을 쓰기 마련이다. Cocos2d-x 같은 경우에는 Cocos2d-x의 홈 디렉토리에 projects 폴더를 생성하고, 그 안에 자신의 프로젝트 디렉토리를 위치시키면 알아서 cocos2d-x library들의 (윈도우기준)솔루션을 불러와서 잘 빌드할 수 있다. (폴더명을 projects라고 지은 이유는 project-creator 툴을 이용할 경우 projects 디렉토리를 생성하고 그 안에 프로젝트를 생성해주기 때문에 이 툴과 충돌을 일으키지 않게 하기 위함이다.) Lua binding을 이용해서 게임을 개발할 때 아무래도 C++ 단에서 지원해주는 것이 유용할 경우가 많기 때문에 자신의 커스텀 클래스를 함께 Binding해서 사용하게 된다...
"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 오늘 위 링크에 나온 에러를 겪었는데 참 난감했다. 여태껏 프로그래밍 하면서 한 번도 만난 적이 없었던 에러였는데 해결 방법 조차도 난해했기 때문이다. 다른 개발자 분들은 어떤식으로 개..
- Total
- Today
- Yesterday