Top

안드로이드 NDK 게임 개발 [현업에서 바로 활용할 수 있는 70가지 예제]

  • 원서명Android NDK Game Development Cookbook (ISBN 9781782167785)
  • 지은이세르게이 코사레브스키(Sergey Kosarevsky), 빅토르 라티포프(Viktor Latypov)
  • 옮긴이박지유
  • ISBN : 9788960778658
  • 30,000원
  • 2016년 05월 27일 펴냄
  • 페이퍼백 | 388쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 게임 개발 프로그래밍

책 소개

요약

C++를 이용해서 안드로이드 게임 개발을 시작하려는 프로그래머들에게 70가지가 넘는 실전적인 예제를 통해 안드로이드 NDK 게임 개발을 가이드 한다. 네트워크 접속, 파일 시스템, 그래픽, 오디오 스트리밍, 크로스플랫폼 UI, 입력 시스템 등 게임 개발에서 NDK가 활용될 수 있는 주요 기술들이 망라되어 있으며, 최종적으로는 이런 기술들을 총동원해서 3매치 퍼즐 게임과 그림 퍼즐 게임 등 2종의 게임을 제작해본다.

이 책에서 다루는 내용

인기 있는 C++ 라이브러리의 안드로이드 포팅

포팅 가능한 멀티스레드 코드 작성

OpenAL을 이용한 오디오 재생

제스처 인식 구현

프리타입을 이용한 텍스트 렌더링

OpenGL ES의 활용과 데스크톱에서 게임을 개발하기 위한 OpenGL ES 추상 레이어의 생성

데스크톱에서 모바일 애플리케이션의 디버깅

C++에서 플리커 및 피카사 웹 서비스 접근

모바일 게임 엔진 구현

이 책의 대상 독자

기존 C/C++ 애플리케이션을 안드로이드로 포팅하고 싶은가? 여러분은 최신의 모바일 개발 전선으로 뛰어들고 싶은 숙련된 C++ 개발자인가? 자바 기반 안드로이드 애플리케이션의 성능을 향상시키고 싶은가? C++로 작성된 멋진 라이브러리들을 자신의 안드로이드 애플리케이션에서 활용하고 싶은가? 모바일 게임을 PC에서 디버깅함으로써 생산성을 향상시키고 싶은가?
이들 질문 중 하나에라도 긍정적으로 답할 수 있다면, 이 책은 당신에게 적합하다.

이 책의 구성

1장, ‘빌드 환경 구축’에서는 안드로이드 SDK와 NDK를 마이크로소프트 및 우분투/데비안 리눅스에서 설치하고 환경 설정하는 방법과 안드로이드 기반 단말에서 첫 번째 애플리케이션을 빌드하고 실행하는 방법을 설명한다. 안드로이드 NDK에 포함된 다양한 컴파일러와 툴체인의 사용법을 살펴볼 것이며, adb 툴을 이용한 애플리케이션의 디버깅과 배포도 다뤄진다.

2장, ‘공통 라이브러리의 포팅’에는 프리타입 글꼴 렌더링 라이브러리, 프리이미지 이미지 로딩 라이브러리, libcurl과 OpenSSL(libsssl과 libcrypto 모음 포함), OpenAL API, libmodplug 오디오 라이브러리, Box2D 물리 라이브러리, 오픈 다이내믹스 엔진ODE, libogg, libvorbis 등 안정화된 C++ 프로젝트와 API를 안드로이드 NDK로 포팅하는 일련의 예제들이 포함되어 있다. 이들 중 일부는 소스 코드의 변경을 요구하며, 그런 변경사항들이 설명될 것이다. 이들 라이브러리는 대부분 나중에 이후의 장들에서 활용된다.

