Top

나홀로 개발자를 위한 안드로이드 게임 프로그래밍

  • 지은이이병옥
  • ISBN : 9788960774223
  • 42,000원
  • 2013년 04월 30일 펴냄 (절판)
  • 페이퍼백 | 740쪽 | 188*250mm
  • 시리즈 : 모바일 프로그래밍

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

이 책은 안드로이드 게임을 만들고 싶어 하는 초보 자바 개발자를 대상으로 실전 게임 예제를 통해 기본기를 닦을 수 있게 한다. 안드로이드 플랫폼을 간단히 소개하고, 게임의 기반이 되는 캔버스, 서피스 뷰, OpenGL ES, 실전 게임 개발 방법 등을 다룬다. 실전 예제를 단계별로 구분해 장별로 게임 프로젝트를 수록해 따라하기 쉽고 소스 분석도 어렵지 않다. 안드로이드 SDK를 활용한 다양한 게임 예제를 통해 기본적인 학습 과정을 거쳐 퍼즐 게임, 보드 게임, 슈팅 게임, 카드 게임 등 캐주얼 게임을 개발하고, 3D 게임, 네트워크 게임 개발의 기초도 익힐 수 있다. 또한 카카오톡 연동을 통한 소셜 게임의 기초도 맛볼 수 있다.


[ 이 책에서 다루는 내용 ]

■ 안드로이드의 기본 학습
■ 캔버스와 서피스 뷰 및 게임 개발에 필요한 게임의 기본 학습
■ OpenGL ES를 이용한 게임 학습
■ 단순한 게임을 맛보기 위한 두더지 게임, 미니팡 게임
■ 시뮬레이션 슈팅 게임 Pacific 1942
■ 보드(카드) 게임 고스톱
■ OpenGL 3D 게임을 위한 3D 큐브 블록 게임
■ 네트워크를 이용한 일대일 바둑 게임
■ 안드로이드 게임 배포와 카카오톡 API 활용


[ 이 책의 특징 ]

■ 안드로이드 SDK를 이용한 모바일 게임 개발
■ 안드로이드 게임을 통한 캐주얼 게임 개발의 기초 학습
■ 단계별, 종류별 게임 설명
■ 단계별 예제를 별도로 제공함으로써 편리한 예제 활용 가능
■ 다양한 유형별 게임 분석과 응용



[ 이 책의 대상 독자 ]

■ 안드로이드 게임을 만들고 싶은 자바 개발자
■ 안드로이드 개발환경에 익숙하지만 게임은 처음 만들어보는 초급 개발자
■ 직접 게임을 만들고 구글 플레이에 올려 수익을 창출하고 싶은 독립 개발자
■ 네이티브 안드로이드 기반으로 게임을 만들고 싶은 개발자


[ 알고 있으면 좋은 내용 ]

이 책은 안드로이드를 조금이라도 알고 있으면 이해하는 데 큰 무리가 없다. 또, 안드로이드를 모르더라도 자바 언어를 알고 있다면 쉽게 학습할 수 있다.


[ 이 책의 구성 ]

이 책은 자바는 알지만 안드로이드를 잘 모르는 초보자에게 적합한 책이다. 안드로이드 기초부터 설명을 시작한다. 또한 안드로이드에서 제공하는 기본적인 기능으로 구현했다. 유니티3D 등 특별한 게임 라이브러리 중심의 설명이 아닌 순수한 안드로이드 SDK 중심으로 설명했다. 각 장은 다음과 같이 구성했다.

1장에서는 안드로이드의 개발을 위한 환경과 설치 과정에 대해 설명한다.

2장에서는 안드로이드를 처음 접하는 개발자를 위해 안드로이드의 기초를 설명한다. 게임이 아니더라도 기본적으로 알아야 할 안드로이드 개발의 시작이다.

3장에서는 안드로이드 게임을 만드는 데 필요한 그래픽과 서피스 뷰 기반의 게임 환경을 학습한다. 그래픽과 서피스 뷰는 안드로이드 게임의 가장 기본적인 사항이다.

