몇몇 iPhone 개발 Frameworks

몇몇 iPhone 개발 Frameworks

(순서는 아무 의미 없음.)

Titanium (Appcelerator)

무료로 이용가능한 Apache Licence Version 2.0 라이센스이지만, 기술 지원을 받기 위해 유료 모델도 있음.

JavaScript 사용으로 엄청나게 많은 기존 개발자 풀을 끌어안으면서 굉장히 다양한 멀티 플랫폼으로의 포팅과 여러 개발 환경을 지원하여 최근 많은 각광을 받고 있음.

아직 베타이긴 하지만, Eclipse 를 기반으로 한 Aptana Studio 를 판매하던 Aptana社 를 최근 인수, Win/Mac/Linux 환경에서 디버그와 시뮬레이션까지 실행 가능한 “Titanium Studio" 라는 이름의 전용 IDE 까지 만들어 배포 중.

대표적인 프로그램으로는 Todo List 로 유명한 WunderList (6wunderkinder) 가 있음.

그 외 여러 쇼케이스를 살펴볼 수 있음.

단, 게임 등에 적용할 수 있을 정도로 뛰어난 퍼포먼스를 내는 것은 아니라는 글을 얼핏 봄.

PhoneGap

WebKit 렌더러를 기반으로 한 프레임웍(?)의 일종으로 게임등에 사용하기에는 무리가 있을 것으로 추측되어 관련 자료 등을 자세히 찾아보지 않음.

Corona (Ansca)

유료. 이로서 더 이상 알아보기 싫었지만 대충 알아봄.

2D 게임 엔진.

멀티 (모바일) 플랫폼 대응.

Lua 사용.

Box2D 물리엔진 사용.

유료답게 인하우스툴등 서드파티 지원이 활발하지만 이 역시 유료.

Cocos2d for iPhone (Ricardo Quesada)

기존 파이썬을 이용하던 2d 게임 프레임워크인 Cocos2d 의 디자인을 이어 받아, iOS 와 OSX 용으로 Objective-C 로 제작 가능하도록 제작된 프레임워크.

오픈소스.

MIT 라이센스.

렌더, 스프라이트, 애니메이션, 폰트, 타일맵, 파티클, 타이머, 렌더텍스쳐, 사운드, 물리 등등 렌더링 엔진이라기 보다 (거의) 2D 게임 엔진에 가까움.

몇일 전 v1.0 이 릴리즈.

국내에도 여러 커뮤니티가 활성화되어 관련 자료를 찾기 좋음.

앱스토어에는 개발자가 직접 제작한 아이폰 게임이 판매 중인데, 홈페이지에 가면 그 게임의 소스 코드도 판매(?) 중임. 게다가 로얄티 프리. ㅋ.

Unity3d

에디터, 렌더, 라이팅, 터레인, 물리, 사운드, 프로그래밍, 네트워킹 등 사실상 3D 게임을 제작하는데 필요한 기능을 거의 모두 제공.

iPhone 개발을 하기 위해선 유료.

JavaScript, C# 을 스크립트로 사용.

독립된 실행도 가능하지만, 거의 모든 웹브라우저 화면에서 직접 게임을 돌릴 수 있도록 Unity Player 를 제공하고, Wii / XBOX360 등 여러 콘솔 등에서도 실행 가능한 멀티 플랫폼 대응.

사실상 너무 기능이 많아 다 적기 힘듦.

iOS 개발에 Lua 사용하기

직접 Lua 링크하기 (GRZ Software)

위의 링크는 조금 된 글이지만, Cocos2d 에 루아를 링크하는 방법을 설명하고 있음.

비록, Cocos2d 가 사용되기는 하지만, 기본 iOS 프로젝트에 연결할 때도 크게 다르지 않을 것이라고 함.

이 글을 작성할 당시에는 XCode 가 처음이라 완벽하게 최적화된 방식인지는 자신도 알 수 없다고 함.

전부 다 따라하기는 귀찮고, 첨부된 테스트 프로젝트 파일을 현재 상황에 맞게 조금 수정하여 빌드&런 해보니 비록 print 뿐이지만 Lua 가 잘 실행되는 로그를 확인함.

Part 2 도 있으므로 참고.

