Top

코로나 SDK 모바일 게임 프로그래밍

  • 원서명Corona SDK Mobile Game Development: Beginner's Guide (ISBN 9781849691888)
  • 지은이미셸 페르난데즈
  • 옮긴이박봉석
  • ISBN : 9788960773776
  • 35,000원
  • 2012년 12월 28일 펴냄
  • 페이퍼백 | 440쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 게임 개발 프로그래밍

책 소개

코로나(Corona)는 스크립트 언어인 루아(Lua)를 사용하는 SDK다. 코로나는 개발 기간을 상당히 많이 단축시켜주며, 무엇보다도 배우기가 매우 쉽다. 여기에 더해 강력한 물리엔진을 제공한다. 이 책에서는 이런 코로나에 대해 아주 친절하면서도 상세하게 알려준다. 책에서 제공하는 게임 예제들을 따라 해보고, 도전과제를 수행하며 질문에 답하다 보면, 이미 앱 개발자가 된 여러분을 발견하게 될 것이다. 이 책은 게임 제작에 관한 기초 지식부터 고급 지식까지 다루며, 네트워킹, 최적화, 테스트, 앱 내 구매, 그리고 최종적으로 배포하는 방법까지 자세하게 다루고 있다.


[ 소개 ]

이 책은 성공과 재미 두 마리 토끼를 모두 잡는 상용 게임을 개발하도록 도와주며, 트위터나 페이스북 같은 소셜네트워크와 게임을 통합하는 방법도 알려준다.

프로그래밍이나 게임 개발에 문외한이라 가정하고, 안드로이드나 애플 스토어에 올릴 만한 유료 게임을 제작해보는 과정을 통해 루아의 기본 개념과 코로나를 배워본다.


[ 이 책에서 다루는 내용 ]

■ 터치나 가속기를 사용하는 모바일 게임 최적화
■ 게임에 사운드와 음악 추가
■ 충돌 처리 같은 게임 물리 마스터
■ 오픈페인트로 업적 달성과 순위 게시판 추가
■ 앱 내 구매와 광고로 게임의 수익 창출
■ 페이스북과 트위터에 메시지와 점수를 공유하는 소셜게임 제작
■ 스토리보드 API로 모든 게임 씬 관리


[ 이 책의 대상 독자 ]

이 책은 안드로이드와 iOS용으로 상업적으로 성공한 게임을 만들고자 하는 모든 이들을 위한 책이다. 게임 개발 또는 프로그래밍 경험이 없어도 된다.


[ 이 책의 구성 ]

1장, 코로나 SDK 시작하기
맥 OS X과 윈도우 운영체제에 코로나 SDK를 설치하는 방법부터 알아보자. 단 두 줄의 코드만으로 첫 번째 프로그램을 만들어보겠다. 마지막에는, iOS와 안드로이드 디바이스에 애플리케이션을 올리고, 빌드하는 과정을 차례로 배워본다. .

2장, 루아 집중 코스와 코로나 프레임워크
루아의 변수, 함수, 데이터 구조의 기본을 다룬다. 또한 코로나 프레임워크 내에서 다양한 출력 객체를 구현하는 방법을 소개한다.

3장, 첫 번째 게임 제작: 브레이크아웃
첫 번째 게임인 브레이크아웃(Breakout)의 제작 전반에 대해 논의한다. 코로나 프로젝트 안에 게임 파일들을 구조화하는 방법과, 화면에 출력할 게임 객체를 만드는 방법을 배워보자.

4장, 게임 제어
3장에서 시작한 첫 번째 게임인 브레이크아웃 제작의 후반부다. 씬 안에 있는 객체들 간의 충돌 처리뿐만 아니라, 게임 객체의 이동도 다룬다. 또한 게임의 승패 상태를 구현할 수 있는 점수 시스템을 만드는 방법도 배워보자.

5장, 게임 애니메이션
무비클립과 스프라이트 시트를 사용해 게임을 애니메이션하는 방법을 설명한다. 이 장에서는 새로운 게임 프레임워크를 만드는 동시에, 모션과 전환을 깊이 있게 다루겠다.

