AIR 2.7이 "4x faster"라는 멘트로 출시됐다.

여기에 내가 미심쩍게 본 부분은 바로 뒤에 붙은 in CPU mode 라는 단어였다.

그래서 퍼포먼스 테스트를 진행해보았다.

아마 예상을 하기로는 이렇게 예상할 것이다.

AIR 2.7 GPU > AIR 2.7 CPU >= AIR 2.6 GPU > AIR 2.6 CPU

결과는 좀 당황스럽게 나왔다 -_-a



1. AIR 2.6 CPU Mode



 - 9~11 fps



2. AIR 2.6 GPU Mode



 - 16~19 fps



3. AIR 2.7 CPU Mode



 - 20~24 fps



4. AIR 2.7 GPU Mode



 - 18~22 fps



직접 아이폰4에 넣고 돌려본 결과

AIR 2.7 CPU > AIR 2.7 GPU >= AIR 2.6 GPU > AIR 2.6 CPU

순서대로 나왔다.

AIR 2.7 CPU 모드가 GPU 모드보다 약 2~3 fps 더 나왔던 것이다.

-_-a

뭐 이런 결과가...



코드는 아래와 같고 모두 동일한 코드로 실험했다.



어떻게 받아들여야할지 좀 난감하고

더 많은 테스트가 필요할 것으로 보인다 -_-a





p.s) 아오.... 이 unpredictable 한 어도비 같으니....

저희 회사에서 서비스중인 아쿠아스토리에

데스크탑에서도 상황을 볼 수 있는 알리미를 서비스하고 있었습니다.

물론 AIR로 개발되었고

저 혼자 얼렁뚱땅 만든거라 그럭저럭 서비스를 시작했습니다.

생각보다 반응이 무지 좋았었고

꾸준히 유저들이 사용하는 것을 목격했습니다.

그래서 아이폰과 안드로이드 앱으로 개발해보면 어떨까라는 생각했고

때마침 Adobe CS 5.5가 출시되면서

모바일 앱을 개발하기 매우 쉬워졌었습니다.






그래서 시작했죠.

All Devices 라는 단어를 쓰고 싶었습니다.

그리고 Flash로 가능하다는 걸 경험해보고 싶었습니다.

솔직히 퍼포먼스는 크게 기대하지 않았습니다.

(애니팡때 이미 경험해봤기 때문에 대충 감이 오죠 ㅎㅎ)



결국 아이폰 앱과 안드로이드 앱이 라이브 되었습니다.

그리고 네이트 앱스토어를 통해서 모바일 웹도 서비스되었습니다.

모두 하나의 swf로 부터 나온 것입니다.

해상도나 사이즈로부터 자유로울 수 없었지만 Flash로 이정도까지는 가능하다는 것을 직접 한번 경험해보시기 바랍니다.

링크는 하단에 붙이겠습니다.



개발 후기

아마 직접 개발해본 경험을 듣고 싶어하시는 분들이 계실것 같아 몇글자 적어보겠습니다.

힘든것도 많았고 의외로 괜찮았던 부분도 있었습니다.


의외로 편했던 점.

1. iOS가 디버깅을 지원했다는 것.

 저는 텍스트필드 하나를 스테이지에 붙여놓고 거기에 찍어가면서 테스트했었는데

기본으로 Flash Builder 4.5에서는 디버깅을 하면

디버깅용으로 ipa를 패키징 후 원격 디버깅이 대기상태로 들어갑니다.

iTunes에 설치하고 동기화후 앱을 실행하면 자동으로 디버거를 연결합니다.

이거 정말 편리하더군요. (break point, error stack tracing 다 됩니다.)

개발하면서 압권이었던 부분이었습니다.


2. 안드로이드는 디버깅이 기본.

 안드로이드는 그냥 F11 누르면 폰에서 걍 돌아갑니다.

디버깅도 마찬가지구요.

패키징도 겁나 쉽습니다 -_-;;;

개발은 지존입니다. ㅋ


※ 불편한 점

1. 당근 아이폰은 패키징 시간과 설치 과정이 짜증납니다.

디버깅 한번에 최소 3분입니다 ;;;

패키징하고 아이튠즈에 깔고 실행하고... 못해도 3, 4분입니다.

익숙해지면 그럭저럭 편해지지만 처음엔 엄청 짜증납니다.

가뜩이나 에러도 여기저기 터지는데 디버깅하는데 3, 4분씩 걸리면 속터지죠...

