안녕하세요
초보 안드로이드 개발자입니다.
C/C++ 휴대폰 개발자로 몇년일했는데 이번에 게임회사쪽으로 오면서 아래와 같은 요청을 받았는데요
가능한지 어떤지 견적이 안나와서요 ㅠㅠ
고수님들의 고견 부탁드립니다.
<< 요청 >> ------------------------------------------------------------------
1. C++ 코드로 작성된 게임을 --> 안드로이드 플래폼
--> iOS 플래폼
으로 원 소스 멀티플래폼 릴리즈를 하고 싶다
<< 문제점 >>----------------------------------------------------------------
1. C++ 코드의 VC종속성
: VC 라이브러리를 사용하여 문제가 되지 않을까?
2. OS 종속성
: 윈도 SDK를 사용할 경우 이것은 안드로이드와 iOS는 모르는 함수인데 어떻할것인가?
3. 게임 엔진
: 어찌할지 잘 모름 ㅠㅠ
<< 해결책 >>-----------------------------------------------------------------
1. C++ 코드의 VC종속성
: VC 라이브러리 함수를 NDK/iOS SDK로 변환
2. OS 종속성
2.1. 안드로이드 : 윈도 SDK를 NDK로 변환하여 C++코드를 그대로 사용
2.2. iOS : 윈도 SDK를 iOS SDK로 변환
---------------------------------------------------------------------------------
허접하게 <<해결책>> 처럼 생각하고 있는데,, 먼가 답이 아닌거 같은데 물을데가 없네요
전에 휴대폰쪽 일을 해서 지원하고 나서 보니 일이 장난이 아닌데
근본적으로 C++코드 하나로 멀티 플래폼 릴리즈가 가능한가요?
불가능한지? 아님 어떤 수작업을 거쳐야 하는지? 어떤 솔루션이 있는지 지금으로선 무척 답답하네요
못 한다고 해야 하나 ㅠㅠ
고견 부탁드립니다.
제가 이해한 범위에서 이야기하겠습니다. (잘못 이해하고 있을수도)
단순하게 두 플렛폼은 리눅스 커널위에 OPEN GL ES 그래픽 라이브러리가 있고
그 위에 안드로이드는 Java VM이 IOS는 LLVM 이라는 가상머쉰이 있습니다.(이해를 쉽게 하기위해서 간단하게 설명하자면....)
안드로이드는 Java로 코딩하면 Java VM에서 실행되기 때문에 IOS로에서는 쓸수 없겠죠.
IOS도 xocde로 코딩한경우 LLVM(가상머쉰은 아니지만)에서 실행될테구요.
둘다 리눅스 커널을 사용하고 있어서 gcc 컴파일한 라이브러리는 둘다 사용할 수 있습니다.
제일 대표적인 예료 ffmpeg 라이브러리를 이용한 플레이어 개발이 대표적이겠죠.
ffmpeg를 예를 들면 둘가 껍대기는 OS에 종석적인 java, xcode로 만들었지만,
내부에 동영상 플레이어는 ffmpeg라이브러리를 gcc 컴파일한것을 사용하고 있습니다.
저도 이부분에 대해서 공부하고 있어서 간단하게 블로그에 정리한것을 올려 두었습니다.
제 블로그를 잘 보시면 ffmpeg라이브러리도 OS 적용한 것도 있으니 참조 하세요.
ios - c++ static library xcode에서 사용하기
안드로이드 - 정적 라이브러리 NDK 빌드
Eclipst CDT - 정적(Static) 라이브러리 만들기
안드로이드나 IOS 모두 그래픽 라이브러리는 OPEN GL ES를 사용하고 있고,
게임 개발은 둘다 OPEN GL ES로 개발하는 것으로 알고 있습니다.
아마도 OPEN GL ES로 컴파일은 gcc로 하겠죠.
대부분 처음 부터 OPEN GL ES로 개발보다는 게임 엔진을 사용할 텐테,
유명한 것 중에 하나가 unity 라이브러리 입니다.
게임 개발은 해보지 않아서 정확하지는 모르겠네요.
VC에 종속적인 부분은 대부분은 윈도우OS에 종속적부분이 많을 것으로 생각됩니다.
대부분의 비지니스 처리는 gcc로 공개된 라이브러리가 많아서 대치가 될것으로 예상됩니다.
(말은 이렇게 했지만, 쉽지는 않겠죠...)
다시 정리하자면
화면단 작업은 java, xcode가 어쩔수 없지만,
비지니스 로직은 라이브러리 형태로 gcc로 컴파일하면 OS 종속적이지 않고 개발할수 있이 않을까요?
최근에는 OS 종속적이지 않게 개발하는 방법으로 하이브리드앱 형태가 나오고 있죠.
PhoneGap이라는 라이브러리를 이용해서 JavaScript로 개발하는 형태죠.
참고 사항으로 알아 두세요.
지금까지 제가 적어보기는 했는데, 제가 완전히 잘 못 이해하고 있는 부분도 있으니,
참고 정도만 하시고, 자세한것은 따로 찾아보세요.