6장, 사운드와 음악 재생
애플리케이션에 사운드 효과와 음악을 어떻게 적용하는지 알아보자. 오디오 추가는 게임의 감각적인 경험을 향상시키는 데 반드시 필요한 과정이다. 코로나 오디오 시스템을 이용한 로딩, 실행, 그리고 루핑 기술을 통해 오디오를 통합하는 방법을 배워본다.

7장, 물리: 낙하하는 물체
출력 객체에 코로나 SDK에 포함된 Box2D 엔진을 적용하는 방법을 다룬다. 물리 엔진의 바디 구조를 원하는 형태로 정의할 수 있으며, 낙하 물체의 물리적 행동을 다룰 수 있다. 이 장에서는 동적/정적 바디를 사용하며, 사후 충돌의 목적을 설명한다. .

8장, 스토리보드 활용
스토리보드 API로 모든 게임 씬을 다루는 방법을 알아보겠다. 메인 메뉴나 일시 정지 메뉴 같은 메뉴 디자인을 자세히 다루고, 추가로 최고 점수를 저장하는 방법도 배워보자.

9장, 다양한 디바이스 다루기와 앱에 네트워크 연결하기
애플리케이션을 트위터나 페이스북 같은 소셜네트워크와 연동하는 데 필요한 사항이 무엇인지 알아보자. 소셜네트워크의 하나인 오픈페인트(OpenFeint)의 도전 과제, 점수판과도 연동해보자. 이렇게 하면, 전 세계적으로 더 많은 고객이 여러분의 앱을 만날 수 있다.

10장, 최적화, 테스트, 게임 출시
iOS와 안드로이드 디바이스 양쪽에 애플리케이션을 배포하는 과정을 설명한다. 이 장은 앱 스토어용 배포 프로비저닝 프로파일(Provisioning Profile)을 설정하는 방법과, 아이튠즈 커넥트에서 여러분의 앱 정보를 관리하는 방법을 안내한다. 안드로이드 개발자들이 구글 플레이 스토어에 애플리케이션을 발매하기에 앞서 자신의 프로그램에 서명하는 방법도 다룬다.

11장, 앱 내 구매 구현
앱 내 구매(In-App Purchase)의 종류인 소비성, 비 소비성, 구독 등을 작성해보는 것으로 게임의 유료화 개념을 다룬다. 코로나의 스토어 모듈을 이용해 앱 내에서 결제를 적용할 수 있다. 디바이스에서 테스트 구매를 해봄으로써 거래가 샌드박스(Sandbox) 환경을 사용해 적용됐는지 확인해본다.

저자/역자 소개

[ 저자 서문 ]

이 책은 iOS와 안드로이드 플랫폼용 크로스 플랫폼 개발킷인 코로나 SDK 사용에 관한 기본적인 내용을 소개한다. 예제 단계를 따라서 독특한 3개의 게임을 제작하다 보면, 어느 새 여러분의 실력은 일취월장한다. 게임 개발 외에도 소셜네트워크 통합, 앱 내 구매, 유료화, 앱 스토어와 구글 플레이 스토어에 여러분의 앱을 등록하는 방법 등도 함께 알아보겠다.


[ 저자 소개 ]