3장, ‘네트워킹’에서는 HTTP 프로토콜을 이용해 파일을 다운로드하기 위해 잘 알려진 libcurl 라이브러리를 이용하는 방법을 보여주고, 요청을 구성하고 C++ 코드를 이용해서 인기 있는 피카사나 플리커 온라인 서비스에서 받은 응답을 직접 파싱하는 방법을 보여준다. 요즘의 애플리케이션들은 대부분 어떤 방식이든 네트워크 데이터 전송을 사용한다. HTTP 프로토콜은 페이스북, 트위터, 피카사, 플리커, 사운드클라우드, 유튜브 등 인기 웹사이트에 필요한 API의 기반이 된다. 이 장의 나머지 부분에서는 웹 서버 개발을 중점적으로 다룬다. 애플리케이션에 미니 웹 서버를 내장시키면 운영체제 종속적인 코드를 사용하지 않고도 개발자가 소프트웨어를 원격으로 제어하고 애플리케이션의 런타임을 모니터링 할 수 있다. 이 장의 시작 부분에서는 백그라운드 다운로드 프로세스를 위한 태스크 대기열과 효율적인 스레드 간 데이터 교환을 가능하게 하는 간단한 스마트 포인터까지 소개한다. 이러한 스레딩 프리미티브는 나중에 4장, ‘가상 파일시스템 구성’과 5장, ‘크로스 플랫폼 오디오 스트리밍’에서 활용된다.

4장, ‘가상 파일시스템 구성’에서는 비동기 파일 처리, 자원 프록시, 자원 압축을 중점적으로 다룬다. 많은 프로그램들은 데이터를 파일 집합으로 저장한다. 전체 프로그램을 중단시키지 않고 이런 파일들을 로딩할 수 있느냐는 매우 중요한 이슈다. 최신 운영체제의 휴먼 인터페이스 지침들은 하나같이 애플리케이션 개발자들에게 프로그램의 흐름 도중에 어떠한 지연이나, ‘정지’(안드로이드에서는 애플리케이션이 응답하지 않음 오류(ANR, Application Not Responding)로 알려진)라도 발생하지 않게 하라고 규정한다. 안드로이드 프로그램 패키지는 단순히 .apk 확장자를 가진 압축 파일로서, 친숙한 ZIP 알고리즘으로 압축되어 있다. 애플리케이션의 리소스 파일을 .apk에서 바로 읽고 싶다면, zlib 라이브러리를 이용해서 .zip 형식의 압축을 풀어야 한다. 다뤄지는 또 다른 중요한 주제는 파일시스템 개념으로, 파일시스템은 하부 운영체제 파일과 폴더 구조를 추상화하고, 애플리케이션의 안드로이드와 PC 버전 간의 리소스 공유를 가능하게 해준다.

5장, ‘크로스 플랫폼 오디오 스트리밍’은 OpenAL 라이브러리를 이용한 오디오 스트림의 구성으로 시작한다. 이후 RIFF WAVE 파일 형식 읽기와 OGG 볼비스 스트림 디코딩으로 진행한다. 마지막으로는, libmodplug를 이용해서 일부 트래커 음악을 재생하는 방법을 배운다. 최근의 안드로이드 NDK에는 OpenSL ES API 구현이 포함되어 있다. 하지만 매끄러운 게임 디버깅 기능을 위해 우리는 PC와 모바일 플랫폼 간에서 완벽하게 포팅 가능한 구현을 찾고 있다. 이를 위해 OpenAL 구현을 정적 라이브러리로 사전 컴파일한 다음, 소규모 멀티스레드 사운드 스트리밍 라이브러리를 libogg와 libvorbis 상단에 구성한다.

6장, ‘OpenGL ES 3와 OpenGL 3의 통합’에서는 데스크톱 OpenGL 3와 모바일 OpenGLES 3.0을 위한 기본 렌더링 루프를 제시한다. 애플리케이션을 모바일 단말로 재 배포하는 과정은 긴 작업인 탓에 개발자들이 신속하게 기능을 테스트하고 디버깅하는 데 장애가 된다. PC상에서 게임 로직을 개발하고 디버깅할 수 있도록, 모바일 OpenGL ES에서 데스크톱 GLSL 셰이더를 이용하는 기법을 제공한다.

