책 소개
acorn+PACKT 시리즈 제54권. 안드로이드와 iOS에 동시 대응할 수 있는 코코스2d-x는 국내 모바일 2D 게임 개발에서 실질적인 표준 도구가 됐다.
이 책은 단계별로 5가지 실전적인 게임 예제를 따라 하면서, 최근 인기를 끌고 있는 모바일 2D 캐주얼 게임 개발의 핵심요소를 배울 수 있도록 구성되어 있다. 예제 게임들은 알기 쉬우면서도, 현재 트렌드에 부합되며, 꼭 필요한 핵심요소들을 군더더기 없이 보여준다. 외국에서 출간된 코코스2d-x 도서 중에서도 단연 가장 좋은 평가를 받고 있는 최신간 도서.
이 책에서 다루는 내용
- 파티클 효과를 이용해서 더욱 멋지게 보이는 자신만의 게임 개발
- 자신의 게임 아이디어를 신속하게 검증해 볼 수 있는 플레이스홀더 스프라이트 제작
- 게임에 외부 데이터 로드
- 게임 메뉴와 튜토리얼 제작
- 알림 기능으로 게임 전체 이벤트 구현
- 텍스처 처리된 지형을 가진 대시 게임 개발
이 책의 대상 독자
게임 개발에 열정을 가진 사람이라면 이 책의 독자가 될 수 있다. 여러분은 코코스2d(프레임워크의 오브젝티브C 버전)를 이미 다뤄 본 적이 있으며, C++ 이식 버전을 배우고 싶어할 수도 있다. 아니면 자바, PHP, 오브젝티브C 등 C 기반 언어에 대해서 어느 정도 알고 있어서, 2D 게임을 C++로 개발하는 방법을 배우고 싶어할 수도 있다. 아니면 이미 C++ 개발자로서 코코스2d-x가 도대체 무엇인지 궁금해 할 수도 있다. 여러분이 이 중 하나에 해당된다면, 환영한다!
이 책의 구성
- 1장, 설치에서는 코코스2d-x 프레임워크를 다운로드하고 설치하는 방법을 안내한다. 아울러 기본적인 코코스2d-x 애플리케이션의 세부 사항을 살펴본다.
- 2장, C++와 코코스2d-x에서는 프레임워크의 주요 요소들을 설명한다. 또한 C++로 개발할 때의 문법적인 차이점과 코코스2d-x로 개발할 때의 메모리 관리 차이점도 다룬다.
- 3장, 첫 번째 게임: 에어 하키에서는 코코스2d-x를 활용해서 에어 하키 게임을 제작하는 것으로 게임 개발 안내를 시작한다. 스프라이트용 이미지를 로드하는 방법, 텍스트 표시 방법, 터치 처리 방법, 게임 사운드 추가 방법을 배운다.
- 4장, 재미있는 스프라이트에서는 코코스2d-x에서 액션의 위력을 선보이고, 액션을 이용해서 전체 게임을 구축하는 방법을 보여준다. 아울러 스프라이트시트의 개념과 다양한 화면 해상도를 지원하는 유니버설 앱을 구축하는 데 필요한 과정을 소개한다.
- 5장, 위기일발: 로켓 조종에서는 게임 개발 도구에 2가지 새로운 요소를 추가해 준다. 선, 곡선, 원 같은 원시 도형을 그리는 방법과 게임의 외관을 향상시키기 위한 특수 효과로 파티클 시스템을 활용하는 방법이 그것이다.
- 6장, 쉽고 빠른 스프라이트: 빅토리안 러시아워에서는 향후 검증과 개발용으로 코코스2d-x를 이용해서 플레이스홀더 스프라이트로 신속하게 게임 프로토타입을 구축함으로써 빠른 시간 안에 게임 아이디어를 구현해 보는 방법을 보여준다. 아울러 이 장에서 활용된 게임 예제에서는 횡스크롤 플랫폼 게임을 개발하는 방법도 배우게 된다.
- 7장, 외관 꾸미기: 빅토리안 러시아워에서는 이전 장의 프로젝트를 계속하면서, 메뉴와 플레이 가능한 튜토리얼을 비롯한 마지막 손질을 한다.
- 8장, 물리 구현: 박스2D에서는 물리 구현용으로 인기 있는 박스2D API를 소개하면서, 풀 게임을 개발하는 데 박스2D를 이용하는 과정을 안내한다. 바디를 생성하고 바디들의 상호작용을 관리하는 방법을 배운다.
- 9장, 마지막 게임: 에스키모에서는 게임 레벨용으로 외부 데이터를 로드하는 방법, 게임 관련 데이터를 로컬에 저장하는 방법, 그리고 복수의 씬으로 게임을 구조화하는 방법을 알려준다. 두 번째 박스2D 게임을 이용해서 이런 주제들을 설명하고 추가로 게임 내에서 알림의 활용법 같은 몇 가지 새로운 개념들을 소개한다.
- 10장, 코드 재활용에서는 코코스2d-x를 활용해서 안드로이드 프로젝트 및 iOS와 안드로이드를 동시에 겨냥하는 하이브리드 프로젝트를 빌드하는 과정을 안내한다. 개발 환경을 설정하는 방법과 최적의 복수 타깃 개발 기법을 알려준다.
목차
목차
- 1장 설치
- 다운로드와 설치
- 실습 예제: 코코스2d-x의 다운로드와 설치
- Hello-x World-x
- 실습 예제: 애플리케이션 생성
- 폴더 구조
- iOS 연결 클래스
- AppDelegate 클래스
- HelloWorldScene 클래스
- 누가 누구를 낳는가
- 추가 정보
- 실습 예제: 테스트 샘플 실행
- 그 밖의 도구들
- 요약
- 2장 C++와 코코스2d-x
- 코코스2d-x 소개
- 컨테이너
- 디렉터와 캐시
- 기타
- 하지만 C++를 모른다면?
- 인터페이스
- 실습 예제: 인터페이스 생성
- 구현
- 실습 예제: 구현 생성
- 인스턴스화와 메모리 관리
- 선택 1: 정적 메소드 사용
- 선택 2: C++ 코코스2d-x 스타일
- CCObject의 역할
- 요약
- 3장 첫 번째 게임: 에어 하키
- 게임 환경 설정
- 실습 예제: 게임 프로젝트 생성
- 실습 예제: 규칙 설정
- 레티나 디스플레이 지원
- 실습 예제: 이미지 파일 추가
- 실습 예제: 레티나 지원 추가
- 사운드 효과 추가
- 실습 예제: 사운드 파일 추가
- CCSprite 확장
- 실습 예제: GameSprite.cpp 추가
- 실습 예제: GameSprite 구현
- 실제 게임 씬
- 실습 예제: GameLayer 인터페이스 작성
- 실습 예제: init() 구현
- 실습 예제: 멀티터치 처리
- 실습 예제: 메인 루프 추가
- 실습 예제: 점수 갱신
- 요약
- 4장 재미있는 스프라이트: 스카이 디펜스
- 스카이 디펜스 게임
- 게임 설정
- 시작 프로젝트
- 유니버설 앱을 위한 화면 지원 추가
- 배경음악 추가
- 게임 초기화
- 코코스2d-x의 스프라이트시트 활용
- 스프라이트의 배치 드로잉
- 실습 예제: CCSpriteBatchNode 생성
- 코코스2d-x의 비트맵 폰트
- 실습 예제: 비트맵 폰트 레이블 생성
- 실습 예제: 최종 화면 스프라이트 추가
- 실습 예제: 오브젝트 풀 생성
- CCAction 요약
- 실습 예제: 코코스2d-x 액션 생성
- 코코스2d-x의 스프라이트 애니메이션
- 실습 예제: 애니메이션 생성
- 게임을 작동할 때!
- 실습 예제: 터치 처리
- 실습 예제: 게임 시작과 재시작
- 실습 예제: 게임 업데이트
- 실습 예제: 풀에서 오브젝트 반환하기
- 플레이 게임!
- 요약
- 5장 위기일발: 로켓 조종
- 로켓 조종 게임
- 게임 설정
- 플레이 먼저, 학습은 나중에
- 스타트 프로젝트
- 화면 설정
- 파티클이란 무엇인가?
- 실습 예제: 파티클 시스템 생성
- 그리드 생성
- 코코스2d-x 원시도형 그리기
- 실습 예제: 뭔가 그려보자!
- 로켓 스프라이트
- 실습 예제: 로켓 업데이트
- 실습 예제: 터치 처리
- 게임 루프
- 실습 예제: 메인 루프 추가
- 죽음과 재설정
- 실습 예제: 재설정과 죽음 추가
- 요약
- 6장 쉽고 빠른 스프라이트: 빅토리안 러시아워
- 빅토리안 러시아워 게임
- 게임 설정
- 코코스2d-x를 이용한 신속 프로토타이핑
- 실습 예제: 플레이스홀더 스프라이트 생성
- 플레이어 오브젝트
- 블록 오브젝트
- 지형 오브젝트
- 실습 예제: 플레이어 코딩
- 실습 예제: 블록 오브젝트의 코딩
- 지형 클래스 계획
- 지형 오브젝트 구축
- 실습 예제: 지형 클래스 초기화
- 실습 예제: 블록 초기화
- 실습 예제: 이동과 재설정
- 플랫폼 충돌 로직
- 실습 예제: 충돌 탐지 추가
- 컨트롤 추가
- 실습 예제: 터치 처리
- 실습 예제: 메인 루프 코딩
- 요약
- 7장 외관 꾸미기: 빅토리안 러시아워
- 빅토리안 러시아워 게임
- 새로운 스프라이트
- 애니메이션
- CCSprite를 이용한 건물 텍스처 처리
- 실습 예제: 빌딩의 텍스처 처리
- 컨테이너 안의 컨테이너
- 패럴랙스 효과 생성
- 실습 예제: 패럴랙스 효과 생성
- 게임 메뉴 추가
- 실습 예제: CCMenu와 CCMenuItem 생성
- 게임 튜토리얼 추가
- 실습 예제: 튜토리얼 추가
- 요약
- 8장 물리 구현: 박스2D
- 코코스2d-x 박스2D 프로젝트 생성
- 실습 예제: 기본 템플릿 준비
- 물리 엔진이란 무엇인가?
- 박스2D 소개
- 월드 소개
- 시뮬레이션 실행
- CCObject가 없는 박스2D
- 바디 소개
- 미니풀 게임
- 게임 설정
- CCSprite + b2Body = b2Sprite
- 풀 테이블 생성
- 변 생성
- 공 오브젝트 생성
- 충돌 필터 생성
- 큐 공 생성
- 콘택트 리스너 생성
- 게임 컨트롤
- 실습 예제: 터치 이벤트 추가
- 메인 루프
- 실습 예제: 메인 루프 추가
- 게임 타이머 추가
- 실습 예제: 타이머 생성
- 요약
- 9장 마지막 게임: 에스키모
- 에스키모 게임
- 게임 설정
- 게임의 구성
- 코코스2d-x CCScene 활용
- 실습 예제: CCScene 전환 생성
- 실습 예제: 싱글턴 CCLayer를 이용한 전환 생성
- .plist 파일에서 외부 데이터의 로드
- 실습 예제: .plist 파일 생성
- 레벨 데이터 로드
- 실습 예제: .plist 파일에서 데이터 반환
- 게임 데이터 저장
- 실습 예제: 완료된 레벨의 저장
- 게임 알림 활용
- 실습 예제: CCNotificationCenter 활용
- 가속도계 활용
- 실습 예제: 가속도계 데이터 읽기
- b2Body 재사용
- 실습 예제: b2Body 픽스처 변경
- 요약
- 10장 코드 재활용
- 우선, 버전과 요구조건에 대해
- 요구사항
- 선택 과정
- 실습 예제: 코코스2d-x 안드로이드 프로젝트 생성
- 실습 예제: 코드 컴파일
- 이클립스 활용
- 실습 예제: C++ 컴파일러 설치
- 실습 예제: 이클립스에 코코스2d-x 라이브러리 추가하기
- 실습 예제: 이클립스에서 프로젝트 열기
- 애플리케이션 실행
- 이클립스에서 C++ 코드 컴파일하기
- 실습 예제: C++ 코드 컴파일하기
- 하이브리드 프로젝트 생성
- 실습 예제: 하이브리드 코코스2d-x 프로젝트 생성
- 박스2D 하이브리드 프로젝트 생성
- 실습 예제: 박스2D 프로젝트 생성
- 하이브리드 게임 개발
- 요약
- 부록A 코코스2d-x 벡터 계산
- 벡터란 무엇인가?
- 벡터 메소드
- ccp 헬퍼 메소드 활용
- 점을 중심으로 한 로켓 회전
- 벡터의 내적 활용
- 픽셀 기반 속도에서 각도 기반 속도로의 이동
- 부록B 깜짝 퀴즈 정답