티스토리 뷰
11월 12일 리뷰 - 리뷰자 김종욱
안드로이드 게임 프로그래밍(Beginning Android Games)
마리오 제흐너 지음, 유윤선 옮김
마리오 제흐너 씨게서 지필하신 안드로이드 게임 프로그래밍은 안드로이드 게임 엔진을 어떻게 설계할지 그리고 어떤식으로 디자인하고 만들어야할지에 관한 기초 입문서이다. 본 블로거가 위 책을 읽으면서 가장 감명 깊었던 점은, 본 책의 과정을 처음부터 끝까지 차례대로 알맞게 이행한다면, 자신만의 엔진을 하나 완성할 수 있다는 것이다. 이를 통해 게임 프로그래밍이나, 게임 엔진 아키텍처에 막 입문하려는 입문자들과 게임이 어떻게 구동하는지 궁금해하는 프로그래머들의 욕구를 충족시켜줄 훌륭한 책이라는 점이 가장 감명 깊었다. 따라서 자신이 Open GL 2.0이나 혹은 소프트웨어 아키택쳐를 조금 이라도 배운 사람이라면 본 서를 쉽게 이해하고 공부할 수 있을 것이다.
안드로이드 게임 프로그래밍 책의 구성은 크게 다음과 같다. 일반적인 게임 구현 -> 엔진을 이용한 게임 구현 -> 2D 게임 엔진 구현 -> 이를 응용한 게임 구현 -> 3D 게임 엔진 구현 -> 마지막으로 3D 엔진과 관련된 게임 구현의 순으로 구성되어있다. 각 챕터마다 내용이 모두 알차게 구성되어있고, 안드로이드 프로그래밍에 관한 조금의 지식만을 가지고도 충분히 책의 과정을 따라할 수 있다는 점에서 본 서의 접근성은 최고라 평할 수 있다. 또한 책의 짜임에서 볼 수 있듯이, Step by Step 즉 엔진의 구성도의 순서에 맞춰서 책의 짜임새를 구성하였기 때문에 본 서를 꼼꼼히 학습하신 분이라면 엔진의 구조가 어떠한지 체계적으로 이해할 수 있다. 무엇보다 위의 엔진을 통해 자신만의 게임을 만들어 서비스하거나 판매할 수 있다는 점에서 본 서는 과히 안드로이드 게임 프로그래밍의 정석 입문서라 평해도 될 만하다고 생각한다.
【어떤 독자를 위한 책인가】
안드로이드 게임 프로그래밍 책은 안타깝게도 안드로이드 프로그래밍의 지식이 전무한 독자가 접하기엔 약간의 벽이 있는 책이다. 자신이 안드로이드에 관해 조금 알고 있다, 그리고 시스템이나, 소프트웨어 아키텍쳐 구성에 관해서좀 안다고 생각되는 독자라면 게임을 만들기에 앞서 본 서를 꼭 읽어보길 권하며 부가적으로 OPEN GL 2.0과 같이 그래픽 프로세싱을 잘하는 독자라면 본서를 읽으며 거의 진입장벽을 느끼지 못할 것이다.
【책의 구성】 안드로이드 게임 프로그래밍의 구성은?
위의 사진은 안드로이드 게임 프로그래밍 의 일부분을 발취한 사진으로, 책의 설명은 다양한 코드와 위와 같은 설계도안을 제시하고 함께 의논해가며 프로젝트를 완성해가는 구성으로 이루어져있다. 또한 책이 깔끔하게 다양한 그림들과(홈페이지에서는 보다 자세한 설명을 들어가며 설명해 주고 있다.) 알고리즘을 정리하여 제공해 주고 있어서 위에서 언급한 것과 같이 생각보다 진입 장벽이 높지 않다. 무엇보다 독자가 직접 게임을 구성하고 만들며 자신의 것으로 만드는 과정을 통해, 자신도 모르는 사이에 게임 프로그래밍 중급자가 되어있는 자신을 확인할 수 있을 것이다.
안드로이드 게임 프로그래밍의리뷰를마치며
- 안드로이드 게임 프로그래밍 책은 나의 근 20년간의 프로그래밍 생활 동안 내 머리에 가장 강력한 인상을 심어준 몇 안되는 책 중 하나이다. 거의 대부분의 개발자들이 자신의 엔진 구성 방법론에 관해 공개하기를 꺼려하는데 독자의 경우 이 모든 것을 오픈하였고 심지어 사람들이 친절히 학습할도록 책까지 만들었으니 인상이 남을 수 밖에 없었다. 하여 본 블로거는 게임 프로그래밍을 배우고자 하는 프로그래머나, 막 입문하신 분이라면 어느정도 자신의 실력을 쌓고 본서를 꼭 읽어보실 것을 권한다.
【안드로이드 게임 프로그래밍을 읽고…….】
요즘 세계적인 트랜드가 자신이 개발한 소스 코드를 오픈소스화 하여 다양한 사람이 함께 프로젝트를 진행하는 방식이다. 이는 자신의 사고 선에서 해결할 수 없는 문제를 다양한 사람의 시각과 관점에서 풀어보고자 하는 것이다. 그 만큼 시대가 복잡해졌고 우리가 당면한 문제가 한 분야에 국한되지 않음을 의미하는 것이라 해석 할 수 있다. 따라서 시대의 판국이 이러한 만큼 본서와 본 블로거를 구독하는 독자 분들 모두가 오픈소스 프로그래밍을 지향하는 개방된 개발자가 되시길 바라는 바이다.
【점수…….】
구성 : ★★★★★내용:★★★★★디자인: ★★★★★전문성 : ★★★★★
#본 리뷰는 리뷰자 김종욱의 저작권에 귀속되므로 참고시 참고 URL과 명시를 저작자에게 알려주시길 바랍니다.
#본 리뷰의 점수 및 평가 내용은 김종욱 리뷰자의 한정된 것이므로 확정된 답이 안임을 명시합니다.
#학습과 관련된 질문과 문제에 대한 질문은 일체 받지 않습니다. 스스로 찾아서 학습하는 것 그것이야 말로 진정한학습자입니다.
###### 감사합니다 ######
이 책의 저자인 마리오 제흐너는 오픈소스 크로스플랫폼 게임 개발 솔루션인 libgdx의 주 개발자로서 누구보다도 게임 프레임워크를 만드는 법을 잘 설명할 수 있는 저자다. 이 책에서는 게임 개발의 기본이 되는 파일 입출력(I/O), 사용자 입력 처리, 그래픽, 오디오 등 각 프레임워크 요소를 추상화하고 실제 예제 코드를 통해 각 프레임워크 요소를 적절히 구현함으로써 재사용할 수 있는 게임 프레임워크를 완성하는 법을 보여준다. 또 게임 로직 구현에 도움이 되는 배경 지식에 대한 설명을 통해 충돌 감지, 비트맵 블리팅, 3D 그래픽 프로그래밍 같은 고급 주제를 차례로 소개한다.
01장 안드로이드, 뉴 키즈 온 더 블록
안드로이드에 대한 간단한 소개
파편화
구글의 역할
- 안드로이드 오픈소스 프로젝트
- 안드로이드 마켓
- 챌린지, 개발자 지원 프로그램, 구글 I/O
안드로이드의 기능과 아키텍처
- 커널
- 런타임과 달빅
- 시스템 라이브러리
애플리케이션 프레임워크
소프트웨어 개발 킷
개발자 커뮤니티
기기, 기기, 기기!
- 하드웨어
- 1세대, 2세대, 차세대
- 차세대 기기
- 게임 컨트롤러
모바일 게임의 차이점
- 주머니 속으로 들어간 게임 기기
- 상시 접속 상태의 유지
- 캐주얼 게임과 하드코어 게임
- 큰 시장과 적은 수의 개발자
정리
02장 안드로이드 SDK 첫 걸음
개발 환경의 설정
- JDK의 설정
- 안드로이드 SDK의 설정
- 이클립스의 설치
- ADT 이클립스 플러그인의 설치
- 이클립스 간단히 살펴보기
안드로이드 방식의 Hello World
- 프로젝트의 생성
- 프로젝트 내용 살펴보기
- 애플리케이션 코드의 작성
안드로이드 애플리케이션의 실행과 디버깅
- 기기 연결
- 안드로이드 가상 기기의 생성
- 애플리케이션의 실행
- 애플리케이션 디버깅
- 로그캣과 DDMS
- ADB의 활용
정리
03장 게임 개발
장르 - 각인각색
- 캐주얼 게임
- 퍼즐 게임
- 액션 및 아케이드 게임
- 타워 디펜스 게임
- 혁신 게임
게임 설계 - 펜은 코드보다 강하다.
- 핵심 게임 방식
- 게임 스토리와 아트 스타일
- 화면과 화면 전환
코드 - 핵심적인 세부 내용
- 애플리케이션과 창 관리
- 입력
- 파일 I/O
- 오디오
- 그래픽
- 게임 프레임워크
정리
04장 게임 개발자를 위한 안드로이드
안드로이드 애플리케이션의 정의 - 매니페스트 파일
- 「manifest」 엘리먼트
- 「application」 엘리먼트
- 「activity」 엘리먼트
- 「uses-permission」 엘리먼트
- 「uses-feature」 엘리먼트
- 「uses-sdk」 엘리먼트
- 10단계로 끝내는 안드로이드 게임 프로젝트 설정
- 게임의 아이콘 정의
안드로이드 API의 기본
- 테스트 프로젝트의 생성
- 액티비티 생명주기
- 입력 기기의 처리
- 파일 처리
- 오디오 프로그래밍
- 효과음의 재생
- 스트리밍 음악
- 기본 그래픽 프로그래밍
모범 개발 방식
정리
05장 안드로이드 게임 개발 프레임워크
공략 계획
AndroidFileIO 클래스
AndroidAudio, AndroidSound, AndroidMusic
AndroidInput과 AccelerometerHandler
- AccelerometerHandler: 가속도계의 감지
- Pool 클래스: 재사용은 좋은 것이다!
- KeyboardHandler: 위, 아래, 왼쪽, 오른쪽
- 터치 핸들러
- AndroidInput: 위대한 조율자
AndroidGraphics과 AndroidPixmap: 두 개의 무지개
- 각기 다른 화면 크기와 해상도의 처리
- AndroidPixmap: 사용자를 위한 픽셀 조정
- AndroidGraphics: 드로잉 작업의 수행
- AndroidFastRenderView: 루프, 확장, 루프, 확장
AndroidGame: 모든 내용의 종합
정리
06장 Mr. Nom 안드로이드를 침공하다
자원의 생성
프로젝트 설정
MrNomGame: 메인 액티비티
- Assets: 편리한 자원 저장소
- Settings: 사용자 선택값과 하이스코어의 추적
- LoadingScreen: 디스크로부터 자원 로드
메인 메뉴 화면
HelpScreen 클래스(들)
하이스코어 화면
- 숫자 렌더링: 짧은 여행
- 화면 구현
추상화... 301
- Mr. Nom의 게임 공간에 대한 추상화: 모델, 뷰, 컨트롤러
- GameScreen 클래스
정리
07장 오픈GL ES의 간단한 소개
오픈GL ES는 무엇이고 왜 알아야 하나?
- 프로그래밍 모델: 비유
- 투영
- 정규화된 기기 공간과 뷰포트
- 매트릭스
- 렌더링 파이프라인
시작에 앞서 알아야 할 내용들
작업을 쉽게 도와주는 GLSurfaceView
GCGame: Game 인터페이스의 구현
엄마, 내가 빨간색 삼각형을 그렸어!
- 뷰포트의 정의
- 투영 매트릭스의 정의
- 삼각형의 지정
- 내용 정리
정점 색상의 지정
텍스처 매핑: 손 쉬운 이미지 배치 작업
- 텍스처 좌표
- 비트맵 업로드
- 텍스처 필터링
- 텍스처의 정리
- 유용한 코드 조각
- 텍스처 활성화
- 내용 정리
- 텍스처 클래스
인덱스를 갖는 정점 - 재사용은 항상 유용하다.
- 내용 정리
- Vertices 클래스
알파 블렌딩
다양한 원시 도형 : 점, 선, 스트립, 팬
2차원 변형: 모델-뷰 매트릭스를 활용한 재미있는 프로그래밍
- 세계 공간과 모델 공간
- 다시 살펴보는 매트릭스
- 변형을 활용한 첫 번째 예제
- 더 많은 변형
성능 최적화
- 프레임 레이트의 측정
- 안드로이드 1.5에서 실행되는 히어로의 문제 사례
- 오픈GL ES 렌더링을 느리게 만드는 요인
- 불필요한 상태 변화의 제거
- 텍스처 크기를 줄이면 가져올 픽셀도 줄어든다
- 오픈GL ES/JNI 메서드 호출의 제한
- 바인딩 정점
- 마무리하며
정리
08장 2D 게임 프로그래밍 기법
시작에 앞서
태초에 벡터가 있었다
- 벡터의 활용
- 간단한 삼각함수 이론
- Vector 클래스의 구현
- 간단한 사용 예제
간단한 2차원 물리
- 뉴턴과 오일러, 영원한 좋은 친구들
- 힘과 질량
- 이론적인 적용
- 실제 적용
충돌 감지와 2차원에서의 객체 표현
- 경계 도형
- 경계 도형의 구성
- 게임 객체의 어트리뷰트
- 광범위 충돌 감지와 미세 충돌 감지
- 적용 예제
2차원 카메라
- Camera2D 클래스
- 예제
텍스처 아틀라스: 공유는 관심이다
- 예제
텍스처 영역, 스프라이드, 배치: 오픈GL ES 숨기기
- TextureRegion 클래스
- SpriteBatcher 클래스
스프라이트 애니메이션
- Animation 클래스
- 예제
정리
09장 수퍼 점퍼 - 2D 오픈GL ES 게임
핵심 게임 방식
게임의 배경 이야기와 아트 스타일
화면과 화면 전환
게임 세계의 정의
자원의 생성
- UI 요소
- 비트맵 폰트를 활용한 텍스트 처리
- 게임 요소
- 텍스처 아틀라스
- 음악과 효과음
수퍼 점퍼 게임의 구현
- Assets 클래스
- Settings 클래스
- 메인 액티비티
- Font 클래스
- GLScreen
- 메인 메뉴 화면
- 도움말 화면
- 하이스코어 화면
- 시뮬레이션 클래스
- WorldRenderer 클래스
최적화하기 또는 최적화하지 않기
정리
10장 오픈GL ES를 활용한 3D
시작에 앞서
3D의 정점
- Vertices3: 3D 위치의 저장
- 예제
시점 투영 - 가까이 있는 대상을 더 크게
z버퍼 - 혼란 속에 질서를 부여하다
- 이전 예제의 수정
- 블렌딩 - 뒤에 아무도 없다
- z버퍼의 정확도와 z 파이팅
3D 메시의 정의
- 큐브 - Hello World 3D
- 예제
다시 살펴보는 매트릭스와 변형
- 매트릭스 스택
- 매트릭스 스택을 갖춘 계층적 시스템
- 간단한 나무상자 태양계 시스템
- 정리하기
- 간단한 카메라 시스템
정리
11장 3D 프로그래밍 트릭
시작에 앞서
3D에서의 벡터
오픈GL ES에서의 광원
- 광원의 적용 방식
- 광원
- 재료
- 오픈GL ES가 빛을 계산하는 방법 - 정점 법선
- 실제 적용
- 오픈GL ES의 광원 사용과 관련한 몇 가지 참고 사항
밉매핑
간단한 카메라
- 1인칭 카메라 또는 오일러 카메라
- 오일러 카메라 예제
- 관찰 카메라
모델의 로딩
- Wavefront OBJ 형식
- OBJ 로더의 구현
- OBJ 로더의 활용
- 모델 로딩과 관련한 참고사항
간단한 3D 물리 이론
3D에서의 충돌 감지와 객체 표현
- 3D에서의 경계 도형
- 경계 구의 충돌 검사
- GameObject3D와 DynamicGameObject3D
정리
12장 드로이드 인베이더 - 그랜드 파이널
핵심 게임 방식
배경 이야기와 아트 스타일
게임 화면과 화면 전환
게임 세계의 정의
자원의 생성
- UI 자원
- 게임 자원
- 음악과 효과음
접근 방법
Assets 클래스
Settings 클래스
메인 액티비티
메인 메뉴 화면
설정 화면
시뮬레이션 클래스
- Shield 클래스
- Shot 클래스
- 우주선 클래스
- 인베이더 클래스
- 세계 클래스
GameScreen 클래스
WorldRender 클래스
최적화
정리
13장 게임 배포
테스트에 대한 조언
개발자 등록
게임 APK 서명
마켓에 게임 배포
- 자원 업로드
- Listing Details
- 배포 옵션
- 배포!
- 마케팅
개발자 콘솔
정리
14장 이제 어디로?
게임의 소셜 연동
위치 기반 게임
멀티플레이어 기능
오픈GL ES 2.0 및 그 외 기능
프레임워크와 엔진
웹 자료
맺음말
죽으면 어떻게 돼요?
1. 도서명 : 죽으면 어떻게 돼요?2. 저자 : 페르닐라 스탈펠트 글·그림 / 이미옥 옮김 3. 판형 : 153*224*10mm 4. 가격 : 9500원 / 판매가 약 8,550원 5. 페이지 : 36쪽 6. 내용 구성 죽으면 어떻게 될까?? 다들 한 번쯤 그렇게 생각해 본 적이 있을 것이다. 이 책에서는 그에 대한 궁금증을 풀어서 얘기해주고 있다. 뿐만 아니라 죽으면 겪는 주변 사람들의 변화들도 묘사해준다. 책의 구성 방식이 굉장히 자유롭고, 자칫
ghes.tistory.com
역시 내 청춘 러브코메디는 잘못됐다 7.5
친구의 추천으로 역시 내 청춘 러브코메디 7.5권 즉 내청코 7.5권을 사서 보게 되었습니다. 읽어보니 친구가 왜 추천한지 알게 되더군요... 주인공 하치만이 제 친구중 비슷한 애가 있어서 몰입이 잘 되었습니다. 유키노는 제 이상형이에요.. 저도 현실에서 유키노 같은 여자애를 만나고 싶어ㅏ요, 앞으로 남은 책들도 사서 읽을게요. 유이도 히로인으로서의 매력이 큰 것 같아요. 저는 고르자면 유키노를 고르겠어요봉사부로 날아드는 「고민 상담 메일」, 그리고 히
vopcx.tistory.com
- Total
- Today
- Yesterday
- 단기특강 국어영역 문학 (2018년용)
- [세트] 묵향 (1~10권)
- 청소년을 위한 시민사회 Q&A
- 박시백의 조선왕조실록 02
- DC : 더 뉴 프런티어 1
- 기적의 영어문장 만들기 5권
- 착각의 경제학
- 임베디드 프로그래밍 C 코드 최적화
- 지원이와 병관이 9권 세트
- 속담 그림책
- 하나님을 기뻐하라
- 2014 주택관리사 용어사전
- 증오의 기술
- 사신의 7일
- 기원 the Origin
- 나에게 돈이란 무엇일까?
- 혼자하는 수능수학 (나형) 미적분 1 (2016년)
- 접어 만들기: 카카오프렌즈 네오
- [고화질] 호오즈키의 냉철 21
- The Hunger Games #3 : Mockingjay
- 팥죽 할멈과 팥빙수
- 헬로 마이 잡 Hello! MY JOB 6권 환경 활동가
- 십자군 이야기 세트
- 그리스 신화 속 별자리 이야기
- 열혈강호 38
- 구형의 황야 하
- 수학의 필하모니
- [대여] 도화
- 매일매일 두뇌트레이닝 스도쿠 365 (1)
- 도적의 남자 (전2권/완결)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |