Runtime Event로 자주 사용하는 "touch" 이벤트와 "enterFrame" 이벤트를 add, remove하는 것에서 문제를 발견하였습니다. 먼저 소스를 첨부하겠습니다. local enterFrame1, enterFrame2 local touch1, touch2 local release1, release2 local release1 = function() print ("release1") --Not OK --Runtime:removeEventListener( "touch", touch1 ) end local release2 = function() print ("release2") --Not OK --Runtime:removeEventListener( "touch", touch2 ) end lo..
어떻게 보면 당연한 것이 아니냐는 말이 나오는 능력이다. 학교 생활을 하다 보면 매일 매일 보는 친구들과 상호작용(어감이 이상할 수도 있지만)을 매일 하는 것은 어쩌면 당연한 것일지도 모른다. 하지만 학교라는 같은 단체에서의 생활이 끝나면 연락이 점점 끊어져 간다. 나 역시 중학교 때 친했던 친구들이 많이 있었는데 알게 모르게, 그리고 내가 잘못한 부분들에 의해서 친구들과의 연락은 점점 더 줄어들어갔다. 정말 싸가지 없는 것이지만 이 친구들이랑 같이 놀아서 좋을게 뭐가 있겠냐는 생각에 의해 그랬던 부분도 없잖아 있었고 얼굴을 안 보게 되니까 점점 더 연락이 끊어져 가는 것이 가장 컸다. 오늘 같은 팀 형, 누나들과 카페에서 참 오래 이야기를 나눴는데, 주로 화두된 것이 사람들과의 의사소통이었다. 한 형은..
현재 Lua로 프로그래밍을 하고 있는데.... 골치덩이 버그를 만났다. 근 1시간 30분 쯤을 붙잡고 있었던 것 같다. Lua는 보통 require 하는 방식으로 구동이되어지는 것 같은데 require을 하면 소스들이 Lua Cache에 저장된다. (앞에서 살펴본 적이 있음.) 이 때문인지는 확실히 모르겠는데.... 오늘 버그가 발생했는데 문제의 원흉은 전역 변수를 생성과 동시에 초기화하는데에 있었다. 시간과 관련된 변수였는데, 이 변수가 초기화가 제대로 안되서 씬 변경 함수가 두 번 불려져서 특정 씬을 처음에는 정상적으로 표현하는데 다음에 다시 그 씬으로 가면 씬을 표현하지 못하고 바로 다음씬으로 넘어가는 것이다. 시간과 관련해서 씬을 변환해주는 방식이었는데 시간과 관련된 변수가 잘못되어 있으니......
저는 게임프로그래밍을 배우는 학교에 다니고 있습니다. 따라서 주변에 게임 프로그래밍을 하는 친구들, 후배들이 있습니다. 저희 학교에서는 왠지는 모르겠으나 DirectX를 많이 합니다. 그리고 이 DirectX는 엔진 개념이 아니라 라이브러리 개념인지라 사용자에게 더 친숙하고 편리한 그런 구조는 아닙니다. 저 역시 마찬가지였는데 게임을 만들다보면 자신에게 적합한 간단한 엔진 혹은 프레임워크를 제작하게 됩니다. DirectX를 썼다고 앞에서 말씀드렸었는데 이 DirectX의 메소드들과 게임에 필요한 부분들을 필요할 때 쉽게 쓸 수 있도록 환경을 구성해두는 것이죠. 이러한 간단한 엔진 혹은 프레임워크를 만들다보면 친구들은 점점 더 '엔진 메이커'가 되어갑니다. (모두 그렇다는 뜻은 아닙니다.) 그 친구들은 친..
어떤 게임이던지 훌륭한 이펙트는 게임의 재미요소 중 하나로 작용합니다. (그렇다고 위의 이펙트가 멋지고 훌륭한 이펙트라는 것은 아닙니다. 제가 처음으로 친구와 게임 만들면서 손에 쥐게 된 이펙트니까요.) 이런 이펙트들은 파티클을 파티클 엔진을 통해서 만들어낼 수도 있지만 역시 2D 게임에서 가장 많이 사용하는 방법은 위의 사진처럼 여러 장의 사진을 빠르게 교체하여 보여주는 방식입니다. 이것을 스프라이트 애니메이션(Sprite Animation)이라고 합니다. Corona SDK에서도 마찬가지로 스프라이트 애니메이션을 지원하기 위한 API들이 있습니다. Sample Project들을 보면 알 수 있는데요. (Horse Animation, Jungle Scene) 여기서 나오는 애니메이션들은 모두다 마찬가지..
사진 출처 : http://eftkorea.net/zbxe/90196 '자유로움이 진정한 자유로움을 주는가.' 어떻게 보면 상당히 모순된 말일 수도 있는데, 내가 하고자 하는 말을 쉽게 이해하기 위해서는 Lua를 예로 들면 좋을 것 같다. Lua로 프로그래밍을 하다보면 자주 겪는 일인데 너무 자유로운 문법 때문에 도리어 위축되는 느낌을 갖곤 한다. 나만 그렇게 생각하는 것은 아닌 것이, 다른 사람들에게 이런 이야기를 하면 다들 수긍하기 때문이다. 오히려 C++로 코딩을 할 때에는 제한된 문법 속에서 다양한 활용을 통해 강력하고 아름다운 코드가 나오기도 한다. (Lua로 코딩하면 스파게티 소스가 나온다는 것은 아니다. 분명 해당 언어에 대해 해박한 사람이라면 멋지고 아름다운 코드를 만들어낼 수 있을 것이다..
Corona에는 Easing이라는 편리한 수치 반환 객체가 있었네요. 저는 잘 몰랐어서.... cocos2d에는 있는 action이 없다고 징징댔는데 이 easing이라는걸 오늘 제대로 써보면서 그런 생각이 팍 죽었습니다. 물론 cocos2d의 action 체제를 절대 무시하는 것은 아닙니다. cocos2d::action은 여러가지 액션들을 충분한 상속관계를 통해 유연하게 구현해놓았습니다. 다만 Corona에도 그런 것을 편리하게 구현할 수 있게 도와주는 API가 있다는 것이지요. Easing에 대한 내용은 시뮬레이터의 easing 샘플을 직접 보시는 것이 더 효과적일 것입니다. 이 글에서는 easing과 transition을 이용하여 어떻게 팽창과 수축을 반복하는 로고를 구현하는지에 대한 언급만을 하도..
그냥 소스만 주는 것은 좋지 않은 것이라는 걸 저도 알고, 다른 분들도 알고 있다고 생각합니다. 하지만 뭔가를 이해하는데 가장 좋은 방법도 소스를 보는 방법입니다. 그래서 일단 소스를 첨부하고 시작하도록 하겠습니다. 제가 만든 애니메이션 클래스는 한 파일 안에 여러 애니메이션 이미지가 들어 있는 이미지를 이용하는 클래스인데요. 일단 간단하게 구현하기 위해 세로로 여러 줄을 지원하진 않고, 가로로 한 줄만 지원하도록 하였습니다. (만드는 게임에 많은 애니메이션을 요구하는 것이 아니라 이렇게 만든 부분도 있습니다. 보통 만들 때에는 프레임 당 가로, 세로 길이를 넣어서 java에서 문자열을 split 하듯이 그림을 2차원 배열로 만들어서 각각의 인덱스에 해당하는 프레임을 뽑아오더군요.) 1. 팩토리 패턴 만..
- Total
- Today
- Yesterday