미셸 페르난데즈 (Michelle M. Fernandez)
iOS/안드로이드용 모바일 게임 개발자이자, 모비도조(http://www.mobidojo.com)의 공동창업자다. 또한 게임 산업에서 일하기를 갈망하는 아티스트와 프로그래머의 멘토이기도 하다. 수년간 여러 가지 게임 엔진을 경험해오던 중 2010년 말에 코로나 SDK를 접했는데, 그 이후로 열렬한 사용자가 되었다. 다른 사람들의 학습을 돕기 위한 튜토리얼이나 새로운 게임 프레임워크 만들기를 즐긴다. 게임 개발을 쉴 때는 친구나 가족과 함께 비디오 게임이나 농구, 노래 등을 하거나, 맛있는 페이스트리를 만들면서 시간을 보낸다.


[ 옮긴이의 말 ]

오늘날 전 세계의 모든 사람이 스마트폰을 사용하진 않지만, 그 보급률은 날이 갈수록 점점 높아지고 있다. 더불어, 여기에서 스마트폰에서 작동하는 모바일 앱의 수도 나날이 늘어가며 그 종류도 다양하다. 하지만 수많은 앱 중에서도 많은 사람이 여전히 게임에 매료되어 있다. 또한 게임을 만들어보고자 하는 사람도 적지 않다. 하지만 ‘어떻게 만들지?’라는 생각이 머릿속을 떠나지 않는 분들이 많을 것이다. 이 책은 바로 이런 분들, 관심은 있으나 방법을 모르는 분들을 위해 세상에 나왔다.
프로그래밍이란 으레 전문가나 제대로 교육을 받은 사람들만의 분야라고 생각하기 쉽다. 그러나 이 책은 그런 생각을 여지없이 날려 보내준다. 바로 예제를 따라가며 코딩을 하다 보면 즉시 내가 만들어볼 앱의 기능이 머리에 번뜩하고 떠오르게 된다. 쉬운 단계별 과정과 풍부한 그림, 거기에 자세한 설명까지 이 책은 입문하려는 모든 분들에게 좋은 친구가 되어준다.
하지만 여전히 루아(Lua)와 코로나 등의 여러 가지 기능은 어렵다고 느껴지기에 충분한 요소다. 그래서 저자는 내용을 더욱더 세심하게 다뤘다. 각 장의 내용을 찬찬히 읽어가며 예제를 코딩하다 보면 ‘어! 이렇게 되는구나’라고 무릎을 탁 치게 될 것이다. 각 장을 차례로 읽어나가다 어느 새 책의 끝에 도달하고 나면, ‘충분히 나만의 게임을 만들 수 있다’는 자신감도 붙을 것이다. 그러면 바로 책을 덮고 여러분만의 상상의 나래를 펼쳐 게임 개발을 시작해보자. 세상 사람들이 그 게임을 기다리고 있을 테니!;


[ 옮긴이 소개 ]

박봉석
어렸을 때 처음 접한 애플 컴퓨터와 프로그램 언어를 잊지 못해 지금까지 프로그래머로 살고 있다. 게임 개발이 좋아 대학교를 중퇴하고 논현동 게임스쿨에 입학했다. 게임 개발 회사에 취직한 후 수년간 몇 가지 프로젝트에 참여했다. 팅크웨어로 이직한 후 글로벌 팀에서 해외 내비게이션을 개발했다. 현재는 전문 개발서 번역가와 목수 그리고 더 나은 아키텍처가 되기 위해 달려가고 있다.

목차

목차
  • 1장 코로나 SDK 시작하기
    • 코로나 다운로드하고 설치하기
    • 맥과 윈도우에서 시뮬레이터 사용하기
    • 텍스트 편집기 고르기
    • 디바이스에서 개발하기
    • iOS 디바이스에서 앱 테스트하기
      • iOS 디바이스 추가하기
        • Xcode
        • 아이튠즈
      • 프로비저닝 프로파일
      • 앱 아이콘
    • iOS용 Hello World 빌드 만들기
    • 안드로이드 디바이스에서 앱 테스트하기
    • 안드로이드용 Hello World 만들기
    • 정리
  • 2장 루아 집중 코스와 코로나 프레임워크
    • 해방자 루아
    • 유익한 변수
      • 전역 변수
      • 지역 변수
      • 테이블 필드(속성)
      • 할당 규칙
    • 변수형
    • 수식
      • 산술 연산자
      • 관계 연산자
      • 논리 연산자
      • 연결 연산자
      • 길이 연산자
      • 연산자 우선순위
      • 문자열
      • 문자열 리터럴
    • 테이블
      • 테이블을 배열처럼 사용하기
      • 테이블 원소 교체하기
      • 테이블에 값 넣기
    • 객체
      • 디스플레이 객체
      • 디스플레이 속성
      • 객체 메소드
    • 이미지
      • 이미지 불러오기
      • 이미지 자동 크기변환
    • 실시간 구성
      • 동적 콘텐츠 스케일링
      • 동적 콘텐츠 정렬
      • 동적 이미지 해상도
      • 프레임 레이트 제어와 안티앨리어싱
      • 동적 해상도 이미지
    • 몇 가지 도형 살펴보기
      • 테두리 두께, 전경색, 테두리 색 사용하기
      • 텍스트, 텍스트, 텍스트
      • 색과 문자열 적용하기
    • 함수
      • 함수 정의하기
      • 그 밖의 디스플레이 함수
      • 콘텐츠 크기 속성
    • 워크플로 최적화하기
      • 효율적으로 메모리 사용하기
      • 디스플레이 이미지 최적화하기
    • 정리
  • 3장 첫 번째 게임 제작: 브레이크아웃
    • 브레이크아웃: 고전 게임으로 돌아가 보기
    • 코로나 물리 API 이해하기
      • 물리 세계 설정
        • 물리 엔진의 시작, 멈춤, 종료
        • physics.setGravity
        • physics.getGravity
        • 기울기 기반 중력
        • physics.setScale
        • physics.setDrawMode
        • physics.setPositionIterations
        • physics.setVelocityIterations
    • 앱 구성하기
      • 빌드 구성
      • 실시간 구성
    • 앱 빌드하기
      • 디스플레이 그룹
        • display.newGroup()
      • 시스템 함수 사용하기
        • system.getInfo()
        • system.setAccelerometerInterval()
    • 이벤트와 리스너 이해하기
      • 등록 이벤트
      • 런타임 이벤트
        • enterFrame
        • 가속도계
      • 터치 이벤트
        • 터치(싱글 터치)
    • 트랜지션
    • 메뉴 화면 만들기
    • 게임플레이 씬 만들기
    • 경고!
  • 정리
  • 4장 게임 제어
    • 위쪽으로 이동하기
    • 더 많은 물리 객체
      • physics.addBody()
    • 막대기 이동
    • 볼과 막대기의 충돌
    • 씬에서 객체 제거하기
      • 변수 참조
    • 벽돌 대 벽돌
    • 방향 전환
    • 레벨 전환
    • 일승일패
    • 이벤트 리스너 활성화하기
      • 충돌 이벤트
        • 전역 충돌 리스너
        • 지역 충돌 리스너
    • 최종 점검
    • 정리
  • 5장 게임 애니메이션
    • 판다 스타 캐처
    • 모든 객체에 움직임을
      • 트랜지션
      • 이징
    • 나중에 호출되는 함수의 가치
      • 타이머
    • 무비클립과 스프라이트 시트의 차이점
    • 무비클립
      • 무비클립 함수
    • 스프라이트 마니아!
      • 스프라이트 API
    • 게임 시간!
    • 라운드를 시작하자
    • 마법처럼 사라졌다!
    • 포인트 얻기
    • 게임이 끝날 때
    • 배경 출력
    • HUD!
    • 시간은 흐르고
    • 빛이 난다
    • 판다!
    • 별이 가득한 하늘
    • 화면 터치
    • 디스플레이 객체 구성하기
    • 별 만들기
    • 게임 시작하기
    • 정리
  • 6장 사운드와 음악 재생
    • 코로나 오디오 시스템
      • 사운드 포맷
      • 안드로이드의 사운드 파일 이름 제한
      • 최고의 모노 사운드
      • 최대 동시 채널 수
    • 재생 시간
      • audio.loadSound()
      • audio.loadStream()
      • audio.play()
      • 반복
      • 동시 재생
    • 제어 시간
      • audio.stop()
      • audio.pause()
      • audio.resume()
      • audio.rewind()
    • 메모리 관리
      • audio.dispose()
    • 오디오 변경
      • 음량 제어
        • audio.setVolume()
        • audio.setMinVolume()
        • audio.setMaxVolume()
        • audio.getVolume()
        • audio.getMinVolume()
        • audio.getMaxVolume()
      • 오디오 페이드하기
        • audio.fade()
        • audio.fadeOut()
    • 성능 팁
      • 미리 불러오기 단계
      • audioPlayFrequency
      • 특허와 로열티
    • 정리
  • 7장 물리: 낙하하는 물체
    • 새로운 게임 만들기: 에그 드롭
      • 변수로 시작하기
      • 나무꾼 제어하기
      • 점수 갱신하기
      • 환경 그리기
      • HUD 출력하기
      • 게임 생명 만들기
      • 주인공 소개하기
        • 복합 바디 생성자
      • 사후 충돌 추가하기
        • 충돌 다루기
      • 바디 속성
        • body.isAwake
        • body.isBodyActive
        • body.isBullet
        • body.isSensor
        • body.isSleepingAllowed
        • body.isFixedRotation
        • body.angularVelocity
        • body.linearDamping
        • body.angularDamping
        • body.bodyType
      • 낙하하는 디스플레이 객체 만들기
      • 게임 끝내기
      • 게임 시작하기
    • 정리
  • 8장 스토리보드 활용
    • 에그 드롭 이어가기
    • 데이터 저장
      • 값을 저장하거나 불러올 때 사용하는 BeebeGames 클래스
      • 파일 경로 얻기
      • 파일 읽기
      • 파일 쓰기
    • 게임 일시 정지하기
    • 스토리보드 API
      • 스토리보드 API로 게임 개발하기
    • 게임 구성하기
    • 새로운 화면 전환 만들기
    • 로딩 화면 만들기
    • 메인 메뉴 만들기
    • 옵션 메뉴 생성하기
    • 크레디트 화면 만들기
    • 정리
  • 9장 다양한 디바이스 다루기와 앱에 네트워크 연결하기
    • 구성으로 돌아가기
      • 빌드 구성
        • 화면 방향 설정 지원(iOS)
        • 화면 방향 설정 지원(안드로이드)
        • 버전 코드와 버전 이름(안드로이드)
        • 앱 권한(안드로이드)
      • 쉬운 수준의 콘텐츠 크기 변경
        • 두 세계를 위한 최고의 선택
      • 동적 이미지 해상도의 깊은 뜻
      • 고해상도 스프라이트 시트
    • 앱에 네트워크 연결하기
      • 트위터에 메시지 게시하기
      • 페이스북에 메시지 게시하기
    • 페이스북 연결
    • 오픈페인트의 놀라움
      • 게임 네트워크 API
        • gameNetwork.init()
        • gameNetwork.show()
        • gameNetwork.request()
    • OpenFeint in a jiffy
    • 정리
  • 10장 최적화, 테스트, 게임 출시
    • 메모리 효율 이해하기
      • 그래픽
        • 그룹 객체
        • 사용하지 않을 때는 애니메이션을 꺼라
        • 이미지 크기 최적화
    • iOS 앱 배포하기
      • 앱 아이콘 준비하기
    • 아이튠즈 커넥트
      • 계약, 세금, 은행
    • 코로나에서 iOS 앱 배포를 위해 빌드하기
    • 구글 플레이 스토어
      • 런처 아이콘 만들기
    • 정리
  • 11장 앱 내 구매 구현
    • 앱 내 구매에 관한 궁금증
      • 앱 내 구매 종류
    • 코로나 상점 모듈
      • store.init()
        • event.transaction
      • store.loadProducts()
        • event.products
        • event.invalidProducts
      • store.canMakePurchases
      • store.purchase()
      • store.finishTransaction()
      • store.restore()
    • 앱 내 구매 생성하기
    • 앱 내 구매 테스트하기
      • 사용자 테스트 계정

도서 오류 신고

도서 오류 신고

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

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

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

정오표

[ p163 아래에서 2행 ]
dle.x → paddle.x

[ p166 아래에서 2행 ]
속도 → 속도