posted by 최제필 2011.11.28 00:13
이 편만 쓰고 바로 개발하러 가야겠네요^^

==============================================================================================

1. Lua?

루아는 1993년에 Luiz Henrique de Figueiredo Roberto Ierusalimschy와, 브라질 리우 데자네이로에 있는 Pontifical University의 컴퓨터 그래픽 기술 그룹 회원인 Waldemar Celes가 만들었다. 5.0 버전 이전의 루아는 BSD 라이선스와 비슷한 라이선스에 따라 공개되었고, 5.0부터는 MIT 라이선스에 따라 공개되고 있다.

루커스아츠 원숭이 섬으로부터의 탈출 어드벤처 게임과 같은 많은 상업적 응용 프로그램과, 앵그리 버드와 그 변형들과 같은 비상업적 응용 프로그램들이 루아를 사용하고 있다. 루아는 디자인 면에서는 아이콘과 프로그래머가 아닌 사람들이 사용하기 쉽다는 면에서 파이썬과 유사하다.

-출처 : 위키백과


wow 인터페이스에 루아가 접목되면서 화제가 된 적이 있는데 저 같은 경우도 모바일을 하기 전에는 PC 게임에서 


기획자에게 게임 밸런싱을 직접 수정할 수 있게끔 C++에 루아를 바인딩시켜서 제작한 적도 있으며


또 Love2D라는 물리엔진이 있는데 이 엔진 같은 경우에도 루아로 개발되더군요


루아는 디자인 면에서는 아이콘과 프로그래머가 아닌 사람들이 사용하기 쉽다는 면에서 파이썬과 유사하다.
- 공감합니다. 정말 언어가 배우기 쉽고 직관적이여서 사용하기도 쉽더군요

저는 앞으로 예제를 직접 제작하는 형식으로 진행할 예정인데 각 예제에 맞는 루아 문법과

Corona SDK API에 대해 설명해드리려고 합니다.





2. 터치 이벤트 만들기

맨 먼저 루아 개발 환경 셋팅을 해보도록 하겠습니다.

맥 같은 경우에는 자동적으로 루아를 사용할 수 있고 에디터는 BB Edit 추천해드립니다.
윈도우는 http://www.kyrandia.pe.kr/545 여기 들어가시면 자세히 설명되있습니다 (EditPlus or NotePad++ 추천)

바탕화면에 원하는 이름의 프로젝트를 만듭니다. (단순히 폴더만 만드시면 됩니다.)



EditPlus나 BB Edit을 여신후에 위와 같이 타이핑하시고

Ctrl + S (윈도우), Command + S (맥)을 누르신 뒤 config.lua라는 이름으로 방금 만드신 프로젝트 폴더에 저장합니다.

config.lua에 대해 설명해드리면 디바이스 런타임에 대해 설정하는 파일인데

width / height은 디바이스의 넓이와 높이 즉 해상도를 결정합니다.

아이폰3gs 320 x 480 / 아이폰4(레티나) 640 x 960 / 넥서스원(등 일반적인 안드로이드) 480 x 800 /
갤럭시탭 7.7 600 x 1024 / 아이패드 768 x 1024 - 틀린 점 있으시면 댓글 부탁드릴게요

크로스 플랫폼 sdk답게 각 해상도를 지원하기 위해 프로그래머 임의로 해상도를 지원하는 코드가 있습니다.
scale에는 letterBox라는 옵션이 들어가있는데

  • "none" - turns off dynamic content scaling
  • "letterbox" - uniformly scales up content as much as possible, while still showing all content on the screen. This is similar to watching a widescreen DVD on a non-widescreen TV set, except that you can use offstage content to fill the "bleed" areas rather than displaying black bars.
  • "zoomEven" - uniformly scales up content to fill the screen, while preserving aspect ratio. Some content may appear offscreen, if the new screen has a different aspect ratio
  • "zoomStretch" - non-uniformly scales up content to fill the screen. All content will remain onscreen, but it may be stretched vertically or horizontally.
저희는 letterBox와 zoomEven만 기억하도록 합시다. (사실 letterBox가 주로 쓰이긴 하지만요)

letterBox 옵션은 해상도에 맞게 늘려주거나 줄여주는 데 비율이 안 맞을 경우 남는 부분이 검정색 막대로 채워지는 옵션입니다. (쉽게 말하면 와이드 모니터를 생각하시면 됩니다.)

zoomEven은 letterBox와 비슷하지만 비율이 안맞더라도 늘려줍니다(중요!) 만약 320 x 480 기준으로 제작하였다가 안드로이드(480x800)에 넣으시면 양 옆으로 그래픽이 깨져버리는 것을 발견하실 수 있습니다.

제가 추천해드리고 싶은 것은 스마트폰과 태블릿 pc를 전부 지원하고 싶은 경우에는 320 x 480, letterBox 옵션으로 태블릿 pc용으로만 제작할 경우에는 768 x 1024, zoomEvent 옵션을 넣으시면 됩니다.

해상도에 맞게 프로그램 자체에서 늘려주고 줄여준다고 했는데 혹시 그래픽이 깨지지 않을까? 라는 질문을 주실 분이 계실 수도 있는데 config.lua에 imageSuffix라는 부분이 해결해줍니다. 
- Dinamic Scaling이라고 하는데 나중에 해상도를 분석하며 자세히 설명해드리려고 합니다.


그럼 파일 하나를 더 만드신 후에

위 처럼 타이핑 하신 후 main.lua라는 이름으로 저장해주세요.

Corona SDK는 대부분 직관적인 이름의 API로 구성되있는데요 