4장에서는 OpenGL ES에 대해 배운다. OpenGL ES를 이용해 2D와 3D 객체를 구현하고 기본 원리를 설명한다. 참고로 오픈소스인 min3d 라이브러리를 사용해 3D 모델 객체를 사용해본다.

5장에서는 응용 게임 구현의 첫 단계로, 단순한 게임을 선택했다. 컴포넌트 기반의 두더지 게임과 서피스 뷰 기반의 미니팡 게임을 구현한다.

6장에서는 슈팅 게임을 구현한다. 슈팅 게임 중 1942 게임과 비슷한 형태로 구현한 Pacific 1942 게임을 만든다. 실시간 슈팅 게임의 특징에 맞게 게임을 구성하며, 스케줄러를 사용해 이미지와 스케줄러만 바꿈으로써 완전히 다른 게임을 만들 수 있다.

7장에서는 보드(카드) 게임을 구현한다. 우리나라에서 가장 많이 사용되는 대표적인 보드 게임으로는 고스톱이 있다. 출퇴근이나 점심시간 등 고스톱은 가장 많이 애용되는 게임 중 하나다.

8장에서는 OpenGL ES 기반의 3D 게임을 구현한다. 3D 게임은 일반적인 개인 개발자나 초보자에게는 어려운 작업이다. 특히 3D 게임은 게임보다 그래픽 자체를 구현하는 데 많은 시간이 필요하다. 따라서 8장은 그래픽보다는 OpenGL ES 자체를 이해하고 3D 게임을 응용해 구현하는 데 초점을 맞춘 3D 큐브 블록 게임을 선택했다.

9장에서는 네트워크 게임을 구현한다. 사람과 컴퓨터의 게임보다 사람과 사람의 게임은 상당히 흥미롭다. 9장은 네트워크 게임 중 알고리즘이 복잡해 보이는 바둑 게임을 구현한다. 네트워크 게임을 구현하는 데 필요한 소켓 프로그램과 프로토콜을 통해 네트워크 프로그램을 학습한다. 2명의 사용자가 와이파이를 통해 서로 연결하고 바둑을 둘 수 있다.

10장에서는 구글플레이 스토어에 대해 설명한다. 자신이 만든 안드로이드 앱을 구글플레이 스토어에 올리는 방법과 애드몹 광고를 추가하는 과정을 학습한다.

11장에서는 최근 유행하는 카카오톡과 연계한 API 사용법을 설명한다. 5장의 예제로 사용한 미니팡 게임에 카카오톡 API를 연동한 후 카카오톡으로 배포하고 실행하는 과정을 배운다.


[ 추천의 글 ]

PC 게임이나 콘솔 게임은 독립 개발자를 비롯해 소규모 그룹(이하 개인 그룹)이 접근하는 데 한계가 있습니다. 이는 게임의 리소스나 스케일이 방대해지면서 소규모 그룹이 제작할 수준을 넘어서기 때문입니다. 모바일 시장이 활성화되면서 개인 그룹에도 새로운 시장의 한 축으로 문호가 활짝 열렸지만, 이제는 모바일 게임도 대규모 물량을 투입하는 게임이 늘어나면서 독립 개발자가 설 자리가 줄어들지나 않을까 염려되기도 합니다. 모바일 디바이스가 점차 고사양이 됨에 따라 사용할 수 있는 자원의 양이 늘고 있고, 이로 인해 게임의 스케일도 커지고 있습니다. 게임에 투입되는 자원의 규모가 커져가는 환경 속에서 독립 개발자들은 좀더 창의적인 아이디어와 개발 기술로 무장할 필요가 생겼습니다. 그 길만이 시장에서 살아남을 가능성을 높여줄 겁니다. 그렇지만 게임 분야는 아직도 독립 개발자들에게 많은 가능성으로 남아 있습니다. 이는 하드웨어가 갖는 모바일의 특성이 아니라 사용 패턴의 모바일 특성에서 기인합니다.