근데 어쩔수 없습니다 -_-a

방법이 없는걸요... 흥...


2. Fragmentation 문제.

파편화, 즉 디바이스들마다 해상도와 성능이 다르기  때문에 앱이 제각각 따로 분리되어야하는 현상때문에 "파편화"라고 합니다.

아이폰 앱은 별개라고 생각한다면 큰 오산입니다.

기본적으로 iPhone 3와 iPhone 4는 원칙적으로는 둘 다 320x480입니다.

하지만 실제로는 iPhone 3는 320x480이고 iPhone 4는 640x960으로 개발해야합니다.

안드로이드는 WVGA 권장해상도인 480x800으로 개발한다고 하더라도

디바이스마다 모두 제각각입니다.

난리납니다.

그래서 이번 알리미는 RESIZABLE 하게 만드는게 핵심이었습니다.

사실 Auto Orientation도 지원되지만 안정성을 위해서 잠시 빼놓고 배포했습니다.

여기서 중요한게 아이폰입니다.

안드로이드는 그냥 해상도 자체가 달라서 그냥 늘려주기만 한다손치더라도

아이폰은 3와 4가 실제로는 사이즈가 같지만

픽셀은 차이가 크기 때문에

마냥 늘려주기만 한다면

아이폰4에서는 깨알같이 나오고 아이폰3에서는 대문짝만하게 나옵니다. (상상가시죠?)

스크린사이즈는 같은데 해상도가 다르기 때문에 무조건 늘려주기만하면

전혀 다르게 보입니다.

그래서 제가 선택한 방법은 iPhone 3에서는 기본이 되는 DisplayObject를 scaleX, Y를 0.5로 하고

모든 stageWidth, Height를 *2씩 해서 적용했습니다.

이게 가능했던 이유가 "RESIZABLE"하게 만들었기 때문입니다.

Resizable은 모바일에서 필수인것 같습니다.


3. 안드로이드 마켓의 불편함, 애플 앱스토어의 맥북 필수 -_-

안드로이드는 등록상 오류가 나더라도 에러문구가 디테일하지 못합니다.

일례로, 프로모션을 하지 않는데 프로모션용 문구를 넣으면 어디가 에러인지 알려주지않고 넘어가지도 않습니다.

마치 버그같죠...

그리고 등록되더라도 앱으로 가는 링크도 제공해주지 않고

메일로 알려주지도 않고 그냥 지켜보고 있는 수 밖에 없습니다.

검색도 잘 되지 않습니다.

우리것만 그런진 모르겠지만 앱이름으로도, app id로도, 개발사 이름으로도 검색이 되지 않더군요. 흠...

그리고 애플 앱스토어는 언제부터 바뀐지 모르겠는데 맥북에 xCode를 설치하면 사용할 수 있는 Application Loader가 있어야만

앱을 등록할 수 있도록 바뀌었습니다.

이걸 모르고 아이튠즈 커넥트에서 한참을 뒤적거렸었네요 -_-a

나름 편하긴한데 어이없긴 매한가지입니다.


스마트폰 앱 개발할 때 유의점

1. 리사이즈는 선택이 아니라 필수.

Resizable하게 만드는 건 모바일 앱이든 모바일 웹이든 필수입니다.

이건 더 할말이 없습니다. 그냥 필수입니다.


2. 인증서 관리 잘하세요.

인증서를 잃어버리거나 비밀번호를 잃어버리면 엄청 짜증납니다.

애플은 그나마 개발자센터에서 다시 받으면 되지만

안드로이드의 개인 인증서를 잃어버리면 -_-a

암호를 찾을수도 다시 받을수도 없습니다.

대박이지요...

관리 잘하시길 바랍니다. (전 svn에 올려놨습니다;;;)


3. 리소스 관리.

저희 사내 프레임웍에는 http 이미지를 호출할 경우 이미지를 받아서 로컬에 저장한 다음

그 다음부터는 로컬에 있는 이미지를 로드하는 방식을 활용하고 있습니다.

이는 모바일의 트래픽 특성상 필수입니다.

속도도 중요하지만 트래픽을 최대한 줄이는게 필요합니다.

이미지를 ipa에 다 포함하는 것도 좋지만

그럴경우 이미지가 추가되면 업데이트를 쳐줘야 한다는 점에서 선택을 잘 해야될 것 같습니다.


4. 이미지를 잘 준비하자.



아이폰은 대표이미지가 필요합니다.