display.newCircle이라는 함수는 순서대로 x, y, radius라는 인자가 들어가며
오브젝트 객체가 반환됩니다.


저번처럼 Corona Simulator을 실행하신 후에 맥에서는 위 사진처럼 프로젝트를 선택하고 Open하시면 되고

윈도우에서는 시뮬레이터에 main.lua를 드래그 & 드롭으로 끌어다 놓으시면 됩니다.

실행하시고 밑과 같이 빨간 원이 나오면 제대로 되는겁니다.


Lua의 첫 번째 특징으로 C와 JAVA 같이 int, double 등 자료형이 없다는 점입니다.

a = 10
a = "abc"
a = function(value, flag)
자료형을 선언하지 않아도 (선언할 수 없지만) 다양한 값을 집어넣을 수 있어 굉장히 유동적인 프로그래밍이
가능해지며 local이라는 키워드를 붙이지 않으면 자동적으로 전역변수가 됩니다.
(되도록이면 local을 붙이는 습관을 들이는 게 메모리 관리하는 데 좋습니다.)

display.newCircle 함수는 스마트폰(태블릿PC) 디스플레이에 원을 그리는 함수로 앞으로 렌더링을 하는 곳은
display에서 호출한다고 생각하시면 됩니다.
(display.newRect, display.newImage 등등)



위와 같이 타이핑하시고 저장하시고 실행시키면 누르면 색깔이 바뀌고
움직이면 마우스를 따라오고 다시 마우스를 떼시면 색깔이 바뀌는 예제입니다.

다음 화에 이벤트를 만드는 법과 리스너에 등록시키는 법에 대해 자세히 설명드리겠습니다.


E-Mail : myartame@gmail.com
Blog : artame.tistory.com



 
신고
posted by 최제필 2011.11.26 08:33

소개편 쓰고 하루 정도 있다가 1편쓰려고 했는데 잠은 안오고 이렇게 쓰네요

이 글 보시는 분들은 코딩한다고 절대 밤새지 마시고 꼬박꼬박 밥 잘챙겨드시고 주기적으로 운동하세요.... 아니면 저 처럼 됩니다 ㅠㅠ

===============================================================


1. Corona SDK 설정하기

corona가 크로스 플랫폼이 지원되서 맥이 없어도 개발할 수 있게 되있습니다(하지만 아이폰으로 빌드하려면 맥이 필요한 현실....)

저는 드롭 박스를 사용해서 맥하고 윈도우에서 상황에 따라 개발해서 어디에 초점을 둘까 하다가 아무래도 카페에 맥 쓰시는 분들이 많으실 것 같아서 맥 중심으로 설명하겠습니다.

먼저 http://www.anscamobile.com/에 접속해주세요

 
오른쪽 상단에 Download 버튼을 눌러주시구요

 
계정 등록을 끝내시면 자동으로 설치 파일이 설치되고 다 되시면 실행해주세요
(다른 파일들 처럼 계속 동의만 눌러주시면 됩니다)


설치가 끝나시고 Corona SDK라는 폴더를 여시면 아래와 같은 그림이 나오는데요
(윈도우는 c://에 Program Files/Ansca 폴더에 있습니다)
 


Corona Simulator : 가상 디바이스입니다. 루아로 작성 된 소스파일로 실행됩니다.

Corona Terminal, simulator : Corona Simulator와 터미널이 같이 실행됩니다. 개발하실 때는 꼭 이 파일로 실행하세요. sdk에서 발생하는 오류나 값을 터미널에서 볼 수 있습니다.

debugger : 개발에 없어서는 안되는 디버거이며 명령어로 실행됩니다. 나중에 심도있게 설명해보려고 합니다. 


그럼 Corona Terminal을 실행해보도록 하겠습니다.

 
라이센스 관한 내용인데 동의 버튼을 누르시면
이메일과 비밀 번호를 입력하라는 메세지 박스가 나오는데 ansca 사이트에 등록하신 계정을 입력하시면 됩니다.

저 같은 경우에는 라이센스 비용(349$)를 지불해서 트라이얼 경고가 나오진 않지만 아마 이 글을 보고 계시는 분들은 트라이얼 경고가 나올거라 생각되는데요

당황하지 마시고 맨 왼쪽 버튼을 누르시면 됩니다.
(참고로 트라이얼 버전에서는 타 유료 sdk들처럼 기능에 제한을 두진 않지만 빌드할 때 속도가 느리며 디바이스에 설치하면 맨 처음 이 어플은 Corona SDK 트라이얼 버전으로 만들었다는 내용의 메세지 박스가 호출됩니다. - 나중에 어플을 마켓에 올리려면 라이센스 비용을 지불하시면 됩니다.)



그럼 시뮬레이터를 실행해보도록 하죠
아래 그림처럼 예제 하나를 실행해보도록 하겠습니다.

(File - Open 버튼을 누르시고 응용 프로그램 - Corona SDK - Sample Code - Physics - ManyCreats를 선택하시고 오른쪽 하단의 Open 버튼을 누르시면됩니다.)


실행하시면 아래처럼 무수한 물리 오브젝트들이 떨어지는 예제가 실행됩니다.



여기까지 되시면 sdk설정은 정상적으로 끝난거구요 (설정이라 할 것까진 없지만요)

다음 편에서는 Lua라는 스크립트 언어의 간략한 소개와 편집기 그리고 간단한 터치 이벤트 예제를 직접 만들어보도록 하겠습니다.



E-Mail : myartame@gmail.com
Blog : http://artame.tistory.com/


 

신고

티스토리 툴바