이 책은 게임에 필요한 기초적인 안드로이드의 API 수준 내용부터 시작해서 게임을 구현하기 위한 공통 알고리즘, 그리고 실전 게임을 개발하기 위한 게임장르별 로직 처리까지 다룹니다. API 수준의 사용법을 설명하는 것보다 알고리즘이나 로직을 독자에게 이해가 되도록 전달하는 것이 훨씬 어려운 작업입니다. 이 책은 이런 어려운 부분까지 아울러서 설명하고자 노력을 기울이고 있습니다. 게임 개발의 기본은 예전이나 지금이나 많은 부분이 동일합니다. 또 감히 예상하건대, 앞으로도 비슷할 것입니다. 곧장 게임 엔진으로 달려가지 않고 이 책을 통해 게임 개발의 핵심에 대한 기초를 다져 놓는다면 나중에 어떤 게임 엔진을 사용하든지 간에 자신이 가고자 하는 방향으로 원활히 발전할 수 있을 것입니다.
-『나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것』 저자 일동


우리에게 갑작스럽게 다가온 아이폰으로 스마트폰 붐이 시작된 이래, 어떤 콘텐츠나 서비스가 새롭게 각광받게 될지 무성한 추측들이 있었습니다. 몇 년이 지난 지금 그 주인공이 게임이라는 점에 이론의 여지는 없을 것 같습니다.
구글플레이 마켓이나 앱스토어 마켓을 보면 매출 순위 대부분을 게임이 휩쓸고 있고, 카카오톡 게임의 등장으로 우리나라에서도 실리콘밸리 같은 새로운 벤처 성공 신화가 곳곳에서 탄생 중입니다. 특히 구글플레이의 경우에는 매출 규모 면에서 2013년 4월 현재 우리나라가 미국을 제치고 일본에 이어 세계 2위를 차지하고 있습니다. 혹자들은 거품이나 과열을 우려하기도 하지만, 지난 역사를 돌이켜보면 늘 기회가 있는 곳에는 그런 우려가 따라 다녔습니다. 지금이야말로 열정과 실력을 가진 개발자들이라면 새로운 무대에 도전해볼 수 있는 최적의 기회가 아닐까 생각해봅니다.

온라인 업계를 비롯한 타 업계 출신의 경력 개발자는 물론 초급 개발자들까지 모바일 게임 개발에 많은 관심을 가진 요즈음, 이 책이 그런 분들을 위한 좋은 길잡이가 될 것이라 믿습니다. 이 책은 요즘 국내에서 많이 활용되는 유니티3D나 코코스2d-x 같은 엔진을 사용하지 않고, 네이티브 방식으로 게임 제작의 기본 원리부터 설명합니다. 보통 다른 책들이 개발 엔진, 언어 중심으로 내용을 전개하는 데 비해 이 책은 게임의 기초에 집중하며, 그런 의미에서 게임이 어떤 식으로 돌아가고 어떤 식으로 제작되는지 기본을 알고 싶은 타 분야 경력자나 초급 개발자들에게 안성맞춤의 선택일 것입니다.
내용 면에서도 퍼즐, 보드, 슈팅, 카드 게임 등의 캐주얼 게임류의 기본 제작 방법 외에 3D 게임과 네트워크 게임의 기초까지 다룹니다. 게다가 요즘 국내 시장을 주도하는 카카오톡 관련 연동 기능도 다룸으로써 독자들이 캐주얼 소셜 게임에 도전하는 데 큰 보탬이 될 것입니다. 여러분이 도전의 첫걸음을 내딛는 데 이 책이 좋은 발판이 되기를 기대합니다.
- 박기성 / 게임빌 제작3그룹장, 「에이콘 게임 프로그래밍 시리즈」 에디터

저자/역자 소개

[ 저자 서문 ]

안드로이드 플랫폼은 우리에게 많은 기회를 안겨주고 있다. 큰 비용이 필요치 않고 누구나 약간의 노력만 한다면 개발할 수 있는 환경을 갖출 수 있다. 인터넷상에 많은 소스가 제공되므로 필요한 기능은 직접 만들거나 쉽게 얻을 수 있다. 이러한 이유로 안드로이드 앱을 만드는 것은 어떤 모바일 앱보다도 수월하다. 나 역시 우연히 훑어본 안드로이드 책 덕분에 안드로이드를 처음 접한 후 지금까지 안드로이드 앱을 만들고 있다.