7장, ‘크로스 플랫폼 UI와 입력 시스템’에서는 포팅 가능한 방식으로 멀티터치 이벤트 핸들링과 제스처 인식을 구현하는 방법을 알려준다. 현재의 모바일이란 거의 제스처 기반의 터치 입력과 같은 말이다. 현대의 사용자 지향적인 애플리케이션에서는 그래픽 사용자 인터페이스GUI, Graphical User Interface를 빼놓을 수 없다. 상호작용을 구성하는 데는 두 가지 기본적 이슈가 있는데, 입력과 텍스트 렌더링이 그것이다. 추가로 테스트와 디버깅을 용이하게 하기 위해, 다중 마우스 장치를 가진 윈도우 7PC에서 멀티터치 입력을 시뮬레이션 하는 방법을 보여준다. 우리는 인터랙티브 게임 애플리케이션의 개발을 목표로 하고 있으므로, 익숙한 방법으로 사용자 입력을 구현해야 한다. 온스크린 게임패드 UI를 생성하는 방법을 체계적으로 보여주려고 한다. 글로벌 다문화 환경에서는, 어떤 애플리케이션이든지 다중 언어 텍스트 렌더러를 가지는 편이 바람직할 것이다. 프리타입 라이브러리를 이용해서 라틴(Latin) 문자, 키릴(Cyrillic) 문자, 왼쪽에서 오른쪽으로 가로쓰기 텍스트를 렌더링하는 방법을 보여주려고 한다. 다중 언어 UTF-8로 로컬라이즈된 인터페이스의 구성이 사전 기반의 접근법으로 제시될 것이다.

8장, ‘매치 3 게임 제작’에서는 이전에 소개한 모든 기법들을 총동원해서 간단한 매치 3게임을 제작하는데, 이 게임에는 OpenGL ES를 이용한 렌더링, 입력 처리, 리소스 포장, PC상에서의 디버깅 기법이 활용된다. 또한 이 게임은 윈도우 데스크톱 CP에서 실행 및 디버깅 가능하며 다른 모바일 플랫폼으로 손쉽게 포팅될 수 있다.

9장, ‘그림 퍼즐 게임 제작’에서는 위에서 언급된 모든 기법들을 통합해 좀 더 복잡한 예제를 선보인다. 그래픽이나 입력에 관해 위에서 언급된 모든 요소들은 네이티브 네트워크 라이브러리와 API를 이용해 피카사 온라인 서비스로부터 이미지를 다운로드할 것이다.

저자/역자 소개

지은이의 말

이동성과 고성능 컴퓨팅에 대한 요구는 종종 상당히 긴밀하게 결합된다. 실제로 현재의 모바일 애플리케이션은 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++의 훌륭한 유산을 재사용할 수 있는 상당히 효과적인 방법이다.

지은이 소개

세르게이 코사레브스키(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)을 통해 생각을 나눌 수 있다.

빅토르 라티포프(Viktor Latypov)

컴파일러 개발, 디바이스 드라이버, 로봇 공학, 고속 컴퓨팅 분야에 경험을 가진 소프트웨어 엔지니어이자 수학자로, 3D 그래픽과 모바일 기술 분야에 개인적인 관심을 가지고 있다. 거의 20년 동안 컴퓨터에 파묻혀 살아왔으며, CPU가 탑재되었다면 무엇이든 간에 그것과 관련된 소프트웨어를 설계하고 개발하는 온갖 일들을 즐겨 한다. 빅토르는 상트페테르브루크 주립 대학교(Saint Petersburg State University)에서 응용수학 박사학위를 받았다.

옮긴이의 말