앱이 실행될 때 보여지는 이미지인데

흔히들 Default.png 만 생각하기 쉽습니다.

하지만 이 이미지는 iPhone 3GS, iPod 3세대 이하 용이고

Retina Display에서는 640x960 사이즈의 이미지가 필요합니다.

이 이미지는 Default@2x.png 라는 이름으로 같이 include해야합니다.

iPad는 Default~ipad.png 라는 이름으로 include해야하고

그 밖에도 iPad는 4방향으로 모두 눕힐 수 있는데

이때마다 각 방향으로 실행될때의 이미지를 모두 따로 만들어줄 수 있습니다.

Default-Portrait~ipad.png
Default-PortraitUpsideDown~ipad.png
Default-LandscapeLeft~ipad.png
Default-LandscapeRight~ipad.png

많아요 많아...

그리고 아이콘도 많습니다.

29x29, 36x36, 48x48, 57x57, 72x72, 114x114, 512x512 헥헥....

저거 준비하는 것도 일입니다....

미리미리 고려해놓고 있지 않으면 개발 다 끝나고 스트레스 엄청 받습니다.

저 뿐입니까? 스샷도 준비해야지요, 설명도 써야지요, 영어로도 해야지요, 유료라면 결제 정보도 넣어야지요, 하유...

준비 단단히 하고 하세요.. 개발도 쉽지 않습니다만 그외에도 할게 무지 많아요.


5. OAuth

외부 API를 활용하려면 OAuth가 필수입니다.

xAuth를 지원하는데도 있지만 대부분 deprecate되고 있는 실정입니다.

AIR 2.6부터 StageWebView를 활용할 수 있는데

이걸로 OAuth를 잘 활용해야합니다.

연습뿐이 없습니다.

이건 딱히 OAuth마다 활용법이 정해질 수 없기 때문에 해보는 수 밖에 없습니다.

그저 주의할 점은 하나입니다.

StageWebView와 Flash가 통신할 수 없다는거 -_-

무슨 말이냐면 Javascript나 ExternalInterface로 통신할 수 없다는 이야기입니다.

오로지 감지할 수 있는 거라곤 location이 변하는 것 뿐입니다.

그래서 마지막으로 꼭 특정 주소로 원하는 값을 GET으로 담아서 쏴주면

그걸 받아채는 수 밖에 없습니다.

(p.s 혹시 더 좋은 방법 아는 분 있으시면 댓글 달아주시면 감사하겠습니다.)

가능은 해졌지만 손쉽게 사용하기는 힘든 돌덩이가 굴러온 셈입니다.



이상 개발 후기를 적어보았습니다.



결론은 이렇습니다.

가능은 하지만 쉽지는 않습니다.

스마트폰의 많은 기능을 사용할 수 있지만 만만찮은 테스팅과 노하우가 필요합니다.

앱 이외에 준비할 것도 많구요.

Possibility 하나에 도전해보실 분들에게는 추천합니다!!!

왜냐구요?


재밌거든요 ㅋ




애플 앱스토어 : http://bit.ly/jXklMj
 - iPhone 3GS, iPhone 4, iPad

안드로이드 앱스토어 : http://bit.ly/jaDkj1
 - All Android Phones

모바일 웹 : http://bit.ly/lJ8ONe
 - Android Browser

그 밖의 원래 서비스중이던 데스크탑 위젯 : http://bit.ly/iArpuX

아쿠아스토리(싸이월드 계정 필요) : http://appstore.nate.com/Apps/Canvas?apps_no=898

p.s) iPhone 3GS는 버그가 있어서 재승인 넣어놨어요 ㅋ



For the Better.
2.

나는 소셜 게임을 만든다.

플래시로.

요즘은 플래시로 할 수 있는 것도 많아졌다.

아이폰 앱도 만들고 안드로이드 앱도 만들고

할일이 무지 많아졌다.



회사가 커져가면서 다른 직군은 다 늘어났는데

유독 플래시 개발자만 못 뽑고 있다...

신입도 공고했고 경력도 공고했는데

아직까지 뽑은 사람이 없다 ㅠ.ㅠ



이 와중에 친한 동생이 나에게 물었다.

"형네 회사 갈라면 뭘 잘해야되요?"

참 흔한 질문인데

막상 하고 싶은 말은 책 한권 수준으로 떠올랐다.

그래서 몇가지 이야기를 해보려고 한다.



신입이 이력서, 면접 모두 한번에 통과하는

