이 책을 쓰는 이유 ... xxv 전통적인 어드밴처 게임 ... xxvi 유니티 게임 엔진에 대한 소개 ... xxvi 스크립트를 꼭 배워야 하나? ... xxvi 이 책의 기본 가정과 선행지식 ... xxx 이 책에서 다루지 않는 내용 ... xxx 이 책의 조판 관례 ... xxxi 소스 코드 ... xxxi 01장. 장르 살펴보기 ... 1 역사적인 참고 자료 ... 1 그래픽 어드벤처 ... 4 루카스아츠 타이틀 ... 6 실시간 게임으로의 빠른 변화 ... 7 이 장르가 사람들을 끌어들이는 이유 ... 8 흥미로운 장소와 재미있는 해결책 ... 14 스타일의 정의 ... 16 환경 나누기 ... 18 시차 효과 ... 20 애니메이션 ... 21 도전 과제, 임무, 퍼즐 ... 22 어드벤처 장르에 무슨 일이 일어난 걸까? ... 23 최근 어드벤처 게임의 성공 ... 25 게임의 재미와 사람 성격의 본질 ... 25 왜 나만의 게임을 만들어야 하나? ... 28 다양한 역할 ... 28 인디 개발자에게 적합한 두 가지 게임 형식 ... 29 1인칭 게임 ... 29 캐릭터 ... 30 두 게임 형식의 공통 요소 ... 31 1인칭 게임의 디자인 고려 사항 ... 32 이야기와 과제의 개발 ... 34 실시간 게임과 프리렌더링 게임의 비교 ... 36 정리 ... 50 02장. 유니티 UI의 기본 - 시작하기 ... 53 유니티 설치와 시작 ... 53 새 프로젝트 또는 장면의 로딩과 생성 ... 54 레이아웃 ... 58 장면 창 ... 59 게임 창 ... 60 계층 뷰 ... 60 프로젝트 뷰 ... 61 인스펙터 ... 62 툴바 ... 63 메뉴 ... 65 파일 ... 65 편집 ... 65 에셋 ... 66 게임 객체 ... 66 컴포넌트 메뉴 ... 67 지형 메뉴 ... 67 창 메뉴 ... 67 도움말 메뉴 ... 67 간단한 객체의 생성 ... 68 선택과 포커스 ... 73 객체의 변형 ... 74 스냅 ... 77 정점 스냅 ... 78 장면 툴 ... 79 스냅을 활용하지 않는 정렬 ... 80 조명 ... 82 3D 객체 ... 90 메시 ... 90 메시의 하위 객체 ... 90 매핑 ... 92 재료 ... 98 정리 ... 99 03장. 스크립트에 발 담그기 ... 101 스크립트란? ... 101 스크립트의 구성 요소 ... 103 함수 ... 103 변수 ... 113 게임에서 객체 집기 ... 119 마우스로 집은 횟수 세기 ... 124 조건과 상태 ... 125 조건문의 구조 ... 129 계산 순서 ... 130 정리 ... 130 04장. 지형 생성 - 테스트 환경의 생성 ... 133 장면의 플라이쓰루 내비게이션 ... 139 지형 ... 139 페인트 텍스처 ... 144 트리 ... 147 하늘 ... 155 다시 트리로 ... 159 패키지 ... 159 세부 표현 ... 170 커스텀 지형 에셋의 생성 ... 175 내보내기 vs. 네이티브 형식 사용하기 ... 178 지형 설정 ... 178 섀도우 ... 180 안개 ... 186 정리 ... 187 05장. 내비게이션과 기능 ... 189 내비게이션 ... 189 플랫폼 가지고 놀기 ... 216 충돌 벽 ... 228 첫 번째 빌드 ... 248 정리 ... 254 06장. 커서 제어 ... 257 커서 가시성 ... 257 커스텀 커서 ... 260 GUI 레이어 ... 261 텍스처 임포터 ... 262 힌트 색상 ... 273 커서 위치 ... 273 GUITexture 커서의 관리 ... 275 객체 간 통신 ... 278 마우스 오버 커서 변화 ... 282 거리 확인 ... 290 중간 빌드 ... 294 마우스 오버에 대한 객체 반응 ... 296 새 기능의 옵션화 ... 313 이동 도중 마우스 오버 기능의 제한 ... 316 정리 ... 317 07장. 액션 객체 ... 319 에셋 임포트 ... 319 임포트 ... 322 FBX 임포터 ... 332 개별 객체에 대한 상세 제어 ... 340 개별 변형 ... 343 복잡한 계층 구조 ... 345 부모 지정 ... 346 재료의 설정 ... 349 열쇠 ... 349 나무 상자 ... 356 꽃 ... 360 섀도우 ... 362 정적 객체 ... 364 콜라이더 ... 369 애니메이션 ... 375 Store in Root 접근 ... 379 효과음의 추가 ... 385 두 상태 애니메이션의 설정 ... 390 유니티의 애니메이션 뷰 활용 ... 394 임포트한 애니메이션의 수정 ... 406 다른 객체의 애니메이션 트리거 ... 411 한계점 ... 416 정리 ... 417 08장. 상태 관리 ... 421 가능성의 식별 ... 422 플롯에 대한 소개 ... 423 진행 과정 ... 424 액션 아이템 ... 426 스턴트 대역 ... 427 플로우 차트의 개발 ... 428 상태 메타데이터 전환 액션의 분리 ... 430 상호작용 및 상태의 정의 ... 431 상태 전환의 시각화 ... 431 상태 다이어그램 ... 436 결과의 판단 ... 439 조회 테이블 ... 440 문자열 파싱 ... 443 객체 조회 스크립트 ... 445 액션 관련 메시지 ... 456 정리 ... 458 09장. 객체 메타데이터 ... 461 상태 관련 메타데이터 ... 462 존재 상태/위치 ... 464 가시성 타입 ... 465 게임 참고 문서 ... 466 현재 상태 ... 467 다시 살펴보는 마우스 집기 ... 468 메타데이터의 추가 ... 473 정리 ... 477 10장. 메시지 텍스트 ... 479 GUI 스킨 ... 480 운영체제 폰트 지원 ... 483 텍스트 가시성 ... 492 객체 메타 데이터의 활용 ... 497 액션의 처리 ... 502 실제 적용 ... 509 오디오 관리 ... 510 애니메이션의 처리 ... 512 시작 값의 로드 ... 517 폰트와 텍스트에 대한 상세 설명 ... 522 액션 메시지의 활성화 ... 527 동적인 읽기 시간 ... 532 마지막 보정 ... 534 정리 ... 537 11장. 아이템 저장소 로직 ... 539 레이어 ... 539 커서 변환 ... 544 몇 가지 개선점 ... 549 아이템 저장소 화면 ... 552 조회 테이블의 확장 ... 564 디버깅 ... 568 아이템 저장소 아이콘의 추가 ... 569 2D 객체의 처리 ... 579 정리 ... 585 12장. 아이템 저장소 관리 ... 587 태그 ... 597 아이템 저장소 레이아웃 ... 600 아이템 저장소 오버플로우 ... 604 한계 범위 설정 ... 611 아이템 그리드 저장소의 제한 ... 613 화살표 제한 ... 617 아이템 저장소에서의 객체 추가 및 제거 ... 620 아이템 저장소에서의 객체 제거 ... 620 아이템 저장소에 객체 추가 ... 624 아이템의 조합 ... 626 잘못된 집기 ... 628 정리 ... 633 13장. 기본 기능 마무리 ... 635 3D 객체 가시성의 처리 ... 635 키 프레임 없는 페이드 효과의 개발 ... 640 가시성 변경으로 인한 부작용 ... 642 콜라이더 처리 ... 644 일치하는 커서가 없는 경우의 처리 ... 648 랜덤 응답 ... 649 3D 장면에서의 커서 드롭 ... 657 가시성 제어 함수의 개발 ... 663 다시 살펴보는 액션 메시지 ... 666 페이드 효과의 재확인 ... 671 객체 간 상호작용 ... 673 장면상의 객체 배치 ... 680 특수 사례 ... 685 확장 가능 코드 ... 685 상태 변화가 없는 응답 ... 687 보물 상자 시퀀스의 활성화 ... 689 읽을 자료 ... 699 메시지 숨기기 ... 707 정리 ... 709 14장. 게임 요구사항 다루기 ... 711 드롭 박스 ... 711 꽃 살리기 ... 722 절두체 컬링 ... 727 묘약병 붓기 ... 729 묘약병의 가시성 문제 해결 ... 732 마법 일으키기 ... 732 게임 객체의 소멸 처리 ... 738 프리팹의 활성화 ... 740 카메라 포커스 ... 742 카메라 위치 조정 메타데이터 ... 745 카메라 강제 위치 조정 스크립트의 작성 ... 748 최종 에셋의 임포트 ... 755 Structures 불러오기 ... 755 재료와 광원 매핑 ... 758 지하 ... 764 사원 속으로 ... 770 홀로그램 이미지 ... 775 발코니 ... 780 토피 열매 얻기 ... 782 재미 요소들 ... 793 폭포 ... 796 재단의 가디언 ... 802 가디언 ... 807 정리 ... 814 15장. 미로와 최종 레벨 ... 817 미로의 기하 ... 817 미로의 관리 ... 823 드롭 지점 ... 826 트랩 검사 ... 831 빼앗긴 무기 ... 834 나머지 가능성의 처리 ... 837 사용자 재설정 ... 837 서랍 활성화 ... 840 이스터 에그 ... 848 동굴 입구 ... 851 최종 레벨 ... 854 트리 생성기 ... 854 서 있는 비석 ... 857 상급 ... 859 바람의 손길 ... 860 최종 지형 ... 861 최종 시퀀스 ... 867 환경 효과 ... 872 애니메이션 이벤트 ... 876 반짝이는 효과의 추가 ... 879 여러 개의 토피 열매 ... 881 레벨 로드 ... 887 정리 ... 889 16장. 메뉴와 레벨 ... 891 메뉴 접근 - 소메뉴 ... 891 확인 대화상자 ... 896 메뉴 모드의 추적 ... 899 메인 메뉴 ... 902 설정 메뉴 ... 907 플레이어 설정 ... 910 컨트롤 채우기 ... 913 색상 설정 ... 917 오디오 마무리 ... 924 효과음 ... 925 배경음 ... 927 음악 ... 929 음성 또는 대화 볼륨 ... 932 메뉴용 커스텀 스킨 ... 934 장면 이동과 장면 내 상호작용 중단 및 메뉴 마무리 ... 938 실시간 배경 ... 941 시작 메뉴/레벨 ... 945 배경의 관리 ... 947 레벨 변경 ... 953 저장/불러오기 ... 955 게임 데이터의 저장 ... 960 저장된 데이터의 로드 ... 964 정리 작업 ... 970 마침내, 다시 처음으로 ... 975 이제 게임이 완성됐나? ... 986 최종 작업 ... 990 퍼블리싱 ... 991 퍼블리싱 ... 992 정리 ... 994 17장. 기본 지식 넘어서기 ... 997 추가 기능 ... 997 HUD 점수/순위 ... 997 힌트/난이도 ... 999 여러 번의 저장 기능 ... 1001 물리 이론과 발사체 ... 1002 데이터 보관 ... 1002 추가 콘텐츠 ... 1004 1인칭에서 3인칭으로의 전환 ... 1004 캐릭터 ... 1005 카메라 ... 1007 캐릭터 대화 ... 1008 대화 트리 ... 1009 캐릭터 대안 ... 1014 모바일 플랫폼에 대한 디자인 고려사항 ... 1015 라이선스, 하드웨어, 셋업 ... 1016 스크립트 작성 ... 1018 내비게이션과 입력 ... 1019 셰이더와 텍스처 ... 1021 다각형 개수 ... 1022 배치 처리 ... 1023 콜라이더 ... 1025 메뉴와 GUI ... 1026 기타 사항 ... 1026 디자인 문서 ... 1027 간략한 스토리 ... 1028 상세 스토리 ... 1028 게임의 목적 ... 1032 게임의 타깃 플랫폼 ... 1032 차별성과 시장성 ... 1032 조작과 장면 이동 ... 1032 게임 방식 ... 1033 평가 방식, 점수 계산, 게임에 이기는 법 ... 1035 레벨 설계 ... 1036 시각 스타일 ... 1036 사용자 인터페이스 ... 1036 캐릭터와 액션 객체 ... 1037 환경과 비상호작용 객체 ... 1038 효과음 ... 1039 음악 ... 1039 음성 ... 1039 정리 ... 1039 부록A. SSE 셰이더 그래프 ... 1043 SSE BetterLightmap 셰이더 그래프 ... 1043 SSE ReflectiveAlpha 셰이더 그래프 ... 1044 SSE ReflectiveCutout 셰이더 그래프 ... 1045 부록B. 키 코드 ... 1049 찾아보기 ... 1054