Java와 C를 이용한
프로 안드로이드 게임 개발


출판사
  제이펍
원출판사  Apress (원서 ISBN 9781430226475)
원서명  Pro Android Games
저자명  블라디미르 실바(Vladimir Silva)
역자명  류광
출판일  2010년 5월 10일
페이지  408쪽
판  형  4*6배판 변형(188*245) 반양장(Soft Cover)
정  가  26,000원
ISBN  978-89-962410-9-6  부가기호: 13560
시리즈  I♥Mobile 03 (아이러브모바일 03)
분  야  소프트웨어 개발 / 모바일 프로그래밍 / 게임 프로그래밍 / 안드로이드

관련 사이트


샘플 챕터



도서 구매 사이트(가나다 순)
강컴    교보문고    도서11번가    리브로    반디앤루니스    알라딘    영풍문고    예스이십사    인터파크

알리는 말씀
이 책의 번역은 국내 IT 서적 대표 역자 중의 한 명이신 류광 님께서 작업해주셨습니다. 이렇게 알리는 말씀이란 코너로 따로 안내해 드리고자 하는 이유는 다름 아닌, 용어 표기에 대해 독자들께서 혼란을 겪지 않을실까 해서 안내해드립니다. 번역 자체로는 그 어떤 IT 역자들과 견주어 손색이 없다고 평가합니다. 또한 독자들의 이해를 높이기 위한 역주 또한 독자들에게 많은 도움이 될 것입니다.

다만 기존의 책들, 그리고 우리가 흔히 알고 있던 용어들과 다르게 번역된 용어들이 있어 이를 안내해 드리니 읽는 데 불편함이 없었으면 합니다. 아래의 용어들은 평상 시의 우리말과 혼동될 경우에는 괄호를 하고 영문을 병기해 놓기는 하였습니다. IT 용어의 표기법에 대해서는 조만간 포스팅을 통해 출판사의 의견을 한번 개진해 보이도록 하겠습니다.

아무쪼록 불편함이 없기를 바라며, 무분별한 외래 용어 표기법에 대한 역자의 깊은 고민의 작은 결과물입니다만, 이에 대한 전적인 책임은 책을 펴낸 출판사의 몫이니 이와 관련하여 질문이나 불편하신 사항들이 있으시면 출판사로 전화나 메일을 주시면 감사하겠습니다.

이 책의 주요 용어 표기
Activity: 액티비티 → 활동                                        application: 애플리케이션 → 응용프로그램
context: 콘텍스트 → 문맥                                        event: 이벤트 → 사건
garbage collection: 가비지 콜렉션 → 쓰레기 수거기     handler: 핸들러 → 처리부                                     
hybrid: 하이브리드 → 혼성                                       import: 임포트 → 도입  
listener: 리스너 → 청취자                                         main: 메인 → 주   
proting: 포팅 → 이식                                                resouece: 리소스 → 자원  
runtime: 런타임 → 실행시점                                      singleton: 싱글레톤 → 단일체  
target: 타깃 → 대상                                                  toolbar: 툴바 → 도구모음  
toolchain: 툴체인 → 도구사슬                                    workspace: 워크스페이스 → 작업공간


도서 소개
이 책은 안드로이드(Android) 플랫폼을 위한 최상의 게임을 만들려는 독자를 돕는 책이다. 안드로이드 응용프로그램 개발에 대한 책은 많이 있지만, 기존 PC 게임을 최소한의 노력만으로 안드로이드 플랫폼에 이식한다는 독특한 접근방식을 제시하는 것으로는 이 책이 유일하다. 이 책은 실질적인 예제들을 통해서 그러한 접근방식을 보여준다. 이 책을 제대로 공부하기 위해서는 Java와 ANSI C에 대한 기초가 튼튼해야 한다. 복잡하고 어려운 개념들을 최대한 명확하고 간단하게 설명하고 있으며, 이해를 돕기 위해 그림과 소스 코드도 풍부하게 제시하고 있다. 각 장의 소스 코드는 개념을 세세하게 이해하는 데 도움을 주며, 독자가 스스로 게임을 만들 때 개발 시간을 최대한 단축하는 데에도 도움이 될 것이다. 부록 B는 역자가 작성한, 원서에는 없는 번역서만의 추가 내용인데, 이 부록의 주된 목적은 제2장의 작은 예제(개발 환경 점검이 목적인)를 제외한 이 책의 주요 예제들을 독자가 따로 리눅스를 준비하지 않고도 전적으로 Windows에서 빌드하고 실행할 수 있도록 하였다.