전 세계적으로 안드로이드와 iOS가 스마트폰 운영체제를 양분하고 있는 상황에서, 유독 우리나라의 경우 안드로이드의 비중이 높다. 아마도 안드로이드 스마트폰 제조의 맹주인 삼성전자의 홈그라운드이기 때문일 것이다. 2015년 기준 구글 플레이 앱의 국가별 매출에서 우리나라는 일본, 미국에 이어 세계 3위를 차지했을 정도다. 알다시피 모바일 애플리케이션 매출의 대부분은 게임 매출이다.
C++를 이용해 모바일 애플리케이션을 개발할 때, 기존의 C++ 라이브러리를 재활용하고 싶거나 부분적으로 성능 향상을 위해 네이티브 기능을 사용하고 싶을 때 이용하는 것이 안드로이드 NDK(Native Development Kit)다. 사실 앱 중에서도 가장 성능에 민감한 앱이 바로 게임이다. 그런 측면에서 게임은 NDK의 활용도가 가장 빛날 수 있는 애플리케이션이지만, 아쉽게도 국내에서는 지금껏 NDK를 이용한 게임 개발 전문서의 출간이 전무한 실정이었다. 국내 서적과 번역서를 통틀어 일반적인 앱을 다루는 서적 몇 권만이 출간됐을 뿐이다. 아마도 유니티3D 같은 범용 게임 엔진의 대중화가 큰 원인일 수 있겠지만, 안드로이드 게임 매출에서 전 세계 3위의 위상을 차지하고 있는 국내 모바일 게임 개발 상황을 감안하면 아쉬운 부분이다. 늦은 감이 있지만, 이 책이 안드로이드 NDK 게임 개발 전문서의 갈증을 다소나마 채워주기를 기대한다.
이 책에는 게임 개발에서 NDK를 활용하는 핵심적인 부분, 즉 네트워크 접속, 파일시스템, 그래픽, 오디오 스트리밍, 크로스 플랫폼 UI, 입력 시스템 등이 망라되어 있다. 팩트출판사의 쿡북(Cookbook) 시리즈답게 이 책은 실전에서 바로 활용할 수 있는 70가지 이상의 실전적인 예제들을 담고 있다. 하나하나의 예제들을 살펴보면, 모두가 저자들의 풍부한 게임 개발 경험을 바탕으로 구성되어 있다는 점을 알 수 있다. 그리고 마지막에는 이전까지의 예제들을 통해 배운 기술들을 총동원하는 종합적인 예제로서 NDK를 활용해 매치3 게임과 그림 퍼즐 게임을 제작해본다.
이 책은 NDK를 이용한 게임 개발의 초석을 다루고 있으므로, NDK를 이용해 본격적이고 실전적인 게임 개발을 시작해보려는 독자들에게 적합하다. 이 책이 독자들의 안드로이드 게임 개발 기술을 향상시키는 좋은 기회를 제공하리라 기대한다.

옮긴이 소개

박지유

1990년대부터 IT 업계에 종사해온 개발자로서, IT 산업 전반과 게임 분야에 특히 관심이 많다. 다양한 기사와 도서 등의 번역가로도 활동 중이다. 번역서로는 에이콘출판사에서 출간한 『코코스2d-x 모바일 2D 게임 개발』(2013), 『오픈소스와 소프트웨어 산업, 상생의 경제학』(2013), 『유니티 네트워크 게임 만들기』(2015) 등이 있다.

목차