우리에게 안드로이드 플랫폼이란 어떠한 의미가 있는 것일까? 강력하기 때문에? 인기가 있기 때문에? 개발하기 편리하기 때문에? 개발자에게 부여할 혜택을 생각해본다면 누구에게나 공개된 시장을 통해 배포할 기회가 주어졌다는 점이 먼저일 것이다. 기회란 많은 이들에게 다가오지만 그 기회를 낚아채는 사람은 많지 않다. 기회를 잡는 자는 자신의 의지가 멈추지 않는 사람이자 목표에 도달하기 위해 꾸준한 노력을 하는 사람일 것이다. 단순한 진리지만 이것을 실현할 수 있는 사람은 많지 않다. 그래서인지 목표에 도달할 수 있는 사람은 능력보다는 의지를 갖춘 사람이라 생각한다.

이 책은 그러한 의지를 갖춘 사람을 위한 책이다. 책의 내용이 그리 어렵지 않거니와 고난도의 기법을 사용하는 것도 아니다. 어찌 보면 단순한 형태의 모듈을 조립하고 유연하게 엮어 게임을 만드는 작업을 설명해 놓은 책이다. 의지만 있다면 이러한 작업은 누구에게나 가능한 일이고, 이를 통해 자신이 만들고자 하는 게임을 만들어 볼 수 있다. 게임은 많은 개발자에게 흥미로운 분야다. 그래서인지 젊은 시절 IT 분야를 꿈꿔온 사람 중 상당수가 게임 전문가를 꿈꾼다. 그런 초급 개발자를 위해 후배에게 설명하듯 이 책을 작성했다.

이 책은 안드로이드의 기본적인 개발 내용과 게임을 위한 기본 과정을 설명하고, 다양한 종류의 실전 게임을 만들어 제공한다. 수록할 게임을 가급적 단순화하려 노력했고 분야별로 다양하게 기술하기 위해 애썼다. 특히 자바를 알고 있지만 안드로이드를 잘 모르는 초급 개발자나 게임을 처음 접하는 개발자에게도 유용하리라 믿는다.

- 이병옥


[ 저자 소개 ]

이병옥
원광대학교 제어계측공학과를 졸업했으며, 비트교육센터 전문가 과정을 거쳐 IT계에 입문했다. 금융 IT와 관련된 개발 업무를 주로 했으며, LG CNS를 거쳐 현재 IBK 시스템 모바일 팀에 근무 중이다. 금융권 모바일 프로젝트에 참여했으며, 웹앱과 안드로이드, 윈도우 프로그램에 관심이 많다. 저서로 에이콘출판사에서 펴낸 『센차터치 모바일 프로그래밍』(2011), 『센차터치2 + 폰갭 프로그래밍』 (2012)이 있다.

목차