부록의 "NDK r3 활용"은 역자 류광 님께서 집필하여 추가하였는데, 이를 통해 제2장의 작은 예제(개발 환경 점검이 목적인)를 제외한 이 책의 주요 예제들을 독자가 따로 리눅스를 준비하지 않고 전적으로 Windows에서 빌드하고 실행할 수 있게 하였다.

이 책만의 특징
간단한 ARM C 컴파일러만 있으면 PC 게임들을 안드로이드 플랫폼으로 이식할 수 있다. 그 부분에 집중한다는 것이 바로 이 책만의 장점이다. Java가 기준인 안드로이드 개발 환경에서 C 코드를 재사용할 수 있다면, 수천수만 줄의 C 코드를 일일이 Java로 다시 작성할 필요가 없다. C와 Java를 우아한 방식으로 결합함으로써 시간과 비용을 엄청나게 절약할 수 있는 것이다. 이 책은 바로 그런 접근방식을 제시한다. 그것이 이 책의 목표이자 특징이다. 균형을 맞추기 위해, 초반부에서는 Java만으로 모바일 게임을 만드는 방법도 살펴본다.

뒷표지 내용
Asteroids™나 Wolfenstein 3D™, Doom 등등 게임 산업을 획기적으로 바꾼 게임들을 오늘날 가장 주목받는 모바일 및 넷북 플랫폼 중 하나인 Google의 안드로이드 플랫폼에서 직접 만들거나 이식할 수 있다면 어떨까? 이 책은 Space Blaster와 고전 Asteroids 같은 멋진 게임을 처음부터 모두 만드는 방법을 보여줄 뿐만 아니라, Doom과 Wolfenstein 3D 등 C로 작성된 고전 걸작 셰어웨어/오픈소스 게임들을 JNI(Java Native Interface)를 이용해서 안드로이드로 이식하는 방법도 보여준다.

이 책은 안드로이드 게임 개발에서 자바와 C를 균형 있게 결합한 혼성(hybrid) 접근방식이 얼마나 강력한지를 잘 보여주는 독특한 책이다. 자바의 우아한 객체지향적 특징들과 C의 강력한 성능을 결합한다면 안드로이드 플랫폼에서 못 만들 게임이 없다. 작동 가능한 소스 코드만 구할 수 있다면, 이 책을 통해서 여러분도 안드로이드용 게임 개발의 세계로 뛰어들 수 있다.

이 책의 주요 내용은 다음과 같다.

• 혼성 게임의 컴파일과 링크를 위한 Linux 시스템을 준비한다.
• 간단한 네이티브 라이브러리와 자바 코드로 이루어진 예제 프로젝트를 통해서 Java와 C를 우아한 방식으로 결합하는 방법을 제시한다.
• Space Blaster와 고전 아케이드 게임 Asteroids를 자바만 이용해서 직접 만들어본다.
• Google의 3차원 입방체 예제를 개선하는 예제를 통해, OpenGL 작업의 대부분을 C로 구현함으로써 3D 그래픽 성능을 높이는 방법을 설명한다.
• PC용 3D 슈팅 게임의 두 걸작인 Wolfenstein 3D와 Doom을 자바와 C의 조합을 통해 안드로이드에 이식한다.

