'앱'에 해당되는 글 1건

  1. 2011.11.28 Corona SDK로 iOS & Android 동시에 개발하기 #2편
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



 
신고

티스토리 툴바