|
책 제목에 충실하게 만들면서 배우게 구성이 되어 있다. 기초부터 배우는 게임 프로그래밍의 원리라는 부제목은 Android나 Java에 대해서 지식이 없어도 볼 수 있을 것 같은 착각을 잠시 줬지만 이 책을 읽어 나가면서 이는 게임 프로그래밍에 대한 것으로 한정 하는 것임을 알 수 있었다.
Android 프로그래밍을 조금 하고 있는 입장에서 "Android 게임 프로그래밍이 다르면 뭐 얼마나 다르겠어? 책도 Android 기초 프로그래밍 책하고 비슷하겠지", "다른 Android 기초 프로그래밍 책에 비해 얇기 때문에 다루는 내용도 많지 않겠네" 라고 생각했지만, 이는 완전히 잘못된 생각이었다. 페이지를 늘리기 쉬운 개발환경 설정을 적은 페이지로 안내 하고 바로 첫 게임인 짝 맞추기 게임을 만들기 시작하며 게임 프로그래밍과 이책이 다르다는 것을 알 수 있었다.
다른 책들은 보통 Activity 로 시작하고 이에 대한 설명을 하게 되는데, 책에서는 프로젝트 생성시에 만들어지는 기본 Activity만 이용하고 새로운 Activity 생성이나 설명도 하지 않는다. 부록에 가서야 참고적으로 Activity 의 생명주기를 설명하고 이 또한 게임 정보를 생명주기에 맞게 관리하는 법을 들어 설명한다. 그리고 AndroidManifest.xml 에 대한 설명은 없고 단지 236 페이지에 가서야 타이틀바를 없애고 전체화면 모드를 쓰기 위해 수정하기 위해 처음 등장한다.
android.theme = "@android:style/Theme.Black.NoTitleBar.Fullscreen"
이책은 철저히 게임을 위해 집중되었다. 모든 부분은 게임을 위해 배우고, 게임의 요소를 들어 설명한다.
제대로 설명하자면 두꺼운 책 한 권인 디자인패턴도 전쟁터에 있는 한 부대의 지휘관이 두 명이 되는 것을 방지하기 위해 사용하는 싱글턴 패턴, 캐릭터가 무기들을 동적으로 계속해서 바꿀 수 있고, 개발자는 무기의 추가나 삭제와 같은 관리적인 면에서도 더욱 편하기 위해 사용하는 스트래티지 패턴, NPC를 구현하면서 너무 많은 if, else 를 사용하지 않고 객체의 상태에 따른 행동을 클래스화해서 관리하기 위한 스테이트패턴, 유닛을 끊임없이 생성해야 하는 전략 시뮬레이션 게임같이 인스턴스를 동적으로 생성할 때 유용한 팩토리 패턴이라고 설명을 할 정도이다. 디자인 패턴을 왜 쓰는지 모르고 그냥 쓰는 경우가 많은데 게임의 상황을 예로 들어 필요성을 먼저 이끌어 낸 뒤 설명하기 때문에 좀 더 집중해서 볼 수 있었다.
철저하게 점증적으로 두 가지 게임 프로젝트를 통해 각각에 요소와 기능을 붙혀 나가며 필요한 기술을 먼저 익히고 해당 게임에 적용 하는 식으로 잘 구성 되어 있다. 첫 번째 게임인 짝 맞추기 게임에서 이미지처리가 필요하니 배우고, 입력 처리가 필요하니 키패드와 터치로 입력받는 것을 배운다. 또한 Thread 사용, 랜덤값 발생, 사운드 사용도 배우는데 학습이 어려운 부분중 하나인 Thread 를 학습할때도 철저하게 점증적이다. 두 개의 엘리베이터가 움직이는 예제로 Thread를 배우는데 몇 번의 과정을 통해서도 엘리베이터는 움직이지 않고 심지어 에러까지 냄으로써 안드로이드에서는 View가 생성되면 그 View 를 생성한 스레드만 해당 View에 접근 할 수 있다는 것을 알려준다. 대부분의 책과 다르게 이러면 에러가 난다가 아니라, 예제를 일부러 에러를 나게 만들고 같이 에러를 해결하는 방식으로 진행된다. 개인적으로는 상당히 만족스러운 방식이었다.
두 번째 게임인 슈팅게임은 평소에 궁금했던 슈팅게임에 대해서 정말 기초 부터 만드는 과정을 함께 할 수 있었다. 특히 두 번째 게임 부터는 본격적으로 게임 프로그래밍은 일반 프로그래밍과 다르다는 것을 알 수 있었다. 일반적으로 기본 View 를 사용하는 것과 다르게 게임처럼 연산이 많은 애플리케이션에서 모든 연산을 UI 스레드에서 처리하다 보면 ANR(응답없음)이 발생하기 때문에 게임개발에서는 SurfaceView를 사용해야 하고, 다른 View는 화면 업데이트를 UI 스레드에서 하지만 SurfaceView 는 백그라운드로 처리하므로 애플리케이션의 자원을 차지하지 않고, 뷰를 원활하게 업데이트할 수 있으며 OpenGL을 통한 가속도 지원하므로 3D그래픽도 표현할 수 있음을 알게 된다. 플레이어, 배경, 적, 미사일, 충돌 처리, 아이템 등 따라하면서 점점 업그레이드 되는 내 슈팅게임을 보면서 만드는 재미를 더욱 느낄 수 있었다.
'지금까지 게임을 좀 더 게임답게 만드는 요소들을 추가해봤습니다. 하지만 아직 다른 슈팅게임과 비교하면 부족한 것을 느낄 수 있을 겁니다. 다른 슈팅 게임을 플레이해보면서 우리 게임에 없는 요소들을 파악하고, 각자의 역량에 따라 추가해보기 바랍니다.' 이렇게 마무리 되는 책이 아쉽다는 생각이 들 정도로 조금씩 게임이 좀 더 게임답게 되는 과정이 너무 즐거 웠다. 안드로이드 프로그래밍에 대해서 조금을 알고 있으나 게임을 어떻게 만들어야 할지 모른다면 이 책이 정말 좋은 교재가 되어줄 것 이다.
그리고 전체적으로 매우 만족스러운 책이지만, 개인적으로 아쉬운 부분에 대해서 아래와 같이 남겨본다.
* 29 페이지 그림2-6 View 클래스를 상속한 클래스 생성 Inherited abstract method 는 check가 되어있어야 하는데 스크린샷에 체크가 빠져있음 * 이미지를 뛰우면서 Context 에 대해서 전혀 설명하지 않은 점 * 31 페이지 2.1.2 Canvas 를 이용한 이미지 그리기 에서 Canvas 에 대한 설명이 없음.
* 전체적으로 변수 네이밍룰이 어색했음. android 프로그래밍에서 변수 네이밍에 _를 사용한 것이 낯설음. ex) _android , m_Card_Backside, ...
* 44 페이지 CardGameView.java 파일에서 m_Card_Backside 가 전역으로 선언되어 있는 부분이 생략 됨. * 49 페이지 public int m_Color; public int m_state; 변수 네이밍에 일관성이 없이 m_Color 는 C가 대문자, m_state 의 s는 소문자
* 58 페이지 안드로이드와 블랙베리는 서로 다른 OS인데, 블랙베리를 언급하며 터치 입력 방식을 알아둬야 한다는 것은 잘못된 예를 사용 한 것 같다.
* 82 페이지 일일이 Card.CARD_CLOSE 로 지정해주기 보다 Card 의 생성시에 기존의 m_sate = CARD_SHOW로 했던 것을 Card.CARD_CLOSE 변경하는 것이 어땠을까? 하는점이 있지만 뒤의 86페이지를 보면 게임을 다시 초기화 시킬때 필요하므로 startGame 이라는 이름보다는 initGame 이 어땠을까? 하는 생각이 든다.
* 87 페이지 Rect 를 85, 115 를 하면서야 비로서 사용되는 이미지의 크기를 알 수 있었다. 터치 처리, 화면 표시를 고정 숫자 값을 사용하는데 해당 이미지 파일을 처음에 제공하지 않기에, 책을 보는 독자가 자신의 이미지를 사용해서 따라하기 식으로 하려고 할 때 원활하게 따라하기가 어렵다. 이는 뒤의 슈팅게임도 마찬가지 이다. 이미지 리소스만 미리 모아서 URL로 다운 받을 수 있게 제공하면 좋았을 것 같다.
* 143 페이지 '현재 안드로이드 2.2 버전'이라는 말에서 너무 오래된 책 같은 느낌을 준다. 현재 안드로이드 2.2 버전의 점유율은 3.1% 밖에 되지 않는다. http://developer.android.com/about/dashboards/index.html 현재 2.2 버전은 MediaPlayer, SoundPool MediaPlayer 로 사운드를 대부분 처리 할 수 있지만, MediaPlayer 만으로는 게임을 제작하기 어렵습니다. 현재 안드로이드 2.2 버전에서 MediaPlayer로 사운드를 재생할 때 사운드 리소스 자원을 동기화 하기 때문입니다.
* 215 페이지 스택에 대해서는 조금 더 설명이 추가되어도 좋지 않았을까 하는 생각이 든다. 스택을 사용해서 이를 구현할 수 있습니다. 여기서는 직접 구현하지 않고 간단히 힌트만 드릴 테니 각자 구현해보기 바랍니다.
* 255 페이지 무한 스크롤 방식도 조금 더 소개하고 예제를 들어줬으면 좋겠다.
* 326 페이지 멀티 터치는 게임의 조작성과 관련한 핵심 부분으로 생각되기에 해당 부분은 조금 더 설명하고 도전과제가 아닌 같이 적용하는 과정이 추가되었으면 좋겠다. 이를 슈팅게임에 적용하는 것은 어렵지 않으니 각자 터치로 이동하면서 미사일도 발사할 수 있게 구현해보기 바랍니다. 이는 여러분의 도전 과제입니다. |
|
나는 처음 책을 볼 때 5초만 훑어 봐도 이 책을 가지고 공부할 때 어떤 느낌이 들지 예측이 된다. 한 눈에 파악되지 않는 복잡한 편집이나 지루한 글만 계속 되는 전문서는 사실 끝까지 가기 매우 힘들다. 그런데 이 책은 최근에 본 프로그래밍 전문서 중 가장 깔끔하고 정제된 편집을 펼쳐 보이고 있다. 특히나 전문서들은 대체로 책의 판형이 큰데, 이 책은 그 책들에 비해 축소시켜 더욱 깔끔하고 부담이 덜 해 보인다. 펼쳐보아도 그 느낌이 계속 된다. 마치 직접 Eclipse를 통해 보는 느낌으로 소스에 색깔이 입혀져 있고, Font도 내가 즐겨 쓰는 나눔 고딕 코딩과 유사해 가독성도 매우 좋다. 내용과 편집이 다른 문제라고 여길 수 있지만, 이런 편집의 느낌은 지속적으로 학습을 이어 나가는데 큰 역할을 하기 때문에 상당히 중요하다고 여긴다.
책 내용에 실린 내용은 이미지 처리, 사운드 처리, 터치 인식, 센서 동작, 진동 동작, Java Design Pattern 등을 실었다. 사실 이런 멀티미디어적인 구현은 굳이 게임이 아니여도 많은 앱에서 사용하는 기본적인 내용들이다. 따라서 게임 제작이 아니여도 안드로이드 자체를 배우고자 하는 사람이라면 아는 것이 필수적인 기본 구현기이다. 하지만 이 책이 Android를 배운다기 보다 게임을 제작하는 입장에서 접근한다면 다소 게임이라고 하기엔 부족함이 느껴질 수 있다. 기초적인 구현에서 그쳤기 때문에 이렇다할 게임의 전문성을 갖추기엔 빈칸이 많이 때문이다. 차라리 게임이라는 소재를 통해 Android를 배운다고 접근하는 기획이였다면 훨씬 그 취지에 적절하지 않았나 싶다. |
|
Android Game Programming 이 "안드로이드 게임 프로그래밍"은 게임 개발에 입문하는 독자를 대상으로 한다. 이 책을 학습하기 위해서는 기본적으로 Java와 OOP에 대한 기본 지식을 가지고 있어야 한다. 이 책은 윈도우 피씨에 안드로이드 개발 환경을 구축하는 방법. Activity와 View를 생성하고 그림을 그리는 방법. Touch 입력을 처리하는 방법. Thread를 사용하는 방법. 음향 데이터를 로드하고 출력하는 방법. 몇가지 디자인 패턴에 대한 소개. SufaceView를 활용하는 방법. 슈팅게임 예제. 기타 하드웨어 액세스 방법 에 대한 내용을 담고 있다. 이 책은 초보 게임 프로그래밍 지망생을 대상으로 작성되었지만 초보에게 권하기는 어려워 보인다. 1. 이 책에서 사용한 기술로 좋은 그래픽과 사운드를 활용하기 어렵다. 초보 개발자들이 착각할 것 같다. 이 책의 제목은 "그래픽이 화려한 안드로이드 앱 만들기"가 더 적합할 것 같다. 2. 쓰레드 활용의 잘못된 목표를 예제에 보여 준다. 쓰레드를 설명하기 위한 목적이지만, 쓰레드는 엘리베이터 같은 연출 제어를 목적으로 사용하지 않는다. 쓰레드의 사용은 신중해야 한다. 철저한 분석, 설계, 라이브러리 검증없이 사용하면 품질문제로 과제는 좌초되기 쉽다. 이 책의 쓰레드 활용 예제는 초급 개발자들이 오해할까 염려된다. 3. 자바의 코딩 스타일을 어겼다. 게임 개발자들에게서 주로 나타나는 습관이다. 안드로이드 자바에 MFC 스타일을 혼합하여 사용한다. 로마에서는 로마의 법을 따라야 한다. 자바에서는 자바의 관습을 따라야 하고 MFC에서는 MFC의 관습을 따라야 한다. 초급 개발자에게 잘못된 코딩 스타일을 가르칠까 염려된다. 4. 슈팅게임 예제 뿐이다. 이 책의 기술에 대한 소개는 슈팅 게임을 만들기 위한 과정이다. 요즘 게임은 SNS나 동적 리소스등을 다룬다. 트위터, 페이스북와 네트워크에 대한 기술들을 전혀 다루고 있지 않다. 결론. 게임 개발과 안드로이드에 입문하는 초급 개발자에게 권하지 않는다. 중급 이상의 게임 개발자들은 이 책을 통해 얻을 지식은 적어 보인다. 장기간 고생하여 탈고한 저자와 출판사에게 미안한 맘이 들지만, 올해 리뷰한 책들 중에서 최고의 악평이 아닐까 싶다. 다음 개정판에서 더 좋은 내용으로 독자를 만나기를 기대해 본다. |
|
책 읽는 사람이 초보라는 가정하에 만든 책이어서 안드로이드 설치방법 등 기초적인 사용법등을 알려주는 것은 좋은데~ 기초적인 것은 가르쳐주면서 기초보다 한단계 위의 사용법은 안나와 있어서 책 대로 따라하기가 힘듭니다, 그리고 책 예제에 나와 있는 소스코드나 따라하기 자료(png파일등등) 같은 것은 첨부되어 있을 줄 알았는데 아무것도 없고 책 한권이 전부입니다. 게임 만들기 따라하기 책인데 딸랑 책 한권이 전부이네요. 지금이라도 올려 놓으면 좋겠네요..
따라하기는 원초적 불가능이라 그냥 눈으로 대충 훑어보려고 합니다. |
|
만들면서 배우는 Android Game programming[개정판] 많은 사람들이 컴퓨터에 흥미를 갖게 되는 이유 중에 하나가 컴퓨터 게임때문이고 프로그래밍 세계에 뛰어드는 이유도 컴퓨터 게임때문이다. 이 책은 이런 독자들을 제대로 노린 책이다. 기초 안드로이드 프로그래밍 문법에 얽매이지 않고 안드로이드용 모바일 게임을 만드는 것에 오직 초점을 맞추어 만들어졌고 개정판답게 기존 책에서 독자분이 자주 묻는 질문이나 부족한 내용을 더욱 보충해서 모바일게임 만들기에 충실한 책이다. 총 7개의 챕터와 부록으로 이루어진 이 책은 첫 챕터에서는 안드로이드 개발환경을 설치하고 2장부터 안드로이드 게임을 만드는데 필요한 내용을 배우는데 단순히 필요한 기능을 열거하며 설명하는 다른 책과는 달리 게임에서 가장 중요한 요소 중에 하나인 그래픽(이미지)을 다루는 방법부터 설명하는 것이 인상적이었다. 이 책의 장점은 1. 중간중간 참고로 게임제작시 문제가 될 수 있는 부분이나 유용한 팁 같은 것을 별도로 알려주는 것도 매우 좋다.
2. 제작 소스는 에디터에서 예약어가 표시되는 색깔 그대로 표시되어 마치 컴퓨터 화면에서 소스를 보는 것처럼 편안하다.
3. 복잡한 부분은 순서도로 쉽게 이해할 수게 도와준다.
4. 실제 게임을 만들 수 있다.
진짜 제대로 게임을 개발해 보고자 하는 독자에게 추천한다. 단, 자바프로그래밍은 기본적으로 완벽히 알고 있어야 이 책을 보는 의미가 있다. 서두에서 얘기했듯이 게임을 만드는데 초점이 맞춰진 만큼 꼼꼼하게 문법설명이 이루어지지 않기 때문이다.
|
|
이번에는 안드로이드를 이용하여 제작하는 "Android Game Programming"을 선택하였다.
프로그래밍을 배우기 위해서는 무엇인가를 목표로 만들어보는 것이 좋으며, 제일 흥미있게 접근할 수 있는 것은 게임이다. 게임에는 종합 기능을 사용할 수 있으며, 알고리즘을 통해 각 캐릭터를 제어하기 때문에 많은 것은 배울 수 있다.
프로그래밍 제작한 것을 사용자 UI에서 바로 확인이 가능하기 때문에 프로그램을 작성한 뒤에 바로 보는 재미가 있다.
한빛미디어에서 나온 책은 실습을 매우 중시하고 있다. 100% 실습이 될 수 있도록 신경을 쓰고 있으며 이 책 역시 실습을 위한 단계를 하나씩 제시하고 있다. 일부 책에서는 소스코드만을 가지고 설명하기 때문에 입문자들이 실습하기 어려움이 있는데, 이 책은 칼라판으로 하면서 더욱더 사용자들의 편의를 제공하고 있다.
또한, 게임을 쉽게 제작하기 위한 컴포넌트 유니티(Unity)나 coco2d를 사용하게 되는데, 이 책은 순수 함수제작을 통해 제작되고 있다. 그만큼 만드는데는 많은 노력이 필요하지만 안드로이드를 이해하는데는 매우 적합하다.
![]() 아래 화면과 같이 칼라판이며, 소스코드와 각 소스코드의 상태를 잘 설명해주고 있다. 단지 각 함수에 대한 소스코드에 대한 추가적인 설명이 부족한 부분은 보인다. ![]() 대학생때 자바모바일게임(2G폰)을 제작할 때 생각이 난다. 기능이나 문법에서는 크게 차이가 나지 않지만, 안드로이드기반이라 그런지 실습을 할 때 그 터치 느낌은 정말 너무 좋다. 이미지 처리를 어떻게 하는지 애니메이션이 어떻게 만들어지는지 소스코드를 통해 잘 파악할 수 있다. 흥미있는 게임인 퍼즐이나, 슈팅게임을 예제로 하고 있다. 안드로이드를 처음 경험하는 입문자들도 이 책을 통해서 배워갈 수 있을 것이라 생각한다.
|
|
2학기 모바일게임 강의 교재라서 한번 살펴보던중 책의 저자가 정말 유명하신분이라 구입하게되었습니다. 내용이 안드로이드에 한정되있지않고 기본적인 게임개발에 관한 개념을 많이 담겨져있습니다. 특히나 요즘 책들이 단순이 영한사전처럼 매뉴얼이 여기있으니 봐라 식이 아닌 단계별로 따라가다보면 안드로이드 게임 프로그래밍을 배울수있는 것 같아 정말 좋은것같습니다. 조금 아쉬운점은 가격은 비싼데 CD가 포함이 되어있지않고 한빛미디어 홈페이지에서 직접 다운을 받아야한다는거... 그거 외에 책디자인도 깔끔하고 괜찮네요.
|
|
자바에 대한 기초적인 지식이 있는 프로그래머가 안드로이드 게임을 만들고자 했을 때 읽어본다면 많은 도움이 될 책이다. 이 책에서는 안드로이드에 대한 가장 기초적인 것만 설명하고 바로 그림을 띄우는 예제로 돌입한다. 군더더기 없는 구성으로, 기본적인 쓰레딩이나 Hit testing, 사운드와 게임프레임워크 등 딱 게임을 만들기에 필수적인 것들만 담고 있다. 특히 마음에 들었던 부분은 Chapter3-게임 개발에 필요한 디자인 패턴 부분이었는데, 게임 구조를 어떻게하면 객체지향적으로 더 안정적이게 설계할 수 있는지에 관해 많은 도움을 받을 수 있었다. 초보 게임 개발자로서 실력을 위해 배포된 게임엔진을 사용하지 않고 직접 프레임워크를 짜서 만드느라 골머리를 썩히고 있던 필자에겐 단비같은 존재였다. 다만 아쉬운건, 독자들이 디자인패턴이나 게임프레임워크의 필요성을 충분히 느끼지 못하고 단순히 따라만 오게 했다는 생각이 든다. 이외에 애니메이션이나 터치이벤트, 센서의 활용, DB등 게임 제작에 필요한 다양한 기술들을 잘 설명해주고 있다. 더불어 간과하고 지나기 쉬운 화면 회전에 관한 것이나 해상도에 따른 지원 등 추가적인 부분에 대한 설명도 빼놓지 않고 있다. |
|
한 차례의 광풍이 지나간 것 같습니다. 여전히 유효한 수익모델로서 가장 큰 시장이지만 초기의 뜨거웠던 열기는 잠시 안정기에 접어든 것 같습니다. 무슨 이야기일까요? 바로 카카오톡의 게임 플랫폼 이야기입니다. 작년 이맘때쯤 선데이토즈의 애니팡으로 시작된 카카오톡의 게임 플랫폼은 이후 한국 모바일 게임시장, 나아가서 구글 플레이스토어의 수익 랭킹에 강력한 영향을 주면서 시장을 주도해 왔습니다.
Yes24 에서 "만들면서 배우는 안드로이드 게임 프로그래밍" 살펴보기 [바로가기] |
|
중급자 보다는 이제 처음 게임을 만들어 보려는 사람에게 더욱 유용할듯 합니다. 흡사 10여년 전의 win32로 게임 만들기와 비슷합니다. 게임에 어떤 요소들이 필요한지 안내해 주는 역할이죠. 이 책 한권만 보고 상업용 게임을 만들기는 무리일것입니다. 하지만 자신이 무엇을 더 배워야 하는지 알수 있을것 같습니다. 적절한 컬러 인쇄와 대화체가 읽기에 편안합니다. 하지만 구성에서 중간에 디자인 패턴이 나오는 부분은 피하면 좀 더 좋지 않았을까 싶습니다. |