이 책을 다 읽고 나면, PC용으로 만들어진 게임들을 급성장하고 있는 안드로이드 플랫폼으로 가져오는 것이 얼마나 쉬운지 알게 될 것이다. 기존 코드를 재사용함으로써 안드로이드용 게임을 좀 더 빠르게 만들어 내려는 게임 개발자에게 이 책이 큰 도움이 될 것이다.

저자 소개
블라디미르 실바(Vladimir Silva)
지은이 블라디미르 실바는 Middle Tennessee State University에서 전산학 석사 학위를 받았다. 그는 4년간 IBM에서 연구 공학자로 일하면서 분산 및 그리드 컴퓨팅에 대한 방대한 경험을 쌓았으며, 고급 기술과 집중력을 갖춘 개인이자 팀 플레이어다. 또한 그는 미국의 두 National Honor Society의 일원이며, IBM을 위해 여러 전산학 논문들을 발표하기도 했다. 저서로는 『Grid Computing for Developers』 (Charles River Media, 2005)와 『Practical Eclipse RCP Projects』 (Apress, 2009)가 있다.

옮긴이 소개
류광
옮긴이 류광은 1996년부터 활동해온 프로그래밍 서적 전문 번역가로, 『Game Programming Gems』 시리즈를 포함해서 십수 권의 게임 프로그래밍 책들을 번역했으며, Knuth 교수의 고전 『컴퓨터 프로그래밍의 예술』 시리즈 전권(1, 2, 3)과 Bjarne Stroustrup의 『Programming―Principles and Practice Using C++』를 비롯해서 다양한 분야의 프로그래밍 서적들을 30권 넘게 번역했다. 안드로이드 관련 번역서로는 『시작하세요! 안드로이드 프로그래밍』이 있다.

