알라딘

헤더배너
상품평점 help

분류

이름:세르게이 코사레브스키 (Sergey Kosarevsky)

최근작
2016년 5월 <안드로이드 NDK 게임 개발>

세르게이 코사레브스키(Sergey Kosarevsky)

C++와 3D 그래픽 경력을 가진 소프트웨어 엔지니어다. 여러 모바일 업체에서 근무했고, SPB 소프트웨어와 얀덱스(Ynadex)에서 모바일 프로젝트에 참여한 바 있다. 10년 이상의 소프트웨어 개발 경험과 4년 이상의 안드로이드 NDK 경험을 쌓았다. 러시아 상트페테르브루크의 상트페테르부르크 기계 설계국(St. Petersburg Institute of Machine Building)에서 기계공학 박사 학위를 받았다. 여가 시간에는 오픈소스 멀티플랫폼 3D 게임 엔진인 린더다움 엔진(http://www.linderdaum.com)을 유지 보수하고 개발한다. 블로그(http://blog.linderdaum.com/)와 이메일(sk@linderdaum.com)을 통해 생각을 나눌 수 있다.  

대표작
모두보기
저자의 말

<안드로이드 NDK 게임 개발> - 2016년 5월  더보기

이동성과 고성능 컴퓨팅에 대한 요구는 종종 상당히 긴밀하게 결합된다. 실제로 현재의 모바일 애플리케이션은 3D와 입체 렌더링, 이미지와 오디오 인식, 비디오의 디코딩과 인코딩, 특히 증강현실 류의 신기술과 같이 집중적인 계산을 요하는 작업을 수없이 처리하고 있다. 여기에는 미디어 스트림 처리가 수반되는 모바일 게임, 3D 사용자 인터페이스, 소셜 소프트웨어 등이 포함된다. 어떤 의미에서, 모바일 게임 개발은 제한된 하드웨어 성능, 낮은 메모리 대역폭, 값비싼 배터리 자원 때문에 우리를 몇 년 전 과거로 돌아가게 만들기도 하지만, 동시에 사용자와 주고받는 상호작용의 기본적 형태를 다시 생각하게 만들기도 한다. 제스처 입력, 인터넷 접근, 환경 사운드 효과, 고품질 텍스트, 그래픽에 기반을 둔 매끄럽고 반응성이 뛰어난 사용자 인터페이스는 성공적인 모바일 애플리케이션의 핵심요소다. 모든 주요 모바일 운영체제들은 소프트웨어 개발자들에게 하드웨어에 밀착된 개발을 할 수 있는 서로 다른 가능성을 제시한다. 구글은 NDK(Android Native Development Kit)를 제공해서 다른 플랫폼의 기존 애플리케이션과 라이브러리를 손쉽게 안드로이드로 포팅하고, 최신 모바일 단말에서 제공되는 하부 하드웨어의 성능을 이용할 수 있게 해준다. C, 그리고 특히 C++는 배우기 어렵고, 사용자 인터페이스를 코딩하기도 어려운 언어로 유명하다. 정말 맞는 말이지만, 모든 것을 밑바닥에서부터 새로 만들려고 할 때만 해당되는 얘기다. 이 책에서는 C와 C++ 프로그래밍 언어를 활용해서, 안정화된 서드파티 라이브러리와 연결시켜 콘텐트가 풍부한 애플리케이션을 만들어보려고 한다. 그런 애플리케이션은 최신 터치 기반 인터페이스와 페이스북, 트위터, 플리커, 피카사, 인스타그램 등의 수많은 인기 사이트에서 활용되는 REST API에 대한 접근 기능을 갖추게 될 것이다. 자바나 .NET 언어로 작성된 애플리케이션에서 인터넷 자원을 활용하는 방법에 대한 정보는 구하기 쉬운 반면에, C++ 프로그래밍 언어에서는 그와 같은 정보가 그다지 풍부하지 않다. 최신 OpenGL 버전에서 최신 확장 프로그램을 만들고 활용하는 데는 상당한 노력이 요구된다. OpenGL API를 활용하는 프로그래밍은 대개 플랫폼에 한정된 방식으로 기술되어 있다. 모바일 버전인 OpenGL ES에서는 상황이 좀 더 복잡해지는데, 개발자들은 모바일 그래픽 처리 유닛(GPU)에서 돌아갈 수 있도록 기존의 셰이더 프로그램을 수정해야 한다. C++로 표준 안드로이드 기능을 이용한 사운드 재생 역시 간단하지 않은데, 예를 들어, 기존의 PC 코드를 OpenAL 라이브러리에서 재사용하려면 뭔가를 해야만 한다. 이 책은 이런 주제들에 대한 해결책을 제시하고 안드로이드 NDK로 손쉽게 멀티플랫폼 친화적인 개발을 하기 위해 여러 가지 유용한 기법들을 조합시키려고 시도한다. 안드로이드는 리눅스 커널을 기반으로 하는 모바일 운영체제로, 스마트폰, 태블릿 PC, 넷북 등 여러 휴대용 단말 용도로 설계됐다. 안드로이드의 초기 개발은 안드로이드 사에 의해 시작됐는데, 안드로이드 사는 2005년 구글에 인수됐다. 2007년 11월, 첫 번째 버전이 소개됐지만, 안드로이드 기반의 최초 상용 스마트폰인 HTC Dream은 거의 1년이 지난 2008년에 출시됐다. 안드로이드 버전은 숫자로 구성된 명칭 외에 공식 코드명을 가지고 있으며, 주요 버전의 코드명은 달콤한 디저트의 이름을 차용해 지어졌다. NDK와 관련된 안드로이드 플랫폼 기술 및 기능에 있어 몇 가지 주요한 마일스톤은 다음과 같다. ▶ 버전 1.5(컵케이크): 이 안드로이드 버전에서 ARMv5TE 명령을 지원하는 NDK가 최초로 출시됨 ▶ 버전 1.6(도넛): OpenGL ES 1.1 네이티브 라이브러리 지원을 최초로 도입 ▶ 버전 2.0(에클레어): OpenGL ES 2.0 네이티브 라이브러리를 지원 ▶ 버전 2.3(진저브레드) " 달빅(DalVik) VM의 컨커런트 가비지 컬렉터(Concurrent garbage collector.) 이로 인해 게임 성능 향상과 OpenGL ES 처리 효율 개선이 이뤄짐 " NDK의 기능이 대폭 확장됐는데, 센서 접근, 네이티브 오디오 OpenSL ES, EGL 라이브러리, 액티비티 라이프사이클 관리, 애셋(asset)에 대한 네이티브 접근 등이 포함 ▶ 버전 3.0(허니콤) " 대형 터치스크린 태블릿 PC 지원 " 멀티코어 프로세서 지원 ▶ 버전 4.0(아이스크림 샌드위치) " 스마트폰과 태블릿 통합 UI " 하드웨어 가속 2D 렌더링. VPN 클라이언트 API ▶ 버전 4.1 및 4.2(젤리빈) " 렌더링 성능 향상 및 삼중 버퍼링 지원 " Wi-Fi를 통한 외부 디스플레이를 포함해 외부 디스플레이 지원 " HDR 카메라 지원 " 디버깅과 프로파일링을 위한 새로운 내장 개발자 옵션. 달빅 VM 런타임 최적화 ▶ 버전 4.3(젤리빈): OpenGL ES 3.0 네이티브 라이브러리 지원 ▶ 버전 4.4(킷캣): NDK를 이용한 렌더스크립트(RenderScript) 접근 지원. 이 기능은 안드로이드 2.2 이상이 실행되는 모든 단말과 하위 호환됨 안드로이드 네이티브 개발자 킷(NDK)은 달빅이 제공할 수 없는 성능을 요구하거나 네이티브 시스템 라이브러리로의 직접적 접근을 요구하는 멀티미디어 애플리케이션에 활용된다. NDK는 포팅 가능성에 있어 핵심적인 역할을 하며, 이는 결과적으로 GCC나 클랭 툴체인 등과 같은 익숙한 툴을 사용해서 보다 편리하게 개발과 디버깅을 진행할 수 있게 해준다. 이 책에서 다루는 내용은 DNK의 전형적인 활용법으로, 그래픽, 사운드, 네트워킹, 자원 저장을 위해 가장 널리 사용되는 C/C++ 라이브러리의 통합이 바로 그것이다. 초기에 NDK는 바이오닉(Bionic) 라이브러리를 기반으로 했다. 이 라이브러리는 구글에서 안드로이드용으로 개발한 BSD 표준 C 라이브러리(libc)의 파생 버전이다. 바이오닉의 주요 목표는 다음과 같다. ▶ 라이선스: 원래의 GNU C 라이브러리(glibc)는 GPL 라이선스 되어 있고, 바이오닉은 BSD 라이선스를 가지고 있다. ▶ 크기: 바이오닉은 GNU C 라이브러리에 비해 크기 면에서 훨씬 작다. ▶ 속도: 바이오닉은 상대적으로 낮은 클럭 주파수를 가진 모바일 CPU용으로 설계됐다. 일례로, 이 라이브러리는 피스레드(pthread)의 커스텀 구현을 가지고 있다. 바이오닉에는 RTTI나 C++ 예외 처리 지원과 같은 완전한 libc 구현에 포함되어 있는 많은 중요한 기능들이 빠져 있다. 하지만 NDK는 이런 기능들을 구현하는 다른 C++ 헬퍼 런타임을 가진 몇 가지 라이브러리를 제공한다. GAbi++ 런타임, STLport 런타임, GNU 표준 C++ 라이브러리가 그런 것들이다. 기본적인 포직스(POSIX) 기능 외에 바이오닉은 로깅(logging)과 같은 안드로이드의 고유 메커니즘을 지원한다. NDK는 기존 C와 C++의 훌륭한 유산을 재사용할 수 있는 상당히 효과적인 방법이다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자