본문 바로가기

개발64

가장 기본적이고 간단한 게임 충돌검사 게임을 만들때 가장 먼저 봉착하는 막막함이 충돌검사이다...적어도 나는 그랬다ㅎㅎ 물론 좌표이동 할때 곡선이동도 만만치 않지만ㅎㅎ충돌검사는 케릭터의 형태에 따라 여러가지로 검사를 해야 하기 때문에 그 숫자만큼이나 더골치가 더 아프다... 어쨋든 나는 사각, 마름모, 원, 선, 픽셀 충돌검사를 나름 내 식으로 만들어서 사용하고 있고 지금도 계속 개선중에 있다ㅎㅎ 물론 사각 대 마름모, 마름모 대 원... 이런식으로도 사용하고 있다 여기서는 이중 가장 간단하고 기본이 되는 사각 충돌검사를 보겠다 public boolean checkRect(Rect rect1, Rect rect2) { if(rect1.left = rect2.left) { if(rect1.top = rect2.top) return true;}.. 2014. 5. 20.
[엔진없이 게임만들자] 자유자재로 오브젝트 이동시키기 유니티나 코코스 엔진 없이 게임을 만드는 첫번째 시간! 물체 이동시키기~ 즉, 오브젝트 타켓팅 기법~ 참고로 혼자서 독학하여 터득한 내용이니 기존의 기법과 다소 차이가 있을 수 있다ㅎㅎ하지만 이론만 늘어놓는 내용이 아닌 내가 직접 만들어 출시한 앱에 사용되는 기법이다 일단 오브젝트를 이동시키 위해서는 방향 및 속도를 정하는 타켓팅 단계와타켓팅 정보에 따라서 오브젝트를 이동시키는 액션 단계.. 두단계가 필요하다.(타켓팅, 액션 구조는 내가 나름 만든 용어ㅎㅎ 또한 이구조는 이동뿐만 아니라 크기변화, 투명도변화 등에서도 같은 구조를 가진다) 먼저 타켓팅은 오브젝트를 이동시키는 명령어라 할 수 있다. 즉, 이동을 시작하는 시점에 넣으면 된다.그리고 액션은 좌표이동을 지속적으로 해야 하기 때문에 게임루프에 넣어.. 2014. 4. 14.
안드로이드에서의 가장 간단하고 확실한 칼만필터(Kalman Filter) 테스트 얼마 전 아는 지인을 통해 칼만필터(Kalman Filter)라는것을 알게 되었다. 오래전 기울기센서를 이용한 "운전좀하냐" 라는 게임을 만들때에 자동차가 엄청 흔들리고 불안정해서 온갖방법과 테스트를 해보았지만 결국 만족스러운 결과를 못내고 출시해야 했다ㅠㅠ 그런데 우연히 지인을 통해 알게된 칼만필터를 써보니!! 한방에 해결이 되는게 아닌가ㅎㅎ 물론 좀더 손을 봐야 할것 같지만 어쨋든 예전소스랑 칼만필터를 결합하니 제법 만족스런 결과를 얻어냈다 그래서 여기에 직접 칼만필터의 위력을 보여주고자 한다... 우선 칼만필터란 잡음같은것을 없에는 기법이다. 기울기센서에서는 민감한 센서에 의해 아주작은 손떨림에도 반응하여 값이 흔들리는 현상을 보정해 준다 기본원리는 간단하다. 기울기센서 값을 계속 저장해 두었다가 .. 2014. 3. 17.
안드로이드 앱 런칭후 데이터베이스 변경시 주의할점 단말기의 로컬 데이터베이스를 사용한 앱을 개발하다 보면 한번쯤은 겪게 되는것이 있다 바로 출시후 테이블 또는 필드추가, 내용추가변경이다 나도 처음에는 별생각없이 출시했다가 업데이트를 해야 하는데 디비를 바꾸어야 하는 상황이 있었다. 그래서 다 아시다시피 생성자에서의 버전을 전숫자보다 크게 넣고 onUpgrade() 에서 업데이트를 했다... 그런데 디비 버전이 한번이 아니라 여러번 바뀔경우 만약 사용자가 디비 1버전의 앱에서 사용하다가 오랬동안 사용을 안하고 곧바로 디비 3버전의 앱을 업데이트 받아 사용할경우 2버전의 디비변경사항도 적용해주어야 함을 늦게서야 깨달았다ㅎㅎ 당시에는 분명 디비 변경을 해줫는데 왜 그러나... 하고 엄청 심각했었는데 원인을 알고 나니 좀 허무했다ㅎㅎ 어잿든 아래와 같이 스위치.. 2014. 1. 20.
페이스북 안드로이드 sdk로 담벼락 글쓰기... 정리 2가지 페이스북 안드로이드 sdk로 어플을 개발하면서 제가 쓰던 글쓰기 코드를 정리해 보았습니다~ 페이스북 타임라인에 글을 올릴때 다음과 같이 크게 2가지로 분류된다 1. 이미지 및 동영상 올리기2. 링크글 올리기 페이스북 안드로이드 sdk를 이용할때도 이 두가지 분류에 따라서 사용법이 달라진다 1. 이미지 및 동영상 올리기 List permissions = session.getPermissions();if (permissions.containsAll(mPermissions)) { AsyncTask task = new AsyncTask() { @Overrideprotected Response doInBackground(Void... voids) { Bundle param = new Bundle(); //이미지 .. 2014. 1. 9.
스레드에서 View 변경시 Only the original thread…. 에러 대처법 게임을 만들다 보면 스레드를 자주 이용하게 된다. 그러다보면 Only the original thread that created a view hierarchy can touch its views 라는 에러를 맞다들이게 되는 경우가 반드시 찾아온다... 이 에러는 말그래로 오리지널 스레드... 즉, 앱 실행시 자동으로 생성되는 메인 스레드외에 직접 만든 스레드로 뷰위젯등을 컨트롤할려고 할때 발생한다... 예를 들어 TextView의 setText()같은 것이다... 나도 처음 게임을 만들 당시 이것 때문에 몇일을 고민했던 적이 있었다... 그러다 찾아낸것이 View의 Post()였는데 이방법은 특정사항에서는 작동이 안되는 문제가 있었다... 결국, 우연한 기회에 Handler 방식을 알게되었는데 역시 다른.. 2013. 11. 25.
php의 json_decode에서 null이 나올경우 살펴봐야 할점 php 5.2.1 이상이면 json이 기본으로 내장되어 있죠... 그중 json_decode 함수는 json문자열을 php배열을 바꾸어주는 기능을 합니다... 그런데 변환이 잘 되다가도 가끔씩 배열 대신 null이 나오는 경우가 있는데요... 제가 직접 php로 웹서버를 제작중에 null이 발생했던 경우는 다음과 같이 2가지 였습니다... 첫번째는 json문자열에 \"이 포함되어 있을때입니다...예를 들어 {\"name\":\"youngjin\"} 문자열을 json_decode로 바꾸고자 할때 null이 발생합니다...이경우는 클라이언트나 다른 서버에서 json문자열형태로 파라미터값을 받을때 종종 나타납니다... 해결책은 당연히 다음과 같이 \"를 "로 바꾸어주면 되겠죠^^ function getJson.. 2013. 11. 11.
배경 Layout을 손가락 터치로 따라 움직이게 하는 방법 화면을 손가락으로 터치하여 따라 움직이게 하고 싶을때는 아래와 같이 하면 된다. 이것은 내 작품중에 "지하철 어디있니" 라는 앱에서 배경을 스크롤 시킬때 사용하는 방식인데...해당부분만 따로 보기 좋게 정리한것이다. private LinearLayout mBgLayout;private int mTouchDownX, mTouchDownY; @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main); mBgLayout = (LinearLayout)findViewById(R.id.BgLayout);}@Overridepublic boolean onTou.. 2013. 10. 8.
큰 배경이미지 사용시 OutOfMemoryError의 확실한 해결법 안드로이드 앱을 만들때 배경이미지를 넣어야 하는 경우 OutOfMemoryError에 직면하는 경우가 많다.. 특히 사이즈가 큰 배경이미지 일수록... 자주 발생한다... 즉, OutOfMemoryError는 이름처럼 이미지를 로딩할때 메모리가 부족해서 발생하는것이다... 이럴경우 그원인이 되는 이미지 사이즈 자체를 줄이거나 로딩할때 아래와 같이 사이즈를 줄여서 불러오면 일단 해결은 된다. BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.opening, options); .. 2013. 10. 4.
쿼츠2D 에서의 문자 출력 Quartz2D 기반에서 기본적인 방법으로 문자를 출력하려 하면 한글이 출력되지 않는다.뿐만 아니라 외부폰트도 적용하기 힘들다. 하지만 다행히 해결책은 있다. CoreText 를 이용하면 되는것이다. 먼저 CoreText framework를 등록하고 CTFrameRef를 만들어 CTFrameDraw()로 출력하면 된다. 나는 아래와 같이 쓰기 편하게 좌표, 정렬, 크기, 색, 폰트를 매개변수로 하는 함수를 만들어 사용하고 있다. #define ALIGN_LEFT 0 #define ALIGN_RIGHT 1 #define ALIGN_TOP 2 #define ALIGN_BOTTOM 3 #define ALIGN_CENTER 4 - (CTFrameRef)getFrameText:(NSString *)text :(C.. 2013. 9. 4.