목차
  • 1부 안드로이드 기본
  • 01 안드로이드 소개와 환경설정
    • 1.1 안드로이드 소개
    • 1.2 안드로이드 설치와 개발 환경
      • JDK 설치
      • 통합 개발 툴 설치(이클립스+안드로이드 SDK)
      • 개별 설치 과정
      • 안드로이드 가상 장치 설정
      • 스마트 폰 USB 드라이버 설치와 폰의 USB 디버깅 설정
      • 컴파일 환경설정
  • 02 안드로이드 프로그래밍 기본
    • 2.1 Hello Android
    • 2.2 디버깅
    • 2.3 기본 화면의 구성과 이벤트
    • 2.4 레이아웃과 화면 배치
    • 2.5 액티비티와 화면 이동
    • 2.6 액티비티의 리턴 값 전달
    • 2.7 사용자 이벤트
  • 2부 안드로이드 게임의 기본
  • 03 안드로이드 게임 만들기 기초
    • 3.1 뷰와 캔버스
    • 3.2 이미지, 텍스트 다루기
    • 3.3 스레드 제어
    • 3.4 서피스 뷰 다루기
    • 3.5 터치 이벤트
    • 3.6 멀티터치 이벤트
    • 3.7 게임 화면 설정
    • 3.8 파일 입출력
    • 3.9 게임 사운드
    • 3.10 스프라이트 이미지
    • 3.11 센서 사용
  • 04 OpenGL ES
    • 4.1 OpenGL ES 소개
    • 4.2 OpenGL ES의 기본 구현
    • 4.3 텍스처 입히기
      • 하나의 FlaotBuffer로 정점과 이미지를 처리할 경우
    • 4.4 사각형 텍스처 다루기
    • 4.5 3D 프레임 구현
    • 4.6 3D 입체면 구현
    • 4.7 3D 텍스처 입히기
    • 4.8 3D 모델 불러오기(min3d 라이브러리)
  • 3부 실전 게임 만들기
  • 05 캐주얼 게임
    • 5.1 두더지 게임
    • 5.2 미니팡
  • 06 슈팅 게임: Pacific 1942
    • 6.1 Pacific 1942 개요
    • 6.2 객체(비행기) 만들기
    • 6.3 객체의 움직임 구현
    • 6.4 객체를 센서로 움직이기
    • 6.5 총알 발사
    • 6.6 적 객체 생성
    • 6.7 적기의 총알 발사
    • 6.8 충돌 체크(폭발)
    • 6.9 배경 그리기, 사운드
    • 6.10 게임 화면 내비게이션
    • 6.11 스케줄러와 스테이지 관리
  • 07 보드(카드) 게임: 고스톱
    • 7.1 고스톱 게임 개요
    • 7.2 기본 화면 설정
    • 7.3 고스톱 카드의 위치 설정
    • 7.4 고스톱 카드 객체 구현
    • 7.5 카드의 선택과 이벤트 핸들러
    • 7.6 고스톱 알고리즘와 화면 모드 관리
      • 손 안의 카드내기
      • 가운데 카드 열기
      • 가운데 카드 더미로부터 카드내기
      • 상대 카드 가져오기
      • 바닥의 카드 가져오기
      • 점수 계산
      • 금액 계산
      • 선택 상황에서의 선택 창 사용
      • 선택 창 보여주기
      • 선택 창에서의 카드 선택
      • 컴퓨터의 연산
  • 08 OpenGL ES 3D 게임: 3D 큐브 블록
    • 8.1 3D 큐브 블록 게임 개요
    • 8.2 2D 게임 적용(Pacific 1942 비행기 그리기)
    • 8.3 3D 큐브 블록의 제어
      • 큐브 1개의 이동에 대한 좌표 변환
      • 큐브 1개의 회전에 대한 좌표 변환
    • 8.4 3D 큐브 게임 구현
  • 09 네트워크 바둑 게임
    • 9.1 네트워크 바둑 게임의 개요
    • 9.2 네트워크 프로그램
    • 9.3 소켓을 이용한 모바일 채팅
    • 9.4 바둑 게임의 화면 구성
    • 9.5 바둑 알고리즘
    • 9.6 네트워크 바둑 게임
  • 4부 안드로이드 앱 배포
  • 10 구글 마켓으로 배포
    • 10.1 구글 마켓
    • 10.2 안드로이드 앱 등록
      • APK 파일 생성
      • APK 파일 구글플레이 스토어 등록
    • 10.3 애드몹 광고 등록
  • 11 카카오톡을 이용한 배포
    • 11.1 카카오톡 API 사용
    • 11.2 카카오링크 API 사용
      • 앱 링크 전달
      • 안드로이드 OS 공유 기능 활용
      • URL 보내기
      • 앱 보내기
      • 문자 보내기
      • 이미지 보내기
      • 동영상 보내기

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[ p8 7행 ]
플랫폼 → 플랫폼이란

[ p131-133 용어 통일 ]
포인터 ID → 포인터 인덱스