단, 작성자도 마지막에 iPhone Wax 를 추천.-ㅅ-

아래는 LuaCocoa 제작자인 Eric Wing 의 글을 발로 요약한 것으로서 몇몇 Lua & Objecive-C 브릿지들에 대하여 기술하면서 전체적으로 LuaCocoa 에 대한 장점을 부각시킴. iPhone Wax 에 대해서는 매우 부족한 라이브러리로 표현하면서도 간결함과 성능 등에 대하여는 긍정적인 견해를 밝히는 등, 여러 면에서 iPhone Wax 에 신경쓰고 있는 듯함.

단, 순서대로 읽어야 전체적인 의미 이해에 도움이 됨.

LuaObjective-C (Steve Dekorte)

최초의(아마도) Lua / Objective-c 브릿지.

BSD 라이센스.

Lua 3.1, OpenStep 4.2 대응.

LuaBridge (Richard Kiss)

Lua 4.0 대응.

BSD 라이센스.

LuaObjCBridge (Tom McClean)

오픈소스.

MIT 라이센스.

Lua 5.

.h 와 .m 파일 두 개뿐이고 소스도 거의 2500 라인정도.

Objective-C 1.0 혹은  NSFoundation 클래스로 빌드됨(?)

Lua API 와 Objective-C/C API 를 모두 지원했지만, Lua 메모리 관리가 적용되지 않아 Lua 에서도 retain/release/autorelease 해야 하는 등 인터페이스가 원시적이었음.

Objective-C 의 서브클래스, 구조체, 함수 다룰 수 없음.

수동으로 바인딩을 해야함.

이러한 상황에서 Gus Mueller 가 LuaCore 라는 수동으로 바인딩 한 뭉탱이를 공개! 두둥!

LuaCocoa (Eric Wing)

LuaObjCBridge 를 수정하여 Lua 의 메모리 관리를 사용하도록 개선.

LuaCore 를 확장하여 구조체 접근을 위한 고급 metatable 등의 기능을 추가.

BridgeSupport 와 libffi 를 이용하여 구조체/C함수/Boolean/상수/enums 등등 Objective-C 의 귀찮은 부분을 완전한 자동 바인딩을 구현.

작성자의 설명에 의하면 유니코드, 32/64비트, 가비지컬렉션, 브릿지, 데이터 공유 등등 매우 다양한 상황과 문제점에 대하여 준비된 라이브러리라고 소개함.

그러나 NSXMLDocument 가 잘 안되는 등 iOS 환경에서의 작동에는 보장을 못하는 듯.

iPhone Wax (Corey Johnson)

iPhone 에 특화된 Lua / Objecitve-C 브릿지.

Lua 5 / Objective-C 2.0 베이스.

Objective-C Introspection(?) 이 없다면, 수동 바인딩이 필요.

 

결론

별로 알아본 것도 없지만 더 알아보기도 귀찮고 , 이 쪽 업계에서 일하는 것도 아니라 잘 모르지만 이쯤에서 위의 상황이 전부라 가정하고 결론을 내려보면,

  • 난 모든 환경에서 돌아갈 완벽한 3D 게임을 만들겠어! 돈 따위는 중요하지 않아! -> Unity3d
  • 난 모바일에서 원활하게 즐길 수 있는 귀여운  2D 게임을 만들겠어! -> Cocos2d for iPhone, (돈있으면) Corona
  • 난 그래픽이 화려하지 않은, 그냥 아이폰같은 여러 모바일에서 사용할 유용한 어플(앱)을 만들고 싶어! -> Titanium, PhoneGap
  • 난 Objective-C 는 잘 모르지만 아이 폰/패드 에서 Lua 만을 이용해 하루에 몇 개 씩의 게임을 만들어 보이겠어! 렌더는 별로 없으니 발로 하지 뭐! -> iPhone Wax, 나
  • 난 엔진따위 사용하지 않겠어! 모든 플랫폼에 최적화된 언어를 습득하고 모두 익혀서 어플을 만들고, 렌더링과 각종 게임 환경에 대한 공부를 마스터 하여 세계 최고의 게임을 만들어 빌게이츠보다 더 뛰어난 부자가 되어 보이겠어! -> 네, 그러세요.
  1. ukarule posted this