RPG를 만들면서 배우는 유니티 2D 게임 개발
- 원서명Mastering Unity 2D Game Development - Building Exceptional 2D Games with Unity (ISBN 9781849697347)
- 지은이사이먼 잭슨(Simon Jackson)
- 옮긴이조경빈
- ISBN : 9788960777545
- 35,000원
- 2015년 09월 15일 펴냄 (절판)
- 페이퍼백 | 544쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 게임 개발 프로그래밍
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
이 책은 유니티 버전 4.3에 새롭게 추가된 내용을 살펴보는 것으로 시작해 유니티가 새롭게 제공하는 2D 특화 기능을 하나씩 다루면서 유명한 게임에서 흔히 사용하는 기법을 따라 해보는 형태로 구성되어 있다. 책의 내용을 끝까지 잘 따라가기만 한다면 완전한 하나의 2D 게임을 개발하는 데 필요한 전반적인 지식을 갖출 수 있다.
이 책에서 다루는 내용
■ 자신만의 RPG 게임을 만들어 가면서 유니티3D 4.3 버전에 새로 추가된 기능 학습
■ 새로운 스프라이트 불러오기와 렌더링 시스템
■ 새로운 스프라이트 애니메이션 시스템의 장점과 개선된 메카님(Mecanim) 기능
■ 태그, 레이어, 스프라이트 정렬과 순서 매기기를 활용한 렌더링 기법
■ 델리게이트(Delegates), 이벤트(Events), 메시징(Messaging)을 제대로 사용하는 방법과 완전한 기능을 갖춘 RPG 대화 시스템 구축
■ 메카님 기반 AI(인공지능)와의 전투와 상태 기계
■ 시장에서의 성공을 위한 마케팅 기법과 수익 모델 설계, 배포 방법
■ 플랫폼 선택과 배포, 에디터 확장
이 책의 대상 독자
이 책은 C#에 대한 지식을 갖고 있으면서 유니티를 사용해 완전한 기능을 갖춘 2D RPG 게임을 개발하고자 하는 독자를 대상으로 한다.
이 책의 구성
1장, ‘개요’에서는 유니티 버전 4.3에 새롭게 추가된 내용을 살펴보는 것으로 시작해 새로운 2D 시스템과 기타 기능에 대해 알아본다.
2장, ‘캐릭터 생성’에서는 본격적으로 2D 애셋과 스프라이트의 사용 방법을 살펴보며, 스프라이트 에디터 사용법과 기타 재미있는 기능들을 다룬다.
3장, ‘애니메이션 처리’에서는 2D 게임에서 매우 중요하면서도 까다로운 애니메이션 시스템에 대해 제대로 살펴본다.
4장, ‘게임 월드’에서는 배운 내용을 토대로 거주할 마을을 만들고 캐릭터가 뛰어다니게 만들어본다.
5장, ‘NPC와 상호작용’에서는 아무런 대화도 없는 RPG 게임은 상상하기도 어려우므로, 메시징과 대화 시스템을 만들어가면서 활용할 수 있는 고급 기법을 살펴본다.
6장, ‘넓은 야생의 세계’에서는 다루는 범위를 넓혀 아트와 애셋, 플레이어의 탐색을 위한 맵 뷰 개발에 관해 살펴본다. 자세히 보면 맵 뷰에서 자신의 집을 볼 수도 있다.
7장, ‘적과의 조우와 도망’에서는 월드가 크고 무서운 장소라고 생각해보자. 당신은 자신들의 마지막 식량을 먹고 있는 고블린 떼를 우연히 만날 수도 있고, 겁을 먹고 도망칠 수도 있다. 여기에서는 메카님(Mecanim) 설정을 비롯한 전투장면 구성과 인공지능에 대해 살펴본다.
8장, ‘무기 구매’에서는 2D 게임의 장점을 극대화하기 위해 간단한 상점을 구성해본다. 상호작용을 위해 기존 메시징 시스템을 재활용하고 플레이어의 구조에 인벤토리를 추가한다. 추가로 플레이어의 인벤토리를 멋진 커맨드바 구현으로 보여주는 그래픽적인 방법도 살펴본다.
9장, ‘전투 준비’에서는 싸울 준비를 한다. 전투 장면은 있지만, 아직 전투 엔진이 없다. 이제는 턴 기반의 전투 엔진으로 만든 걸 확장할 차례다. 메카님의 근육을 아마도 여태까지 한 번도 생각지 못했던 방식으로 다룬다.
10장, ‘전투와 경험치 획득’에서는 아직 낌새를 못 챈 고블린 무리에게 공격을 시작하고 그들의 작은 몸통이 피와 함께 산산이 부서지는 장면을 생각해본다. 물론 그렇게 한다면 PEGI(유럽 민간 게임 등급 분류 기관) 등급 보류 판정이 날 수도 있지만 어떤 형태로 진행하느냐는 개발자의 몫이다.
11장, ‘조심스레 전진하는 여행자’에서는 게임 프레임워크가 준비된 상태라고 가정한다. 필요한 건 콘텐츠와 약간의 조립만 남았으니 게임 제작을 마무리하는 데 필요한 내용을 살펴본다. 한발 더 나아가 편집기를 확장하고 다듬어서 더욱 유용하고 쉽게 활용하는 방법도 살펴본다.
12장, ‘배포’에서는 게임 개발의 마지막 단계인 기기에 탑재하는 과정을 다룬다. 신뢰도 높은 방식의 세이브/로드 시스템을 구축하고, 이를 다양한 플랫폼에서 잘 동작하게 하는 방법을 살펴본다. 고생해서 개발한 게임을 성공적으로 시장에 출시하고 마케팅하는 방법도 살펴본다.
부록, ‘추가 리소스’에서는 애셋이나 유용한 정보 링크 등의 추가 자료를 통해 게임 개발 여정에 도움을 준다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
목차
목차
- 1. 개요
- 애셋 구하기
- 사이트 모음
- 2D 세상 속으로
- 새로운 2D 모드
- 스프라이트
- 스프라이트 렌더러
- 스프라이트 에디터
- 스프라이트시트
- 텍스처 아틀라스
- 스프라이트 메시
- Box2D 물리 시스템
- 새로운 애니메이션 도프 시트
- 기타 유니티 4.3 개선 사항
- 개선된 Mecanim 성능
- 윈도우폰 API 개선과 윈도우 8.1 지원
- 동적 나브 메시(프로 버전에서만 지원)
- 에디터 개선 사항
- 모노디벨롭 4.01
- 무비 텍스처
- 정리
- 애셋 구하기
- 2. 캐릭터 생성
- 프로젝트 제대로 시작하기
- 구조
- 오브젝트 이름 지정
- 컴포넌트 이해
- 단축을 사용한 콤포넌트 접근
- 컴포넌트를 사용하는 더 나은 방법: 참조
- 더 나은 방법
- 프로젝트 생성
- 클래스
- 객체지향 설계
- 게임 구조
- 공용 게임 오브젝트
- 추가 사항
- 행위 기획
- 공용 게임 오브젝트의 행위
- 플레이어 캐릭터의 행위
- 유니티 스프라이트 시스템 소개
- 스프라이트 가져오기
- Texture type: sprite
- Sprite Mode: single/multiple
- Packing tag
- Pixels to units
- Sprite Editor 버튼
- 스프라이트 에디터
- 스프라이트 자르기(slicer)
- 뷰 컨트롤
- 스프라이트 영역 제어
- 스프라이트 가져오기
- 통합하기
- 메인 캐릭터 불러오기
- 영웅 캐릭터
- 영웅 제어
- 추가 사항
- 정리
- 프로젝트 제대로 시작하기
- 3. 애니메이션 처리
- 스프라이트 애니메이션
- 애니메이션 컴포넌트
- 애니메이션 컨트롤러
- 애니메이션 클립
- 애니메이터 컴포넌트
- 애니메이션 컨트롤러 설정
- 애니메이션 클립 설정
- 수동 애니메이션 클립 생성
- 자동 애니메이션 클립 생성
- 애니메이터 도프 시트
- Dope/curve 뷰
- 애니메이션 컴포넌트
- 통합하기
- 애니메이션 컨트롤러 설정
- 첫 애니메이션 클립 추가(정지 상태)
- 뛰는 동작 애니메이션 클립 추가
- 애니메이션 상태 연결
- 스크립트에서 컨트롤러 접근
- 추가 개선
- 커브 처리
- 추가 진행
- 정리
- 스프라이트 애니메이션
- 4. 게임 월드
- 배경과 레이어
- 스프라이트 나누기 결정
- 마을 배경
- 마을 건물
- 추가 배경
- 씬 구성
- 마을 배경 추가
- 스프라이트 정렬 레이어
- 스프라이트 정렬 순서
- 씬 정렬 레이어 업데이트
- 카메라 처리
- Update와 FixedUpdate, LateUpdate의 비교
- 해상도 관련 주의 사항
- FollowCamera 스크립트 개선
- 전환과 경계
- 경계를 가진 마을
- 계속 이동
- 실전 게임을 위한 준비
- 배경과 움직이는 요소
- 패럴랙싱
- 전경 오브젝트
- 셰이더와 2D
- 추가 사항
- 정리
- 배경과 레이어
- 5. NPC와 상호작용
- RPG 게임 적용
- 고급 프로그래밍 기술
- 싱글톤과 매니저
- 매니저 접근법: 빈 게임 오브젝트 사용
- 싱글톤: C# 싱글톤 패턴 사용
- 싱글톤과 매니저
- 게임 오브젝트 간의 통신
- 위임
- 설정 가능 메소드 패턴
- 위임 패턴
- 합성 위임
- 이벤트
- 메시징
- 개선된 방법
- 위임
- 백그라운드 작업과 코루틴
- 코루틴 진입
- IEnumerator
- 양보하기
- 코루틴 시작
- 보완하기
- 직렬화와 스크립팅
- 애셋 데이터 저장과 관리
- 편집기에서 직렬화 파일 사용
- 코드에서 .asset 파일에 접근
- 통합하기
- NPC와 대화
- 대화 오브젝트
- 나중을 위한 오브젝트 저장과 직렬화
- 대화 컴포넌트
- 기본 대화 시스템 구축
- 매니저
- 대화 시작
- 대화 표시
- 기능 개선
- 학습 내용 연결
- NPC와 대화
- 추가 사항
- 정리
- 6. 넓은 야생의 세계
- 더 커다란 뷰
- 맵의 종류
- 고정 맵
- 생성 맵
- 2D 게임에서의 3D 사용
- 절차적 진행
- 스크린 공간과 월드 공간
- 맵의 종류
- 통합하기
- 맵 추가
- 흥미로운 장소 추가
- 재사용을 위한 MapPoint 프리팹 생성
- NavigationPrompt 스크립트 수정
- NavigationManager 스크립트 수정
- 클릭이나 터치로 탐험
- 입력 관리
- 입력 우선순위 관리
- 입력 순서 관리
- 커브 사용
- 시작 위치 수정
- 너무 먼 여행
- 화면 전환
- 페이딩을 사용한 레벨 로딩
- 새로운 씬을 포함하기 위한 빌드 설정
- 추가 사항
- 정리
- 더 커다란 뷰
- 7. 적과의 조우와 도망
- 이벤트 시스템
- 임의성
- 랜덤 코드/생성 설계
- 완전한 임의성
- 기본 인공지능
- 상태 기계
- 상태 정의
- 간단한 단일 선택
- 다중 상태 처리
- 상태 매니저
- 센서
- 통합하기
- 새로운 씬 구성
- 첫 번째 적 추가
- 무리 소환
- 집으로의 귀환
- 랜덤 이벤트
- 마지막 남은 일
- 추가 사항
- 정리
- 8. 무기 구매
- 쇼핑을 하는 이유
- 아이템의 힘
- 상점 구성
- 인벤토리 형태
- 99의 법칙
- 방해 시스템
- 슬롯 기반 시스템
- 미니 게임
- 현실 세계
- 결제 유도
- 유료 판매
- 체험판을 제공하는 유료 판매
- 광고 탑재
- 앱 내부 결제
- 게임 재화
- 통합하기
- 상점 애셋 수집
- 상점 씬 구성
- 인벤토리 아이템 생성
- 상점 관리
- 2D 버튼 처리
- 플레이어 인벤토리 정의 업데이트
- 상품 입고
- 상점에서 나가기
- 상점 진입
- 인벤토리 관리
- 플레이어 인벤토리 동작 추가
- 추가 사항
- 정리
- 9. 전투 준비
- 효과적인 RPG UI 오버레이
- 모험가의 오버레이
- 컨텍스트에 따른 오버레이 구성
- 최신 플로팅 UI
- 밸런스 유지
- 통합하기
- 전투 상태 매니저
- 코드에서 상태 매니저 사용
- 전투 시작
- 작은 능력 추가
- GUI 표현
- 커맨드 바
- 커맨드 버튼
- 씬에 커맨드 바 추가
- 무기 선택
- 커맨드 버튼 선택
- 커맨드 바 선택 관리
- BattleManager 상태에 선택 기능 추가
- BattleManager 상태에 무기 지원
- 추가 사항
- 정리
- 효과적인 RPG UI 오버레이
- 10. 전투와 경험치 획득
- 시험장
- 레벨 업
- 밸런싱
- 통합하기
- BattleManager 스크립트 준비
- 적 개선
- 적 프로파일/컨트롤러
- 고블린 프리팹 업데이트
- 코드에서 적 프로파일 설정
- 목표물 선택
- 원형 프리팹 선택
- EnemyController 클래스에 선택 로직 추가
- 공격! 공격!
- 3D 파티클로 표현하는 성가신 고블린의 반응
- 2D와 3D의 혼합
- 파티클 이펙트와 2D
- 죽음 스프라이트 추가
- 파티클 이펙트를 위한 재질 생성
- 고블린 프리팹 구조 개선
- 파티클 추가
- 죽음 애니메이션
- 애니메이션에 파티클 추가
- 마무리 작업
- 새로운 GoblinEnemy 게임 오브젝트를 프리팹으로 만들어 전투에 추가
- 휴스톤, 문제가 생겼어요!
- 마지막 예행연습
- 추가 사항
- 정리
- 11. 조심스레 전진하는 여행자
- 에디터 확장
- 프로퍼티 드로워
- 프로퍼티 드로워 예제
- 커스텀 에디터
- 에디터 윈도우
- 기즈모
- 에디터 메뉴 구성
- MenuItem 속성 추가
- MenuItem 속성 활성화/비활성화
- MenuItem 속성에 단축키 추가
- 컨텍스트 MenuItem 추가
- 에디터 폴더 내에서의 스크립트 실행
- 다른 접근 방법
- 프로퍼티 드로워
- 인게임 메뉴 구조 구성
- 스크린
- 스플래시 스크린
- 로딩 화면
- 메인 메뉴
- 저장 슬롯/레벨 선택
- 설정 페이지
- About 화면
- 개인 정보 보호 정책
- 일시 정지 화면
- 추가 사항(구매, 업적, 리더보드 등)
- 소셜
- 흐름
- 스크린
- 설정 기능
- PlayerPrefs 사용
- 데이터 직렬화
- 디스크에 데이터 저장
- 저장된 데이터 모델링
- 저장과 불러오기 기능
- Save와 Load 함수 테스트
- 웹에 백업
- 추가 사항
- 정리
- 에디터 확장
- 12. 배포
- 플랫폼 차이 대응
- 프로세서 지시자
- 다른 플랫폼을 위한 저장 시스템 개선
- 빌드 노트
- 유니티 접근
- UnityEngine 네임스페이스 접근
- 스태틱 클래스
- 플랫폼 접근
- 유니티 프로젝트에서의 스태틱 이벤트
- 플랫폼 DLL 내장
- 네이티브 플러그인(프로 버전만 해당)
- 프로세서 지시자
- Unity3D에서 코드 푸시
- 애셋 프로세싱
- 빌드 프로세싱
- 애셋 빌드
- 패키징
- 게임 마케팅
- 정리
- 플랫폼 차이 대응
- 부록. 추가 리소스
- 스크립팅 리소스
- 에디터 확장
- AI 추가 검토
- 점진적 생성
- 고급 코딩
- 기타 스크립팅 리소스
- 유용한 애셋
- 아트 소스와 특수 효과
- 웹 하이라이트
- 스크립팅 리소스
도서 오류 신고
정오표
정오표
[p.56 : 2행]
http://wootstudio.ca/win8platstarter
->
http://sdrv.ms/1aE3qfN
[p. 112: 마지막 행 아래에 추가]
//플레이어의 PlayerSprite GameObject 컴포넌트의 참조
private GameObject PlayerSprite;
[p. 114: 스크린샷에 대한 추가 설명]
스크린샷과 동일한 구성을 만들기 위해서는 Animation 창에서 Add Curve->Transform->Position의 더하기 버튼을 클릭하면 된다.
[p.144: 8~11행]
[p.193: 아래에서 6행]
동일한 스레드에서 실행되지 않으며
->
동일한 스레드에서 실행되며