1. 광고배너
  2. 광고배너
/ 이전버튼 다음버튼
2
미리보기

안드로이드 NDK 게임 개발(ACORN+PACKT TECHNICAL BOOK)
저자 : 세르게이코사레브스키,빅토르라티포프 ㅣ 출판사 : 에이콘출판 ㅣ 역자 : 박지유

2016.05.27 ㅣ 388p ㅣ ISBN-13 : 9788960778658

정가30,000
판매가27,000(10% 할인)
적립금 1,500원 (5%)
배송일정 05월 09일 출고 가능
주문 수량 변경시 안내 배송안내
쿠폰 및 결제혜택 확인하기

크기 기타 규격
제품구성 단행본
이용약관 청약철회
국내도서 > 컴퓨터 > 컴퓨터일반 > 컴퓨터게임
★ 이 책에서 다루는 내용 ★

■ 인기 있는 C++ 라이브러리의 안드로이드 포팅
■ 포팅 가능한 멀티스레드 코드 작성
■ OpenAL을 이용한 오디오 재생
■ 제스처 인식 구현
■ 프리타입을 이용한 텍스트 렌더링
■ OpenGL ES의 활용과 데스크톱에서 게임을 개발하기 위한 OpenGL ES 추상 레이어의 생성
■ 데스크톱에서 모바일 애플리케이션의 디버깅
■ C++에서 플리커 및 피카사 웹 서비스 접근
■ 모바일 게임 엔진 구현

펼쳐보기

[목 차]

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 이미지 선택기 구현
__페이지 기반의 사용자 인터페이스
__피카사 다운로더를 가진 이미지 갤러리
__완전한 그림 퍼즐 게임의 구현
펼쳐보기
★ 이 책에서 다루는 내용 ★

■ 인기 있는 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를 이용해 피카사 온라인 서비스로부터 이미지를 다운로드할 것이다.
펼쳐보기
세르게이 코사레브스키(Sergey Kosarevsky)
C++와 3D 그래픽 경력을 가진 소프트웨어 엔지니어다. 여러 모바일 업체에서 근무했고, SPB 소프트웨어와 얀덱스(Ynadex)에서 모바일 프로젝트에 참여한 바 있다. 10년 이상의 소프트웨어 개발 경험과 4년 이상의 안드로이드 NDK 경험을 쌓았다. 러시아 상트페테르브루크의 상트페테르부르크 기계 설계국(St. Petersburg Institute of Machine Building)에서 기계공학 박사 학위를 받았다.

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

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

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.
도서평점
내용
등록하기
0/2000자
교환/반품 방법
  • 마이페이지 > 주문관리 > 주문/배송조회 > 주문조회 후  [1:1상담신청]  또는 고객센터 (1544-9020)
  • ※ 오픈마켓, 해외배송 주문상품 문의 시 [1:1상담신청] 또는 고객센터 (1544-9020)
교환/반품 가능기간
  • 변심반품의 경우 수령 후 7일 이내
  • 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
교환/반품 비용
  • 단순변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 해외직배송 도서 구매 후 단순변심에 의한 취소 및 반품 시 도서판매가의 20% 수수료 부과
교환/반품 불가사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 예) 만화, 잡지, 수험서 및 문제집류
  • 복제가 가능한 상품 등의 포장을 훼손한 경우 예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
상품 품절
  • 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기 >

    이 분야의 신간

    더보기 >
      맨위로가기

      영풍문고 로고

      • 회사명 : (주)영풍문고
      • 대표이사 : 김경환
      • 소재지 : 서울특별시 종로구 청계천로 41 (우)03188
      • 사업자 등록번호 : 773-86-01800 ㅣ 통신판매업 신고번호 : 2023-서울종로-0130 [ 사업자정보확인 ]
      • 개인정보관리 책임자 : 조순제 ㅣ customer@ypbooks.co.kr ㅣ 대량주문 : webmaster@ypbooks.co.kr
      COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED.
      영풍문고 네이버블로그 영풍문고 인스타그램
      맨위로가기