이미 소장하고 있다면 판매해 보세요.
|
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와 대화 대화 오브젝트 나중을 위한 오브젝트 저장과 직렬화 대화 컴포넌트 기본 대화 시스템 구축 매니저 대화 시작 대화 표시 기능 개선 학습 내용 연결 추가 사항 정리 6. 넓은 야생의 세계 더 커다란 뷰 맵의 종류 고정 맵 생성 맵 2D 게임에서의 3D 사용 절차적 진행 스크린 공간과 월드 공간 통합하기 맵 추가 흥미로운 장소 추가 재사용을 위한 MapPoint 프리팹 생성 NavigationPrompt 스크립트 수정 NavigationManager 스크립트 수정 클릭이나 터치로 탐험 입력 관리 입력 우선순위 관리 입력 순서 관리 커브 사용 시작 위치 수정 너무 먼 여행 화면 전환 페이딩을 사용한 레벨 로딩 새로운 씬을 포함하기 위한 빌드 설정 추가 사항 정리 7. 적과의 조우와 도망 이벤트 시스템 임의성 랜덤 코드/생성 설계 완전한 임의성 기본 인공지능 상태 기계 상태 정의 간단한 단일 선택 다중 상태 처리 상태 매니저 센서 통합하기 새로운 씬 구성 첫 번째 적 추가 무리 소환 집으로의 귀환 랜덤 이벤트 마지막 남은 일 추가 사항 정리 8. 무기 구매 쇼핑을 하는 이유 아이템의 힘 상점 구성 인벤토리 형태 99의 법칙 방해 시스템 슬롯 기반 시스템 미니 게임 현실 세계 결제 유도 유료 판매 체험판을 제공하는 유료 판매 광고 탑재 앱 내부 결제 게임 재화 통합하기 상점 애셋 수집 상점 씬 구성 인벤토리 아이템 생성 상점 관리 2D 버튼 처리 플레이어 인벤토리 정의 업데이트 상품 입고 상점에서 나가기 상점 진입 인벤토리 관리 플레이어 인벤토리 동작 추가 추가 사항 정리 9. 전투 준비 효과적인 RPG UI 오버레이 모험가의 오버레이 컨텍스트에 따른 오버레이 구성 최신 플로팅 UI 밸런스 유지 통합하기 전투 상태 매니저 코드에서 상태 매니저 사용 전투 시작 작은 능력 추가 GUI 표현 커맨드 바 커맨드 버튼 씬에 커맨드 바 추가 무기 선택 커맨드 버튼 선택 커맨드 바 선택 관리 BattleManager 상태에 선택 기능 추가 BattleManager 상태에 무기 지원 추가 사항 정리 10. 전투와 경험치 획득 시험장 레벨 업 밸런싱 통합하기 BattleManager 스크립트 준비 적 개선 적 프로파일/컨트롤러 고블린 프리팹 업데이트 코드에서 적 프로파일 설정 목표물 선택 원형 프리팹 선택 EnemyController 클래스에 선택 로직 추가 공격! 공격! 3D 파티클로 표현하는 성가신 고블린의 반응 2D와 3D의 혼합 파티클 이펙트와 2D 죽음 스프라이트 추가 파티클 이펙트를 위한 재질 생성 고블린 프리팹 구조 개선 파티클 추가 죽음 애니메이션 애니메이션에 파티클 추가 마무리 작업 새로운 GoblinEnemy 게임 오브젝트를 프리팹으로 만들어 전투에 추가 휴스톤, 문제가 생겼어요! 마지막 예행연습 추가 사항 정리 11. 조심스레 전진하는 여행자 에디터 확장 프로퍼티 드로워 프로퍼티 드로워 예제 커스텀 에디터 에디터 윈도우 기즈모 에디터 메뉴 구성 MenuItem 속성 추가 MenuItem 속성 활성화/비활성화 MenuItem 속성에 단축키 추가 컨텍스트 MenuItem 추가 에디터 폴더 내에서의 스크립트 실행 다른 접근 방법 인게임 메뉴 구조 구성 스크린 스플래시 스크린 로딩 화면 메인 메뉴 저장 슬롯/레벨 선택 설정 페이지 About 화면 개인 정보 보호 정책 일시 정지 화면 추가 사항(구매, 업적, 리더보드 등) 소셜 흐름 설정 기능 PlayerPrefs 사용 데이터 직렬화 디스크에 데이터 저장 저장된 데이터 모델링 저장과 불러오기 기능 Save와 Load 함수 테스트 웹에 백업 추가 사항 정리 12. 배포 플랫폼 차이 대응 프로세서 지시자 다른 플랫폼을 위한 저장 시스템 개선 빌드 노트 유니티 접근 UnityEngine 네임스페이스 접근 스태틱 클래스 플랫폼 접근 유니티 프로젝트에서의 스태틱 이벤트 플랫폼 DLL 내장 네이티브 플러그인(프로 버전만 해당) Unity3D에서 코드 푸시 애셋 프로세싱 빌드 프로세싱 애셋 빌드 패키징 게임 마케팅 정리 부록. 추가 리소스 스크립팅 리소스 에디터 확장 AI 추가 검토 점진적 생성 고급 코딩 기타 스크립팅 리소스 유용한 애셋 아트 소스와 특수 효과 웹 하이라이트 |
|
★ 이 책에서 다루는 내용 ★
■ 자신만의 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장, ‘배포’에서는 게임 개발의 마지막 단계인 기기에 탑재하는 과정을 다룬다. 신뢰도 높은 방식의 세이브/로드 시스템을 구축하고, 이를 다양한 플랫폼에서 잘 동작하게 하는 방법을 살펴본다. 고생해서 개발한 게임을 성공적으로 시장에 출시하고 마케팅하는 방법도 살펴본다. 부록, ‘추가 리소스’에서는 애셋이나 유용한 정보 링크 등의 추가 자료를 통해 게임 개발 여정에 도움을 준다. ★ 이 책의 대상 독자 ★ 이 책은 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장, ‘배포’에서는 게임 개발의 마지막 단계인 기기에 탑재하는 과정을 다룬다. 신뢰도 높은 방식의 세이브/로드 시스템을 구축하고, 이를 다양한 플랫폼에서 잘 동작하게 하는 방법을 살펴본다. 고생해서 개발한 게임을 성공적으로 시장에 출시하고 마케팅하는 방법도 살펴본다. 부록, ‘추가 리소스’에서는 애셋이나 유용한 정보 링크 등의 추가 자료를 통해 게임 개발 여정에 도움을 준다. ★ 지은이의 말 ★ 지금까지는 유니티3D를 3D 게임을 만드는 데 필요한 기능을 쉬우면서도 강력하게 제공하는 미들웨어 시스템으로 보는 것이 일반적이었는데, 다시 2D 게임이 유행하면서 유니티는 원하는 대로 멋지게 2차원 게임을 만들 수 있는 2D 툴셋을 개발했다. 유명한 게임들이 대체로 갖추고 있는 다양한 기능을 어떻게 구현하는지 궁금하다면 이 책이 그런 의문을 해소해줄 것이다. RPG 게임의 프레임워크 개발을 배울 수도 있고 메커님(Mecanim)과 커브(curves) 같은 유니티의 내장 기능을 제대로 사용하기 위해 고급 C# 스크립팅 기술이나 기교를 배울 수도 있다. 작은 마을과 그 마을에 사는 캐릭터를 생성해나가면서 새로운 2D 기능을 배울 수 있고, 최선의 활용법을 익힐 수 있다. 그러고 나서, 더 큰 세계로 나가 다양한 타입의 씬을 다루는 방법이나 랜덤 이벤트 스크립팅, 무서운 적과의 만남 등의 처리를 배운다. 캐릭터의 전투 준비(약간의 구매 활동 포함)와 싸우기만을 위해 으르렁대는 성난 생명체 집단을 처리하는 방법도 배울 수 있다. 적들의 반응은 구현하기에 따라 달라진다. 유니티 4.3에서 오디오 관련 내용은 변한 게 없으므로 이 책에서는 다루지 않는다. 유니티 5에서는 많은 변화가 있지만, 그보다 더 중요하게 다뤄야 할 내용이 너무 많다. 이 책을 마칠 무렵이면 원하는 플랫폼 대상으로 설계하고 생성, 배포, 통합하는 게 가능해질 것이며, 유니티 에디터를 원하는 형태로 설정하고 좀 더 자신감 있게 게임 개발을 하게 될 것이다. 또한 가급적 많은 수익을 내기 위한 마케팅과 수익 모델 설계, 다수 플랫폼 출시 등의 기법에 대해서도 예리한 식견을 보유하게 될 것이다. ★ 옮긴이의 말 ★ 컴퓨터를 활용한 게임의 역사는 이제 고작 30여 년이 지났을 뿐이며, 운 좋게도 저는 이런 게임 역사의 시작을 목격했고 학창 시절 컴퓨터 게임과 아케이드 게임에 빠져 살았으며, 현재는 게임을 개발하면서 인생의 상당 부분을 게임과 함께 하고 있습니다. 컴퓨터 게임이라는 게 세상에 나타나지 않았다면 어떤 학창시절을 보내고, 현재는 또 어디에서 무슨 일을 하면서 살고 있을까 하는 상상을 가끔 해봅니다. 긴 인류의 역사에 비해 컴퓨터 게임은 역사라고 부르기도 민망할 정도로 탄생한 지 얼마 되지 않은 분야입니다. 당연한 이야기겠지만, 최초의 컴퓨터 게임은 2D 게임이었고 이후 3D 게임이 탄생하기 전까지는 따로 2D 게임이라고 부를 필요도 없이 당연히 모든 게임은 2차원의 평면에서 펼쳐지는 게 일반적이었습니다. 기술이 발전함에 따라 인류는 좀 더 현실에 가까운 세상을 구현하고자 하는 욕망을 다양한 예술 분야에서 꿈꾸고 시도했으며, 결국은 3차원의 공간을 수학적으로 모델링해 마치 실제 공간에 있는 듯한 느낌을 주기 위한 기술적 기반을 마련하는 데 성공했습니다. 일부 성급한 개발자나 게이머는 앞으로 모든 게임은 3차원이 될 것이라 속단하기도 했지만, 그런 예측은 적어도 현재까지는 완전히 빗나갔습니다. 최근 게임 시장의 중심으로 떠오른 모바일 게임 시장을 살펴보면 전체의 절반이 훨씬 넘는 게임이 2D로 개발됐습니다. 3D 게임은 2D 게임의 상위 개념이 아니며, 만들고자 하는 게임의 형태에 따라 더 잘 어울리는 방법을 택해야 합니다. 국내의 상황만 보더라도 구글 안드로이드 마켓에 등록된 게임 중 매출 상위 100개의 게임의 약 절반이 2D로 개발됐는데, 일반적으로 2D로 게임을 개발할 때 들어가는 개발 비용이 3D로 개발할 때에 비해서 크게 절약되는 경향이 있어 사업적 관점에서 접근할 때 2D로 게임을 개발하는 편이 위험 요소가 더 적다고도 볼 수도 있습니다. 게임에서의 3D 기술이 어느 정도 안정될 무렵 게임의 트렌드가 2D에서 3D로 넘어가는 듯한 모습을 보인 시기는 분명 있었고, 유니티도 그런 상황을 의식해서 처음에는 유니티3D라는 이름만 봐도 알 수 있듯 3D에 특화된 개발 도구로 세상에 처음 나왔습니다. 하지만 2D 게임의 인기는 좀처럼 사그라지지 않았고, 현재 3D 게임과 나란히 견줘도 뒤지지 않을 만큼 게이머들에게 큰 반응을 얻고 있습니다. 이에 유니티에서도 좀 더 편리하게 2차원 게임을 만들 수 있도록 2D에 특화된 기능을 제대로 제공하기 시작했습니다. 이 책은 유니티 버전 4.3에 새롭게 추가된 내용을 살펴보는 것으로 시작해 유니티가 새롭게 제공하는 2D 특화 기능을 하나씩 다루면서 유명한 게임에서 흔히 사용하는 기법을 따라 해보는 형태로 구성돼 있어 책의 내용을 끝까지 잘 따라가기만 한다면 완전한 하나의 게임을 개발하는 데 필요한 전반적인 지식을 갖출 수 있습니다. 시장 주요 트렌드의 한 축을 담당하는 2D 게임을 최신 유니티 환경에서 개발하는 데 필요한 내용을 다룬 이 책의 번역을 맡은 일은 제겐 영광스러운 경험이었습니다. 유니티 환경에서 게임을 개발하는 개발자에게 2D 게임 개발의 기초를 탄탄하게 다져줄 수 있는 좋은 서적을 소개할 수 있어 기분이 좋습니다. 무엇보다 이 책을 선택해 지금 이 글을 읽고 있는 독자 여러분에게 진심으로 고맙습니다. 부디 이 책이 유니티 2D 게임프로그래밍의 기초를 다지는 데 큰 도움이 되기를 희망합니다. |