만능 키가 하나 있다.

네이트나 페이스북에 자기가 만든 허접한 게임 하나 올려서

구인 메일에 아무것도 적지 말고

개발 신입 지원자 A양입니다.

제가 한번 만들어본 게임입니다.

아직은 허접하지만 열심히 배워볼 자신이 있습니다.

한번 봐주시길 바랍니다.

네이트용 테스트 가젯 : http://~~~~~~

만약 저런 메일을 받는다면

거두절미하고 바로 내일 면접보러 오라고 연락할거다. (설마 이거보고 따라하진 않겠지 -_-a)



게임은 모든 기술이 총동원되는 산업이다.

그러다보니 개발자가 알아야할 기술은 장난 아니다.

미니멈도 맥시멈도 없다.

아는 만큼 장점이고 모르는 만큼 단점이다.

한번 작정하고 나열해볼까?

ActionScript, Javascript, opensocial, FBML, PHP, MySQL, Photoshop, HTML, Motion Graphic, Open API, Java, Linux, vi, Objective-C, 3D Tool, Flash or Others 3D Engine... (vi는 괜히 넣었나...)

잘 생각도 안난다...

뭐 기술만 쓴것도 이정돈데

테크닉까지 나열하자면 책 한권 나올지도 모른다.

이걸 다 할 줄 아는건 거의 불가능하다.



흔히 개발자, 라고 한다면 어느 한가지 정도 자기의 주력 언어 정도는 있어야한다.

신입이든 경력이든.

대부분 ActionScript겠지만 ActionScript도 주력언어라고 하는 수준은

현실적으로 낮지 않다.

특히 게임에서는...



그렇다면 우리가 찾는 사람은 어떤 사람일까?

아까 테스트 게임을 만들어서 보낸 A양을 예로 들어보자.

훌륭하진 않지만 A양이 보낸 게임은 간단하게 물방을 터트리는 게임이었다고 하자.

하지만 여기서 우리가 찾아낼 수 있는 것들은 많다.

먼저, Flash로 게임을 만드는 경험을 쌓기 시작했다는거.

정말 중요하다.

게임회사니까 적어도 게임 한번은 만들어봐야하는거 아닌가?

이 점에서 합격이다.


그 다음으로는 쉽지 않은 Open Social을 이용해봤다는거다.

노련한 개발자도 오픈소셜 처음보면 레퍼런스 엄청 뒤지고 몇시간정도는 헤딩 해봐야

유저 이름 정도 가져올 수 있다.

이 오픈 소셜을 훌륭히 연동해 냈다는거.

게다가 opensocial은 javascript라서 제대로된 툴조차 없다.

그런 환경에서 테스트까지 해가면서 올려봤다는 건

Javascript도 기초이상은 할줄 안다는거다.


또 데이터를 Javascript와 Flash로 주고 받아서 연동까지 시켰다는 거다.

Flash가 Javascript와 통신하려면 보안 설정해줘야한다.

이 부분을 해매가면서 경험해봤다는거.

볼륨이 큰 게임을 만들때는 필히 리소스를 별도로 관리해야하는데

이때 그 경험이 매우 유용한 것이다.

이런 점에서도 통과~


마지막으로는 소셜 게임을 한번이라도 만들어 본 이상

여타 널려있는 소셜 게임이 얼마나 만들기 어려운지

그 청사진이 그려질 것이며 그릇의 크기가 되는 사람이라면 도전해보고 싶어질 것이다.


이런 사람이라면 거두절미하고 바로 면접이다.

저 링크 하나에 이 사람은 이력서, 자소서 다 필요없다.

난 내가 고졸이라 다른 사람들 출신 학교는 절대 안본다.

요즘 실리콘 밸리에서 유행하는 ROWE[각주:1] 신봉자다.

신입이 필요한 스펙은 "밑바탕"이다.

잘할 필요는 없다. 하지만 알고는 있어야한다.

최소한 ActionScript, OOP, Design Pattern, 페이스북, 오픈소셜, 게임에 대해서 잘하지는 못하더라도 알고는 있어야한다.

그런데 이 모든 것들을 저 링크 하나로 다 대체할 수 있다.





눈이.. 높은건가?





쳇...





  1. Result Only Work Enviroment, 결과 주의 업무 환경 결과만 보장된다면 업무 시간, 출퇴근, 업무 방식등을 오로지 자율에 맡기는 업무 방식 [본문으로]

+ Recent posts