http://developer.anscamobile.com/content/application-programming-guide-graphics-and-drawing#Removing_Objects_Properly Corona SDK Docs >> Images, Shapes, and Text >> Working with Display Objects and the Stage 문서의 Removing Objects Properly ( 객체들을 적절히 지우기 ) 부분을 번역한 내용입니다. 기기의 자원은 한정되어 있기 때문에 display 객체들을 오래 사용하지 않을 때는 지워주는 것이 중요합니다. 메모리 소모(특히 이미지들)를 줄임으로써 전체 시스템의 성능향상과 불필요한 drawing을 없앨 수 있습니다. 당신이 ..
게임을 만들다 보면 객체를 초기화 해야할 경우도 있고 다시 로드해야할 경우도 있습니다. Lua에선 이걸 module로 해서 처리하죠. require을 하면 모듈의 내용이 루아 캐시에 저장됩니다. 따라서 그냥 로드 하면 안되구요. 캐시에 로드했던걸 지워준 다음 다시 로드 해야 합니다. main.lua local player = require("player") player:printHp() player:damaged() player:printHp() package.loaded.player = nil player = require("player") player:printHp() player:damaged() player:printHp() player.lua module(..., package.seeall) l..
코로나로 하루 하루 프로그래밍하면서 어떤 삽질을 했는지, 어떻게 해결했는데 쓰려고 합니다. 클린업이라는 안드로이드로 만들어져 있는 게임을 코로나로 다시 만드는 작업을 합니다. 1. 버튼 만들기 버튼이 눌러졌을 때의 이미지, 평소의 이미지 두개를 이용하여 버튼을 누르는 효과를 주도록 했습니다. 코로나 자체 예제 (Interface - ButtonEvents)를 참고하였습니다. 이 예제에서 ui.lua를 만들어서 쓰고 있는데, 저는 이 ui.lua의 내용을 확실하게 이해하고 제게 필요한 부분만 빼내어 새롭게 구성하였습니다. 이것을 하면서 느낀 점은.... 그냥 여기서 예제로 나와 있는 것들 그대로 갖다 쓰면 속편하다 입니다 -_- 제 성격상 이게 왜 이렇게 돌아가는지 모르면 쓰기 껄끄러워서 파헤치느라 고생했..
http://lua-users.org/wiki/ObjectOrientationTutorial 이 문서를 번역한 자료입니다. Representation of classes in Lua Lua의 대표 클래스들 Lua has no built-in notion of "classes" for use in object-oriented programming. Lua는 객체지향 프로그래밍을 위한 클래스 개념을 기본으로 내장하고 있지 않습니다. However, we can simulate many features of the classes of other languages by using just the tables and metamethods discussed previously (MetamethodsTutorial)..
http://lua-users.org/wiki/ModulesTutorial 위 링크에 있는 내용을 좀 번역해봤습니다. (참고 : lua-user.org/wiki/는 lua 유저들의 wiki 문서입니다. 괜찮은 내용들이 많이 있어서 참고하시는 것도 좋을 것 같습니다.) Corona를 하는데 local ui = require("ui") ui.newLabel 등 이러한 문법을 쓰길래 대체 이게 뭐하는 문법인가 싶었는데 이 문서를 봄으로써 해결되었네요. 아래 박스 안에 영어와 그 밑에 한글을 쓰도록 하겠습니다. Creating and using Modules 모듈을 사용해봅시다. Modules can be easily created by creating a file a.lua with the following ..
내가 여태껏 게임 프로그래밍하면서 이 게임 저 게임 많이 만들었었는데.... 참 클린업은 내게 많은 의미가 있는 게임이다. 물론 내가 만든 게임들 중에서 재미도 있는 편인 것 같고, 무엇보다 처음으로 만든 게임이라는 점이 나를 향수에 빠지게 하는 것 같다. 특히 게임 자체도 게임 프로그래밍을 처음 배울 때 기초적인 부분을 배우기 좋도록 게임이 만들어져 있어서 새로운 게임 엔진에 대해 공부할 때 많이 제작하는 게임이기도 하다. 처음 클린업 만들었을 때는 이상한걸 넣어서 요상한 게임이 되버렸는데 지금 와서 생각해보면 그 때 게임 만들면서 정말 즐거웠던 것 같다. 왠지 요즘 들어서는 뭔가에 쫓기면서 만드는 듯한 느낌이 들어서 재미가 덜 한 것 같기도 하다. 어찌되었든 나 자신은 나름 재밌는 게임이라고 느끼고 ..
Cocos2d-x를 하다 보면 팩토리 패턴 함수들이 자주 눈에 띕니다. 가장 많이 쓰는 CCSprite를 예로 들어보면 ### cpp static CCSprite* spriteWithTexture(CCTexture2D *pTexture); static CCSprite* spriteWithTexture(CCTexture2D *pTexture, const CCRect& rect); static CCSprite* spriteWithTexture(CCTexture2D *pTexture, const CCRect& rect, const CCPoint& offset); static CCSprite* spriteWithSpriteFrame(CCSpriteFrame *pSpriteFrame); static CCSprit..
01-16 11:39:43.596: I/System.out(17421): Exception : android.os.NetworkOnMainThreadException 이 오류가 갑자기 났다. 일단 결론부터 말하자면 안드로이드 버전 때문에 생긴 오류였다. 게임을 만드는데 게임랭킹을 구현하느라 네트워크를 쓰고 있었는데, 이전 게임에서는 잘 되던게 이번 게임에서는 왜 안되나 하고 봤더니 자세히 확인은 안해봤지만 안드로이드 버전 1.6에서는 네트워크 관련된 작업을 할 때 아무데서나 해도 상관없지만 2.2 버전(내가 2.2 버전에서 안 됬기 때문에. 몇 버전부터인지는 모름)부터는 Main Thread(UI)에서 네트워크 호출을 하면 무조건 error로 간주한다는 것이다. (참고 : http://ironheel.t..
갑자기 궁금해진 것이 있었다. A 클래스에 virtual release() 함수를 만들고 그 안에서 delete this를 한다. 그리고 B 클래스에서 A 클래스를 상속 받고 release() 함수를 오버라이딩 하지 않는다. 그 다음 B 클래스의 객체로 release() 함수를 호출하면 과연 B 클래스를 전체를 지울 것인가(A 포함), B 클래스의 A 클래스 부분만 지울 것인가가 헷갈렸다. 본능적으로 당연히 전자가 답이라고 생각이 들었지만 확실한지 궁금해졌다. #include class A { char *a; public: A() { a = new char[10]; }; virtual ~A() { delete []a; }; void release() { if( true ) delete this; } vo..
안드로이드의 경우엔 다양한 해상도 때문에 골머리를 앓는 경우가 많다. 다들 알겠지만 cocos2d-x로 안드로이드 프로젝트를 만들 때에는 cygwin, ndk 등을 이용하여 안드로이드 프로젝트를 생성하는 create_android_project.bat 파일을 실행하고 이렇게 해서 만들어진 안드로이드 프로젝트에 기존에 만든 cocos2d-x 데스크탑용 소스들을 넣은 뒤 컴파일해서 안드로이드에 포팅한다. 난 cocos2d-x가 C++로 작업하며 윈도우를 띄워서 작업하다가 그대로 안드로이드와 iOS에 올릴 수 있다느 사실을 굉장히 매력적으로 느꼈으나 가장 큰 문제인 해상도 문제를 어떻게 해결해야할지 몰라서 꺼리고 있었는데 열심히 해결 방법을 찾기 위해 노력한 결과 그 방법을 찾아낼 수 있었다. 뭐 현재 해상도..
- Total
- Today
- Yesterday