목차
  • 1장. 빌드 환경 구축
    • 들어가며
    • 윈도우에서 안드로이드 개발 툴 설치
    • 리눅스에서 안드로이드 개발 툴 설치
    • 애플리케이션 템플릿의 수동 생성
    • 애플리케이션에 네이티브 C++ 코드 추가하기
    • NDK 툴체인 전환
    • 복수의 CPU 아키텍처 지원
    • OpenGL ES를 이용한 기초적 렌더링
    • 크로스 플랫폼 지원
    • 크로스 플랫폼 코드의 통합
    • 링크와 소스 코드 구조화
    • 안드로이드 애플리케이션의 서명 배포

  • 2장. 공통 라이브러리의 포팅
    • 들어가며
    • 윈도우용 네이티브 정적 라이브러리의 컴파일
    • 안드로이드용 네이티브 정적 라이브러리의 컴파일
    • libcurl 네트워킹 라이브러리의 컴파일
    • OpenAL 라이브러리의 컴파일
    • libvorbis, libmodplug, libtheora의 컴파일
    • 프리이미지 그래픽 라이브러리 활용
    • 텍스트 렌더링을 위한 프리타입 라이브러리 활용
    • 물리 처리의 타이밍 구현
    • 2D 그래픽 렌더링
    • Box2D 시뮬레이션 설정
    • ODE 물리 라이브러리의의 구축

  • 3장. 네트워킹
    • 들어가며
    • 플리커와 피카사에서 사진 목록 가져오기
    • 플리커와 피카사에서 이미지 다운로드
    • 크로스 플랫폼 멀티스레딩 처리
    • 네이티브 크로스 플랫폼 스레드의 동기화
    • 참조 카운팅을 이용한 메모리 관리
    • 비동기 태스크 대기열 구현
    • 비동기 콜백 호출 처리
    • 비동기적인 네트워크 처리
    • 네트워크 주소 탐지
    • HTTP 서버 제작

  • 4장. 가상 파일시스템 구성
    • 들어가며
    • 파일 스트림 추상화
    • 포팅 가능한 메모리 매핑 파일의 구현
    • 파일 작성기 구현
    • 인메모리 파일 다루기
    • 마운트 포인트 구현
    • zip 압축 파일 내의 파일 열거하기
    • zip 압축 파일로부터 파일 압축 풀기
    • 비동기적인 자원 로딩
    • 애플리케이션 데이터의 저장

  • 5장. 크로스 플랫폼 오디오 스트리밍
    • 들어가며
    • OpenAL 초기화와 .wav 파일 재생
    • 기본 오디오 구성 요소의 추상화
    • 사운드 스트리밍
    • Ogg 볼비스 파일의 디코딩
    • ModPlug를 이용한 트래커 음악의 디코딩

  • 6장. OpenGL ES 3와 OpenGL 3의 통합
    • 들어가며
    • OpenGL 3 코어 프로파일과 OpenGL ES 2의 통합
    • 윈도우에서 OpenGL 3 코어 프로파일의 초기화
    • 안드로이드에서 OpenGL ES 2의 초기화
    • GLSL 3와 GLES ES2 셰이더의 통합
    • 지오메트리 조작
    • 정점 배열의 통합
    • 텍스처를 위한 포장자 생성
    • 즉시 렌더링을 위한 캔버스 생성

  • 7장. 크로스 플랫폼 UI와 입력 시스템
    • 들어가며
    • 안드로이드에서 멀티터치 이벤트 처리
    • 윈도우에서 멀티터치 에뮬레이션 설정
    • 윈도우에서 멀티터치 이벤트 처리
    • 제스처 인식
    • 온스크린 조이패드 구현
    • 텍스처 렌더링을 위한 프리타입 활용
    • 인게임 문자열의 로컬라이제이션

  • 8장. 매치 3 게임 제작
    • 들어가며
    • 비동기 멀티터치 입력의 처리
    • 오디오 재생 메커니즘의 개선
    • 애플리케이션의 종료
    • 메인 루프 구현
    • 멀티플랫폼 게임 엔진 제작
    • 매치 3 게임 제작
    • 모양 관리
    • 게임 필드 로직 관리
    • 게임 루프 내에서 사용자 상호작용 구현

  • 9장. 그림 퍼즐 게임 제작
    • 들어가며
    • 그림 퍼즐 게임 로직 구현
    • 애니메이션 3D 이미지 선택기 구현
    • 페이지 기반의 사용자 인터페이스
    • 피카사 다운로더를 가진 이미지 갤러리
    • 완전한 그림 퍼즐 게임의 구현

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안