번역과 프로그래밍 외에 소프트웨어 문서화에도 많은 관심을 가지고 있으며, 수많은 오픈소스 프로젝트들의 표준 문서 형식으로 쓰이는 DocBook의 국내 사용자 모임인 닥북 한국(http://docbook.kr/)의 일원이다.

현재 번역서 정보 사이트 occam’s Razor(http://occamsrazr.net/)와 Game Programming Gems 스터디 사이트 GpgStudy.com(http://www.gpgstudy.com/)을 운영하고 있다.

차 례
1장 안드로이드 게임 개발을 시작하며

필요한 능력  2
    안드로이드 개발의 기초 지식  2
    리눅스와 셸 스크립팅 기초 지식  5
필요한 소프트웨어 도구들  5
개발용 리눅스 컴퓨터 준비  6
    안드로이드 소스 얻기  7
    네이티브 안드로이드 라이브러리 추출  10
    ARM 프로세서용 GNU 도구사슬 설치  12
    커스텀 컴파일 스크립트 작성  15
안드로이드 개발 환경 설정  26
요약  33

2장 안드로이드 네이티브 코드 다루기
기본적인 안드로이드 네이티브 프로그램  35
    AVD 생성  35
    안드로이드 프로젝트 만들기  38
    안드로이드 응용프로그램의 구조  40
공유 라이브러리의 컴파일과 시험  56
    기호 누락 문제 해결  61
    기기에서 동적 라이브러리를 검사  62
    strace를 이용한 디버깅  63
    정적 링크  65
안드로이드 응용프로그램에서 시험해 보기  67
요약  69

3장 순수 Java로 안드로이드 게임 만들기
안드로이드 게임 개발 대 Java ME 게임 개발  71
첫 Java 게임, Space Blaster 만들기  73
    게임의 전반적인 구조  74
    프로젝트 생성  76
    게임의 활동 클래스 작성  77
    게임 레이아웃 작성  79
    게임의 구현  86
    키 및 터치 사건 처리  97
에뮬레이터에서 시험해 보기  101
요약  102

4장 Java 게임 계속: 다각형 다루기
이번 장의 구성  105
안드로이드에서 다각형 그리기를 힘들게 하는 걸림돌들  106
직사각형 그리기에 관련된 걸림돌  108
Asteroids를 위한 다각형 클래스 만들기  111
Asteroids에 사용할 PolygonSprite 클래스  117
게임의 전반적인 구조  123
프로젝트 만들기  124
    게임 레이아웃 만들기  125
    프로젝트에 쓰이는 자원들  125
    게임의 수명 주기  127
    키 입력과 화면 터치 사건 처리  140
Asteroids를 에뮬레이터에서 시험  145
요약  146

5장 JNI를 이용한 혼성 OpenGL 3D 그래픽
모바일 기기의 성능  151
Java로 OpenGL 다루기  153
    Java 전용 버전의 주 활동  157
    표면 뷰  159
    GLThread  163
    입방체 렌더러  167
    Cube 클래스  171
네이티브 방식의 OpenGL 렌더링  174
    주 활동  177
    네이티브 연동 클래스  179
    기존 클래스들 고치기  181
    네이티브 입방체 렌더러  183
    네이티브 버전의 입방체 정의  192
    예제의 컴파일과 실행  194
OpenGL 게임을 안드로이드로 이식할 때 주의해야 할
사항들  200
베일이 벗겨지다  202

6장 3D 슈팅 게임 에피소드 I: 안드로이드용 Wolfenstein 3D
사전 준비  206
    이번 장 소스 코드 내려 받기  206
Wolf 3D 소개  207
게임의 전반적인 구조  211
Wolf 3D의 Java 클래스들  213
    게임의 주 활동  215
    Wolf 3D의 주 메뉴  219
    키 입력과 터치 사건 처리  222
    게임의 주 루프로 진입  224
    네이티브 콜백 호출  226
    배경 음악과 효과음 처리  229
    게임 컨트롤러 터치 사건 처리부  230
    게임 컨트롤러 구현  232
    음향 클래스들  242
    네이티브 연동 클래스  254
네이티브 계층  258
    주 게임 루프의 시작  259
    콜백: C에서 Java 메서드를 호출  263
네이티브 라이브러리 만들기  272
    Makefile 작성  272
    JNI 헤더와 DSO 생성  274
Wolf 3D를 에뮬레이터로 시험  275
요약  278

7장 3D 슈팅 게임 에피소드 II: 안드로이드용 Doom
Java/C 조합의 위력  280
Doom을 모바일 기기로 이식하기  282
Doom 게임의 전반적인 구조  285
Java 계층의 주 활동  287
    생성 처리부  288
    게임 UI 레이아웃  289
    메뉴 생성 및 선택 처리부  292
    키 입력 및 터치 사건 처리부  294
    네이티브 콜백 처리부  296
    게임 컨트롤러  302
음향 처리 클래스들  304
네이티브 연동 클래스  305
    콜백 청취자 인터페이스  306
    네이티브 메서드들  306
    C에서 Java로의 콜백들  308
네이티브 계층  311
    네이티브 메서드 구현  312
    원본 코드 고치기  327
Doom 네이티브 라이브러리(DSO) 컴파일하기  337
안드로이드용 Doom을 에뮬레이터로 시험  339
프로젝트 완수!  342

부록 A 설치 및 컴파일 요령
응용프로그램 서명  343
    키 저장소 만들기  344
    응용프로그램 서명  345
안드로이드 NDK를 이용해서 제6장, 7장 예제 라이브러리 컴파일하기  348
    NDK 1.5로 Wolf 3D 컴파일하기  351
    공유 라이브러리 컴파일  354
    NDK 1.5에서 OpenGL ES 사용하기  355
    NDK 1.6으로 Doom 네이티브 라이브러리 컴파일하기  357
책을 마치며  360

부록 B NDK r3 활용
NDK r3으로 제5장 OpenGL 입방체 예제 컴파일하기  364
    폴더 구조 준비  364
    Eclipse 프로젝트 준비  365
    네이티브 라이브러리의 컴파일 및 링크  367
    Java 소스 수정 및 실행  370
    NDK r3으로 제6장 Wolfenstein 3D 컴파일하기  371

찾아보기  375

댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 shin-e 2010.05.27 09:43 신고

    무신경한 한글화(ex:북한어) 또한 글로벌 커뮤니케이션(이것도 국제화 소통이라고 해야할까요?? ㅎ)에 역행한다고 보지만, 주관없는 외래어 남용 또한 한글의 뿌리를 흔드는 일이지요. 글은 물 흐르듯 거침없어야 하는데, 용어의 변경 때문에(모르는 단어가 아님에도) 막힘이 있다면 그 또한 고민해야할 부분이라고 생각합니다. 위와같이 책의 번역 방향에 대해 사전 설명이 있다면 독자들로서는 책을 이해하는데 충분한 배경을 안고 들어간다고 봅니다. 때론 프레젠테이션 과정에서 영문을 한글화 하려고 할 때, 적합한 용어가 생각이 나지 않아 발표의 흐름을 깨는 경우가 있는데, 류광님의 노력이라면 이러한 부분을 해소할 수 있을 것으로 기대합니다. 그런 저역자를 존중하고, 독자를 배려하는 출판사도 늘어야 겠구요ㅡ 적절한 타협을 도출해 내는 것이 편집자의 역할이니까요.. =)

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2010.05.27 14:42 신고

      안녕하세요? 오랜만입니다. ^^
      지적하신 것처럼 정말 고민스러운 부분입니다. 현재는 대부분이 사용하고 있는 것처럼 음차 형태로 표기를 많이 하고 있지만, 일개 개인인 역자나 출판사의 노력만으로는 한계가 있는 것 같습니다. ㅠㅠ
      편집자의 어깨가 좀 더 무거워짐을 느낍니다.

  2.  댓글주소  수정/삭제  댓글쓰기 KDU 2010.06.14 18:55 신고

    전 무리한 번역이라 생각합니다. 어차피 개념자체가 외국태생인 것을 번역안해도 이해가는것을 번역해서 문장을 불편하게 만드는지 모르겠습니다. 위의 책은 보지 않았지만 류광씨가 번역한 책 몇권을 보더라도 무리한 번역의 흔적이 있습니다. 본문중 용어 표기를 보니 이전에 제가 봤던 책들과 비슷할듯 보이네요.
    한 예로 액티버티는 그냥 액티버티라고 하는게 낫지 않을까요? 모든 사람이 이책을 보는것도 아닌데 이책에서만 이렇게 주관적으로 해버리면 주변사람과 의사소통은 어떻게 하라는 말씀인지 모르겠네요. 외국태생의 기술이기에 외국 문서도 봐야 하는데 위의 번역표는 무리한 번역이라 생각합니다.

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2010.06.16 17:36 신고

      안녕하세요? 댓글이 늦었네요. ^^;

      의견 주셔서 고맙습니다. 말씀해주신 것처럼 뜻있는 한두 사람의 활동으로는 한계가 있을 것 같다는 생각이 듭니다. 그렇다고 해서 우리말을 포기하는 듯한 행태를 출판사에서 보이는 것도 문제일 것 같습니다. 일개 출판사에서 적절한 조화를 이루는 게 참 어렵네요. 아무튼 의견 감사드립니다.

  3.  댓글주소  수정/삭제  댓글쓰기 3d게임에 쓰이는 캐릭터~ 2010.09.01 11:16 신고

    책과 별도로 궁금한 것이 있어서요~ 안드로이드에서 쓰이는 3d 캐릭터 등의 파일 포맷은 어떤것을 사용
    하는지요~ m3g와 같은 포맷은 지원을 안한다고 알고있는데~

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2010.09.01 14:06 신고

      안녕하세요? 문의하신 내용에 대해서는 저희가 전문적인 지식이 없어 말씀드리기가 힘들 것 같고요, 아래 역자의 도서지원페이지에 문의하시면 답변을 받으실 수 있을 것 같습니다.
      http://occamsrazr.net/zboard/zboard.php?id=free
      좋은 하루 되세요!!

  4.  댓글주소  수정/삭제  댓글쓰기 좋은책입니다. 2010.10.18 10:37 신고

    이책이 조금만 빨리 나왔더라도 NDK와 혼자 씨름을 하지 않아도 됬을텐데란 생각이 들만큼 좋은책입니다.
    우리나라 최고 역자중 한명이신 류광님의 빠른번역도 감사합니다.

    그렇지만 엑티비티를 활동이라고 변역하시는건 좀 아닌것 같아요..

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2010.10.18 20:25 신고

      책이 도움이 된 것 같아 저희도 기쁘고 고맙습니다.
      일부 용어에 대한 표기는 이 포스팅에도 적어두었지만, 독자분들의 넓은 이해를 부탁드립니다!

      감사합니다!

  5.  댓글주소  수정/삭제  댓글쓰기 소스코드 주소가 틀립니다. 2011.04.25 14:03 신고

    소스코드 주소가 틀립니다.
    빨리 처리해 주세요

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2011.04.25 17:46 신고

      안녕하세요?
      원서 홈페이지가 새로 바뀌면서 url이 모두 변경이 되었네요. 수정해놓았으니 다시 접속해보시길 바랍니다.
      감사합니다.

  6.  댓글주소  수정/삭제  댓글쓰기 블루투스 2011.05.24 00:08 신고

    안녕하세요. 해당 교제를 학습하다 궁금증이 생겨서요~

    블루투스 마지막 예제를 보면 D패드 중간키를 누르라는 말이 있는데...
    이 D패드의 중간키란 무엇인가요?? 블루투스 프로그램을 이용해서 데이터를 보낼려고 하는데, 어떻게 전송시키는지 몰라서요...

    P.S 전송된 데이터를 송신하는 측에서 해당 내용을 확인 가능한건가요ㅎ?

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2011.05.24 14:03 신고

      안녕하세요? 먼저 책을 구매해주셔서 고맙습니다.

      문의하신 내용은 출판사에서도 역자에게 문의를 한 뒤에 답변을 드려야 합니다. 그래서 불편하시겠지만, 역자께서 운영하는 게시판에 직접 문의를 해주시기를 바랍니다. 저희가 답변을 받아드릴 수도 있지만, 현재 독자 Q&A를 역자 운영 게시판에서 진행하고 있어 다른 독자분들에게도 문답들이 함께 있는 게시판을 통해 보는 게 더 도움이 될 것 같아서입니다.

      조금 불편하시겠지만 아래의 게시판에 다시 한 번 문의를 해주시면 고맙겠습니다.

      http://occamsrazr.net/zboard/zboard.php?id=free

      감사합니다.

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2011.05.24 22:47 신고

      안녕하세요? 혹시나 해서 역자이신 류광님 게시판에 가보았는데, 구입하신 책이 이 책이 아니라 [프로페셔널 안드로이드 2 애플리케이션 개발]이었군요.
      댓글을 다른 곳에 달아주셔서 저희도 덕분에 ^^ 헷갈렸네요.
      문의하신 내용은 지금 역자에게 확인메일을 보내 답변이 오는 대로 안내해드리도록 하겠습니다.

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2011.05.25 10:02 신고

      역자로부터 답변을 받았습니다.
      =================================
      에뮬레이터를 띄워보면 방향키가 있는데,
      이 키 패드가 바로 D패드입니다.
      가운데 버튼이란 말은 말 그대로 이 패드의 가운데 있는 버튼을 말하는 것이죠.
      =================================

      D패드 이미지도 같이 보내주셨는데, 여기에는 올릴 수가 없네요.
      문의하신 내용에 도움이 되기를 바랍니다.



티스토리 툴바