Devlopment

    COCOS2D Android에서 드래그 앤 드랍(Drag & Drop)

    음, 안드로이드에서 COCOS2D를 쓰면 쓸수록 삽질을 많이 한다. 특히나 아이폰에 맞춰 만들어진 것을 안드로이드용으로 포팅하면서 많은 문제가 아직 남아있다는 걸 느낀다. 지난 게임 관련 포스팅을 할 때 COCOS2D 안드로이드 엔진에 대한 문제를 몇 가지 적어놓았다. 이번에는 드래그 앤 드랍을 안드로이드용으로 하는 소스를 써보려 한다. 아래 소스를 참조하자. [1]을 보고 만든 것이다. Objective C를 자바 형태로 센스있게 바꾸면서 작업했다. Objective C에 있는 메소드나 클래스명이 거의 그대로 자바 엔진에 있었다. 메소드명이나 파라미터 형태가 조금 다른게 몇 개 있었지만 나름 잘 짜여져 있었다. 다만 몇 가지 문제가 있었는데. 문제 1. 아이폰에서는 ccTouchesMoved(드래그중 ..

    Java에서 JNI를 써서 핑 프로그램을 구현하는 이유

    자바로 된 핑 프로그램에 대해 분석하다가 이상한 점을 발견했다. JNI를 이용해서 핑 프로그램을 구현한 것이다. 웹에서 찾다보면 자바로 구현한 소스도 있는데, 왜 굳이 JNI를 썼을까 알 수가 없었는데 책을 찾아보다가 그 이유를 알게 되었다. 핑 프로그램은 ICMP(Internet Control Message Protocol)을 사용하는데, ICMP 패킷은 SOCK_RAW형식의 소켓만을 지원한다. 이런 이유로 자바에서는 제대로 된 핑 프로그램을 구현할 수 없다. 결국 대부분의 자바 네트워크 책에서 소개되는 핑 프로그램은 핑 프로그램을 흉내를 내는것 뿐이다. SOCK_RAW의 경우는 좀 더 높은 수준의 제어를 하고 싶은 사용자를 위한 것으로, 패킷(Packet)을 전달할 때 패킷이 지나갈 경로까지도 지정할..

    [안드로이드 게임 개발] 1. 시작과 시행착오

    처음 안드로이드에서 게임을 개발해보고자 마음 먹었던 것은 2011년도 10월쯤이었던 것 같다. 처음 게임을 만들었던 것은 초등학교 시절 RPG쭈꾸르, 95, 2000로 만들었지만 정작 프로그래머가 된 이후에 스스로 제대로 된 게임을 만들어 본 적은 없었다. 나는 프로그래머지만, 게임 프로그래머가 아니다. 프레임워크나 애플리케이션단을 주로 개발하기 때문에 게임을 어떻게 개발하는지도 모르고 게임업계에 종사하고 있지도 않다. 그러나 게임을 만드는 것은 프로그래머의 로망이 아닌가 싶다. 게임을 만들기로 마음 먹은 이후 우선은 안드로이드로 만들기로 했다. 시작하는데는 아이폰이 더 좋을것 같지만, 안드로이드를 선택한 이유는 맥북이 없다는 점과 내가 Java나 안드로이드 개발 스킬이 뛰어나고(?) GIS 안드로이드용..

    Cocos2d를 이용하영 FPS 출력하는 기본 소스

    요즘 COCOS2D를 공부하고 있다. COCOS2D 자체가 아이폰용에 맞춰 개발된 것을 안드로이드용으로 추가로 개발된 것이기에 안드로이드용 관련 자료가 별로 없다. 그래서 나도 아이폰용 강좌나 자료를 보고 공부했다. 기본적인 개념을 알고나면 다른 엔진에 비해 쉬운 것 같다. 그래서 AndEngine을 쓰려고 하다가 포기하고 자체 엔진을 개발하고 있던 나는 일단 COCOS2D를 이용해서 개발하기로 결심했다. 참고로 여기 좋은 포스팅이 많이 있습니다. http://self-toeic.tistory.com/ 아래는 FPS를 재는 기본 소스이다. 주석에서 나오는 것처럼 FPS를 재려면 asset디렉토리에 fps_images.png가 있어야 한다. 물론 엔진 jar파일도 당연히 포함시켜야 하고 말이다. packa..

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at write.php:1) in session.inc on line 2

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at write.php:1) in session.inc on line 2 오랜만에 PHP 코딩을 하다가 위의 에러를 보았다. 세션을 다른 곳엥서는 잘 쓰다가 왜 이럴까하고 찾아보았다. 문제1. File Encoding 문제- (http://cybercafe.tistory.com/tag/Cannot%20send%20session%20cache%20limiter%20-%20headers%20already%20sent%20(output%20started ) 문제 2. 공백 문제. 대부분 이 ..

    안드로이드(Android) OnGestureListener 사용법

    OnGestureListener를 사용해보려고 구현을 하였는데 로그를 찍어보니 호출이 되지를 않았다. 어떤 문제인지 찾다가 곧 이유를 알게 되었다. 이 인터페이스는 메소드를 구현된다고 호출이 되지 않는다. 이 인터페이스를 사용할 경우 같이 사용해야 하는 것이 GestureDetector라는 것이다. 이 GestureDetector를 멤버 함수로 갖고 있으면서, onTouchEvent의 발생시에 GestureDetector를 통해 리턴을 해줘야 OnGestureListener의 메소드들이 올바로 호출이 된다. 아래는 참고 소스이다. import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import..

    안드로이드에서 OpenGL ES를 사용하는 GLSurfaceView의 기본 골격

    이전 포스팅에서는 기본적인 View와 SurfaceView를 사용하는 기본 구조에 대해 포스팅했다. 그러나 OPENGL ES를 사용한다면 GLSurfaceView를 사용해야 하며 이 구조는 이전과는 또 상이하다. import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundle; import android.view.Window; public class Main extends Activity { private GLSurfaceView mView = null; private MainRenderer mRenderer = null; @Override public void onCreate(Bundle savedInst..

    안드로이드 View, SurffaceView를 사용하는 기본 골격

    1. View View는 onDraw를 통해 그림을 그려주고 invalidate를 호출하면 다시 onDraw()가 호출된다. 하지만, 안드로이드에서는 invalidate()를 호출하면 에러가 난다. Handler를 사용하거나 postInvalidate()를 호출해야 한다. import android.content.Context; import android.graphics.Canvas; import android.view.View; public class MyView extends View{ public MyView(Context context) { super(context); // invalidate postInvalidate(); } @Override protected void onDraw(Canvas..

    Java 로그 기록 라이브러리 - Log4j

    기존에 Java 로그를 남기면서 때로는 그냥 남기기도, log4j를 사용하기도, 직접 로그 클래스를 만들어서 활용하기도 했는데 log4j가 제일 좋은 것 같고, 기술서나 전문가들이 모두 log4j를 추천한다. 오픈 소스 프로젝트로서 알고 있던 것보다 그 내부 기능이 어마어마하다. * 라이브러리 및 설정파일 라이브러리는 자바 프로젝트의 라이브러리 경로에, log4j.properties는 소스위치에 있으면 컴파일 및 실행시 클래스 파일에도 복사되어 실행된다. Reference [1] log4j (http://logging.apache.org/log4j/1.2/download.html) [2] log4j download (http://logging.apache.org/log4j/1.2/download.html..

    안드로이드 게임 엔진

    안드로이드 게임 엔진이 많다. 전부터 찾다보니 더 생기기도 하고 중단하기도 한 엔진이 있는데 이중에서 AndEngine라는게 제일 괜찮아 보여서 이걸 조금씩 보고 있는 중이다. AndEngine Refenence [1] AndEigine (http://www.andengine.org/forums/) [2] AndEngine 분석글 (http://sgap.springnote.com/pages/7399251) [3] Tiled 이용글 (http://togalaxy.tistory.com/4) [4] AndEngine 설명 링크글 (http://blog.naver.com/badskyblood?Redirect=Log&logNo=30113071726) [5] AndEngine Tutorial list (http:/..