책 소개
요약
요즘 단연 첫손에 꼽히는 모바일 게임 개발 툴인 유니티3D로 게임을 개발할 때 필요한 스크립트 작성 방법을 알려주는 책이다. 다양한 예제를 통해 사용자의 입력 처리, GUI, 아이템, 인벤토리, 인공지능, 통계, 세이브, 소리, 설정 등 2D, 3D를 막론하고 게임을 만들 때 꼭 필요한 기본적인 요소를 만드는 방법과 테스트하는 방법을 소개한다.
이 책에서 다루는 내용
■ 키보드, 마우스와 게임패드의 입력 처리
■ 세 종류의 확장 가능한 아이템 생성
■ 단축키 시스템을 포함한 인벤토리 구현
■ 게임의 비디오, 오디오 설정 최적화
■ 버튼, 체력 바, 피해량 알림을 GUI HUD로 구현하는 방법
■ 복합적인 인공지능 시스템 구현
■ 다양한 방식으로 게임 데이터를 세이브하는 방법
■ 플레이어의 통계와 점수를 추적하는 방법
이 책의 대상 독자
이 책은 프로그래밍과 스크립트 작성에 관한 지식을 어느 정도 갖추고 있으며 유니티3D를 사용해서 게임 개발을 시작하려는 독자를 대상으로 한다. 이미 유니티3D를 사용하고 있더라도 게임 플레이 요소를 모듈화하는 방법을 다루는 이 책은 여전히 유용할 수 있다.
이 책의 구성
1장, ‘입력’에서는 Xbox 360 컨트롤러용 컨트롤과 마우스, 키보드용 컨트롤을 생성하는 방법을 상세하게 살펴본다. 또 플레이어가 원하는 방식으로 게임을 플레이할 수 있게 커스터마이징이 가능한 컨트롤 프로파일도 만들어본다.
2장, ‘GUI’는 2D와 3D GUI 요소를 만드는 방법을 소개한다. 체력 바, 플레이어 정보, 3D 체력 바, 3D 피해량 알림, 적 이름표 등을 만들어본다.
3장, ‘확장 가능한 아이템 클래스’는 셀프 아이템, 근접 아이템, 발사 아이템에 사용할 아이템 클래스를 만드는 방법을 알려준다. 그런 다음, 이런 아이템을 역할에 따라 체계적으로 분류해본다.
4장, ‘인벤토리’는 게임의 인벤토리 시스템을 만드는 방법을 가르쳐준다. 아이템 추가, 아이템 제거, 퀵 아이템 등 기본적인 인벤토리의 구성 요소를 만들어본다. 마지막으로 GUI에 인벤토리를 표시하는 방법도 소개한다.
5장, ‘인공지능’에서는 살아 움직이는 듯한 인공지능을 만드는 방법을 보여준다. 유한 상태 머신과 행동 트리를 소개하고 이런 인공지능 시스템을 사용해서 행동, 효과, 애니메이션, 길 찾기, 경유지 시스템 등을 처리한다.
6장, ‘점수와 통계’에서는 플레이어에게 필요한 통계를 생성하고, 추적하고, 저장하는 방법을 소개한다. 또 통계와 연계해서 업적 시스템도 만들어본다.
7장, ‘세이브와 로드’에서는 플랫 파일과 XML 파일을 사용해서 데이터를 세이브, 로드하는 시스템을 만드는 방법을 소개한다. 그런 다음에 이런 시스템을 사용해서 체크 포인트를 기준으로 하는 세이브 시스템과 언제 어디서든 세이브할 수 있는 시스템을 구현해본다.
8장, ‘소리’에서는 배경음악, 주변 소리, 음향 효과를 처리하는 시스템을 만드는 방법을 소개한다. 플레이 리스트 시스템, 임의 재생 시스템, 이벤트 기반 시스템이 여기에 속한다.
9장, ‘게임 설정’에서는 오디오, 비디오 설정을 입맛에 맞게 바꾸는 방법을 소개한다. 또 PlayerPrefs를 사용해서 설정을 저장하고 로드하는 기능을 만들어본다.
10장, ‘실전 게임 프로젝트’에서는 앞서 배운 거의 모든 내용을 작은 게임으로 취합한다. 앞서 소개한 다양한 요소를 사용해서 간단한 1인칭 액션 RPG 게임을 만들어본다.
목차
목차
- 1장 입력
- 컨트롤 선택
- 필요한 컨트롤 매핑
- 입력 관리자 확인
- Xbox 360 컨트롤러의 입력 확인
- 컨트롤러 입력 추가
- 시작 버튼과 트리거 입력 추가
- 방향 패드 입력 추가
- PC 컨트롤 입력 추가
- 컨트롤 스크립트 작성
- 스크립트를 생성하고 이름 변경
- 스크립트 초기화
- 장치 인식 기능 구현
- 필요한 변수 추가
- 장치 인식 함수 생성
- 식별 함수 생성
- 준비한 걸 보여주지!
- 각 컨트롤이 사용할 변수 추가
- 변수를 표시하는 함수 추가
- 바꿔!
- 컨트롤 프로파일 생성
- 프로파일 전환 함수 추가
- GUI와 상호작용할 함수 추가
- 커스터마이징이 핵심이다
- 컨트롤 스킴 전환
- GUI에 컨트롤 스킴 전환 버튼 추가
- 컨트롤 입력을 돌려가면서 사용
- GUI에 컨트롤 팝업 추가
- 컨트롤 리셋
- 리셋 함수 추가
- 리셋 입력 추가
- 플레이 테스트
- 요약
- 컨트롤 선택
- 2장 GUI
- 전통적인 2D UI
- 신 설정
- 2D UI 스크립트 작성
- GUI 버튼 생성
- 체력 바 생성
- 레벨 표시
- 경험치 바 생성
- 3D UI 스크립트 작성
- 3D 체력 바 생성
- 3D 피해량 알림 생성
- 업데이트 함수 수정
- 피해량 알림 마무리
- 3D 이름표 생성
- 플레이 테스트
- 요약
- 전통적인 2D UI
- 3장 확장 가능한 아이템 클래스
- 셀프 아이템 클래스
- 필요한 변수 추가
- 능력치 변경 함수
- 체력 변경 함수
- 방어력 변경 함수
- 아이템 효과 발동 함수
- 근접 아이템 클래스
- 필요한 변수 추가
- 능력치 변경 함수
- 체력 변경 함수
- 주위 오브젝트와 상호작용
- 트리거 감지
- 발사 아이템 클래스
- 필요한 변수 추가
- 능력치 변경 함수
- 체력 변경 함수
- 움직임 추가
- 트리거 감지
- 필요한 변수 추가
- 플레이 테스트
- 요약
- 셀프 아이템 클래스
- 4장 인벤토리
- 인벤토리의 특징
- 인벤토리의 허용치
- 인벤토리의 사용법
- 인벤토리 정리 방법
- 아이템의 수량 변화
- 아이템 거래
- 아이템을 줍거나 버린다
- 아이템의 파괴와 사용
- 인벤토리 표시
- 인벤토리 스크립트 생성
- 스크립트를 만들고 이름 변경
- 필요한 변수 추가
- 인벤토리 초기화
- 초기화 함수 생성
- 아이템 추가
- 기능 구상
- 아이템 추가 함수 생성
- 아이템 제거
- 기능 구상
- 아이템 제거 함수
- 퀵 아이템 설정
- 간단한 퀵 아이템 설정
- 인벤토리 표시
- 인벤토리 전용 입력
- GUI 표시
- GUI 구현
- 플레이 테스트
- 테스트 신 생성
- 아이템 추가 테스트
- 아이템 제거 테스트
- 기타 테스트 방법
- 요약
- 인벤토리의 특징
- 5장 인공지능
- AI 기법
- 유한 상태 머신
- 행동 트리 형태의 AI 시스템
- AI 기법의 결합
- 스크립트 작성
- 내부 효과와 외부 효과
- 외부 효과
- 내부 효과
- 효과 스크립트 작성
- 길 찾기
- 경유지를 사용해서 경로 생성
- 유니티의 NavMesh 시스템
- 테스트 환경 설정
- NavMesh 생성
- 변수 추가
- 길 찾기를 적용할 함수의 스크립트 작성
- 캐릭터 애니메이션
- 모델 메시 추가
- 애니메이션 스크립트 작성
- AI 패키지 제작
- 코드 마무리
- 인스펙터 마무리
- 플레이 테스트
- 요약
- AI 기법
- 6장 점수와 통계
- 통계 프로토타이핑
- 플레이어에게 통계 부여
- 통계 추적 기능
- 통곗값 설정
- 통계 리셋
- PlayerPrefs 리셋
- PlayerPrefs 저장
- PlayerPrefs 설정
- PlayerPrefs의 특정 값 리셋
- 화면에 통계 표시
- 업적 시스템
- 업적 프로토타이핑
- 업적에 필요한 변수 추가
- 업적 리셋
- 업적 추적 기능
- 적을 죽인 횟수 추적
- 상금 총액 추적
- 소비한 돈 추적
- 플레이어의 레벨 추적
- 승리한 라운드 수 추적
- 플레이한 시간 추적
- 업적 확인
- 특정 업적 확인
- 모든 업적 확인
- 업적을 화면에 표시
- GUI 함수 추가
- 플레이 테스트
- 요약
- 통계 프로토타이핑
- 7장 세이브와 로드
- 플랫 파일에 데이터 저장
- 필요한 변수 추가
- 플랫 파일 저장
- 플랫 파일 삭제
- 플랫 파일 로드
- 파일 로드
- XML 저장 시스템
- XML 파일 생성
- XML을 사용해서 데이터 저장
- 필요한 변수 추가
- 플레이어의 데이터 저장
- 적 데이터 저장
- XML을 사용해서 데이터 로드
- 플레이어 데이터 로드
- 적 데이터 로드
- SaveHandler 스크립트 생성
- 체크포인트 세이브 시스템
- 항시 세이브 시스템
- 플레이 테스트
- 요약
- 플랫 파일에 데이터 저장
- 8장 소리
- 배경음악
- 임의 재생 시스템 생성
- 플레이리스트 재생 시스템 추가
- 배경음악 재생 시스템 마무리
- 주변 소리
- 스크립트와 변수 생성
- 변수 초기화
- 주변 소리 재생
- 음향 효과
- 스크립트와 변수 생성
- 플레이 테스트
- 요약
- 배경음악
- 9장 게임 설정
- 최적화할 설정 검토
- 비디오 설정 생성
- 기본값 설정
- 그림자 변경
- 시야각 설정
- 해상도 설정
- 앤티에일리어싱 속성 변경
- 수직 동기화 설정
- 기본 품질 설정 변경
- 설정 로드
- 오디오 설정 생성
- 기본값 설정
- 볼륨 설정
- 스피커 모드 설정
- 설정 메뉴 생성
- 준비 작업
- GUI 생성
- 모든 설정 값 저장
- 모든 설정 값 로드
- 플레이 테스트
- 요약
- 10장 실전 게임 프로젝트
- 레벨 생성
- 메인 메뉴
- 게임 플레이에 사용할 레벨
- 플레이어 상호작용 생성
- 사격과 일시 정지
- 물약 획득
- 사운드 추가
- 배경음악 재생
- 주변 소리 추가
- GUI 구현
- 스크립트 추가
- 통계 추적
- 스크립트 추가
- 세이브와 로드
- 스크립트 추가
- 마무리 작업
- 승리 조건 추가
- AI 적용
- 아이템 마무리
- 레벨 추가
- 플레이 테스트
- 요약
- 레벨 생성