책 소개
요약
이 책은 유니티로 RPG 게임을 제작하려는 개발 지망생과 개발자를 위한 내용을 담고 있다. 캐릭터 이동, 전투 시스템, 몬스터 AI, 인벤토리, 퀘스트 등 RPG 게임의 핵심 요소를 체계적으로 다루며, 유니티 컴포넌트를 기반으로 유한 상태 기계를 구현하는 방법을 소개한다. Scriptable Object를 활용해 플레이어, 몬스터, 퀘스트, NPC 데이터 등 게임 데이터를 효율적으로 관리하는 방법도 다룬다. 기초부터 고급 기능까지 단계별로 설명하며, 실무에서 마주할 문제와 해결 방법을 제시한다.
이 책에서 다루는 내용
◆ 플레이어 이동, 점프, 공격 등 기본 캐릭터 기능 구현 과정을 유한 상태 기계를 활용해 단계적으로 설명
◆ 몬스터 제작 및 추격, 공격 기능을 통해 적 AI 동작 구현
◆ 전투 및 대미지 시스템 구현을 통해 RPG 게임의 핵심 시스템 구축
◆ Scriptable Object를 활용한 플레이어, 몬스터, 퀘스트, NPC 데이터 등 게임 데이터의 효율적 관리
◆ 사용자 인터페이스UI와 인벤토리 시스템 구축
◆ 퀘스트 시스템과 NPC 설정으로 스토리와 상호작용 요소 추가
◆ 캐릭터 레벨 시스템을 통한 보상 시스템 구축
◆ 보스 몬스터 제작
◆ 게임 시작 씬과 빌드 과정을 통해 최종 게임 배포 준비
이 책의 대상 독자
◆ Unity를 처음 접하거나 RPG 게임 개발에 입문하려는 학생
◆ RPG 게임의 구조와 구현 과정을 체계적으로 배우고 싶은 개발자
◆ 게임 개발 실무 경험을 쌓고자 하는 개발자
◆ Unity를 활용한 캐릭터 시스템, 전투 시스템, UI 등 다양한 기능 구현을 익히려는 독자
◆ Scriptable Object를 활용해 게임 데이터를 효율적으로 관리하는 방법을 배우려는 개발자
목차
목차
- 1장. 개발 환경 설정
- 1.1 개요
- 1.2 기본 프로그램 설치
- 1.2.1 유니티 설치
- 1.2.2 비주얼 스튜디오 설치
- 1.3 유니티 프로젝트 생성
- 1.3.1 프로젝트 생성
- 1.3.2 유니티 에디터 구성
- 1.3.2 유니티 프로젝트 폴더 구조
- 1.4 주요 용어 정리
- 1.4.1 씬
- 1.4.2 애셋
- 1.4.3 게임 오브젝트
- 1.4.4 컴포넌트
- 1.5 씬 카메라와 게임 오브젝트 조작
- 1.5.1 씬 카메라 제어하기
- 1.5.2 씬 기즈모
- 1.5.4 툴 오버레이
- 1.6 유니티의 회전 및 방향
- 1.6.1 오일러 각
- 1.6.2 쿼터니언(4원수)
- 1.7 프로젝트 준비
- 1.7.1 애셋 임포트하기
- 1.7.2 씬 생성하기
- 1.8 정리
- 2장. 플레이어 이동
- 2.1 개요
- 2.2 플레이어 캐릭터 게임 오브젝트 구성
- 2.2.1 바닥 만들기
- 2.2.2 플레이어 게임 오브젝트 구성하기
- 2.2.3 WASD/방향키 키를 활용한 이동 기능 추가하기
- 2.2.4 이동하는 방향으로 캐릭터 회전시키기
- 2.3 유니티 애니메이션 시스템과 유한 상태 기계
- 2.3.1 애니메이션 워크플로
- 2.3.2 플레이어 캐릭터 애니메이션
- 2.4 플레이어 유한 상태 기계 구성
- 2.4.1 캐릭터 컨트롤러
- 2.4.2 애니메이션 루트 모션
- 2.4.3 PlayerStateBase 스크립트 추가하기
- 2.4.4 PlayerIdleState/PlayerMoveState 스크립트 추가하기
- 2.4.5 PlayerStateManager 스크립트 추가하기
- 2.4.6 입력 관리자 스크립트 추가
- 2.4.7 플레이어의 유한 상태 기계 구성을 위한 컴포넌트 구성하기
- 2.4.8 PlayerAnimationController 추가
- 2.5 캐릭터를 따라다니는 카메라
- 2.5.1 Camera Rig 제작
- 2.6 정리
- 3장. 플레이어 점프 및 공격
- 3.1 개요
- 3.2 플레이어 점프 애니메이션 구성
- 3.2.1 애니메이션 스테이트 머신 구성
- 3.2.2 애니메이션 컨트롤러 업데이트
- 3.3 플레이어 점프 스테이트 추가
- 3.3.1 입력 관리자 업데이트
- 3.3.2 플레이어 스테이트 관리자 업데이트
- 3.3.3 플레이어 점프 스테이트 추가
- 3.3.4 점프를 위한 플레이어의 유한 상태 기계 구성
- 3.4 플레이어 공격 스테이트를 위한 애니메이션 설정
- 3.4.1 애니메이션 스테이트 머신 구성
- 3.5 플레이어 공격 스테이트 추가
- 3.5.1 입력 관리자 업데이트
- 3.5.2 애니메이션 컨트롤러 업데이트
- 3.5.3 플레이어 공격 스테이트 추가
- 3.5.4 플레이어 스테이트 관리자 업데이트
- 3.5.5 공격을 위한 플레이어의 유한 상태 기계 구성
- 3.6 정리
- 4장. 무기 아이템 및 공격 스테이트 업데이트
- 4.1 개요
- 4.2 사운드 효과
- 4.2.1 오디오 소스와 오디오 클립
- 4.2.2 사운드 효과 재생 기능 추가
- 4.3 스크립터블 오브젝트
- 4.4 아이템
- 4.4.1 아이템 클래스
- 4.4.2 무기 아이템 데이터
- 4.4.3 획득 가능한 아이템
- 4.5 플레이어 무기 아이템
- 4.5.1 Weapon 추가
- 4.5.2 무기 관리자 추가
- 4.5.3 무기 아이템 제작
- 4.5.4 무기 아이템 완성
- 4.6 공격 스테이트 완성
- 4.6.1 무기 장착 여부에 따른 공격 스테이트 전환 처리
- 4.6.2 공격 콤보 애니메이션 효과 적용
- 4.7 정리
- 5장. 게임 데이터
- 5.1 개요
- 5.2 플레이어 데이터
- 5.2.1 플레이어 데이터 준비(CSV)
- 5.2.2 플레이어 데이터 생성(스크립터블 오브젝트)
- 5.2.3 플레이어 데이터 적용
- 5.3 몬스터 데이터
- 5.3.1 몬스터 데이터 준비(CSV)
- 5.3.2 몬스터 데이터 생성(스크립터블 오브젝트)
- 5.4 데이터 관리자
- 5.4.1 데이터 관리자 구축
- 5.5 정리
- 6장. 몬스터 제작
- 6.1 개요
- 6.2 몬스터 캐릭터 제작
- 6.2.1 몬스터 게임 오브젝트 구성
- 6.3 몬스터 유한 상태 기계 구성
- 6.3.1 MonsterStateBase 스크립트 추가
- 6.3.2 몬스터 스테이트 관리자 추가
- 6.3.3 유틸리티 클래스 추가
- 6.3.4 몬스터 기본 스테이트 및 정찰 스테이트 추가
- 6.3.5 유한 상태 기계 구성을 위한 컴포넌트 추가
- 6.4 몬스터 애니메이션 구성
- 6.4.1 애니메이터 컨트롤러 추가
- 6.4.2 몬스터 애니메이션 컨트롤러 추가
- 6.5 내비게이션 시스템 설정
- 6.5.1 내비게이션 패키지 설치
- 6.6 정리
- 7장. 몬스터의 추격 및 공격 스테이트
- 7.1 개요
- 7.2 시야 시스템
- 7.2.1 시야 계산을 위한 벡터 이론
- 7.2.2 Util 클래스
- 7.3 몬스터 정찰 기능 업데이트 및 추격 스테이트 추가
- 7.3.1 애니메이터 컨트롤러 업데이트
- 7.3.2 추격 스테이트 추가
- 7.4 공격 스테이트
- 7.4.1 애니메이터 컨트롤러 업데이트
- 7.4.2 공격 스테이트(MonsterAttackState) 추가
- 7.5 정리
- 8장. 전투 및 대미지 시스템
- 8.1 개요
- 8.2 플레이어 공격 판정
- 8.2.1 충돌 판정 기능 추가
- 8.2.2 충돌 판정을 위한 레이어 설정
- 8.3 대미지 처리 시스템 구축
- 8.3.1 Damageable 스크립트 추가
- 8.4 체력 관리 시스템 구축
- 8.4.1 HPController 스크립트 추가
- 8.4.2 HPController 컴포넌트 구성 및 이벤트 연동
- 8.5 몬스터 죽음 스테이트 추가
- 8.5.1 애니메이터 컨트롤러 업데이트
- 8.5.2 죽음 스테이트(MonsterDeadState) 추가
- 8.6 몬스터 죽음 효과
- 8.6.1 죽음 사운드 효과 추가
- 8.6.2 죽음 효과 추가
- 8.7 몬스터 피격 효과
- 8.7.1 몬스터 피격 애니메이션 설정
- 8.7.2 몬스터 피격 사운드 효과 추가
- 8.8 몬스터 공격 판정
- 8.8.1 MonsterAttackController 추가
- 8.9 플레이어 대미지 처리 기능 추가
- 8.9.1 Damageable 컴포넌트 설정
- 8.9.2 HPController 추가
- 8.10 플레이어 죽음 스테이트 추가
- 8.10.1 애니메이터 스테이트 머신 업데이트
- 8.10.2 죽음 스테이트(PlayerDeadState) 추가
- 8.10.3 플레이어의 죽음에 따른 몬스터 스테이트 업데이트
- 8.11 플레이어 피격 효과 추가
- 8.11.1 피격 사운드 효과 추가
- 8.11.2 피격 머티리얼 효과 추가
- 8.11.3 카메라 흔들기 효과 추가
- 8.12 정리
- 9장. 사용자 인터페이스
- 9.1 개요.501
- 9.2 사용자 인터페이스 개요
- 9.2.1 주요 컴포넌트 - 캔버스
- 9.2.2 오버레이 UI
- 9.2.3 화면 공간 카메라 UI
- 9.2.4 월드 공간 UI
- 9.2.5 주요 컴포넌트 - Canvas Scaler
- 9.3 플레이어 스탯 UI 배치
- 9.3.1 플레이어 스탯 UI 배치 - 플레이어 아이콘 이미지
- 9.3.2 플레이어 스탯 UI 배치 - 레벨 텍스트
- 9.3.3 플레이어 스탯 UI 배치 - 체력 바
- 9.3.4 플레이어 스탯 UI 배치 - 경험치 바
- 9.4 플레이어 체력 바 UI 기능 구현
- 9.4.1 플레이어 체력 바 기능 추가
- 9.5 플레이어 대미지 효과 텍스트 UI
- 9.5.1 플레이어 대미지 텍스트 UI 배치
- 9.5.2 플레이어 대미지 텍스트 기능 구현
- 9.6 몬스터 체력 바 UI
- 9.6.1 몬스터 체력 바 UI
- 9.6.2 빌보드 구현
- 9.7 몬스터 대미지 텍스트 UI
- 9.7.1 몬스터 대미지 텍스트 UI 배치
- 9.8 다이얼로그 시스템
- 9.8.1 다이얼로그 UI 배치
- 9.8.2 다이얼로그 기능 구현
- 9.9 정리
- 10장. 인벤토리 시스템
- 10.1 개요
- 10.2 인벤토리 시스템 구축
- 10.2.1 인벤토리 관리자
- 10.3 아이템 추가
- 10.3.1 CollectableItem 스크립트 업데이트
- 10.3.2 Item 스크립트 업데이트
- 10.3.3 체력 아이템 데이터 추가
- 10.3.4 체력 아이템 오브젝트 생성
- 10.3.5 방어력 아이템 데이터 추가
- 10.3.6 방어력 아이템 오브젝트 생성
- 10.4 인벤토리 UI
- 10.4.1 인벤토리 버튼 UI 배치
- 10.4.2 인벤토리 창 UI 배치
- 10.4.3 인벤토리 목록 UI 배치
- 10.4.4 인벤토리 목록 UI 기능 구현
- 10.4.5 인벤토리 창 UI 기능 구현
- 10.4.6 클릭 입력 예외처리
- 10.4.7 아이템 프리팹 만들기
- 10.5 정리
- 11장. 퀘스트 시스템과 NPC
- 11.1 개요
- 11.2 몬스터 생성 시스템
- 11.2.1 몬스터 프리팹 생성
- 11.2.3 몬스터 스테이트 관리자 업데이트
- 11.2.4 몬스터 생성 시스템 추가
- 11.3 카메라 회전 기능
- 11.3.1 카메라 회전을 위한 입력 관리자 업데이트
- 11.3.2 카메라 회전 기능 구현
- 11.3.3 플레이어 이동 기능 업데이트
- 11.4 퀘스트 시스템
- 11.4.1 퀘스트 데이터
- 11.4.2 퀘스트 관리자
- 11.4.3 퀘스트 아이템
- 11.5 NPC
- 11.5.1 NPC 데이터
- 11.5.2 NPC 게임 오브젝트 구성
- 11.5.3 NPCStateBase 스크립트 추가
- 11.5.4 NPC 스테이트 관리자 추가
- 11.5.5 대기 스테이트 및 대화 스테이트 구현
- 11.5.6 NPC 스테이트 컴포넌트 구성
- 11.5.7 NPC 애니메이션 구성
- 11.5.8 NPC 애니메이션 컨트롤러 추가
- 11.5.9 NPC 캐릭터 추가
- 11.6 퀘스트 아이템 조정
- 11.6.1 무기 획득 퀘스트 동작을 위한 조정
- 11.6.2 먹개비 몬스터 처치 퀘스트 아이템 추가
- 11.7 퀘스트 UI
- 11.7.1 퀘스트 버튼 UI 배치
- 11.7.2 퀘스트 창 UI 배치
- 11.7.3 퀘스트 목록 UI
- 11.7.4 퀘스트 목록 UI 기능 구현
- 11.7.5 퀘스트 창 UI 기능 구현
- 11.8 정리
- 12장. 레벨 시스템
- 12.1 개요
- 12.2 레벨 시스템 구축
- 12.2.1 플레이어 레벨 관리자 구축 및 UI 업데이트
- 12.2.2 퀘스트 완료 및 몬스터 처치 시 경험치 획득 기능 추가
- 12.3 정리
- 13장. 보스 몬스터 제작
- 13.1 개요
- 13.2 보스 몬스터 제작
- 13.2.1 보스 몬스터 데이터
- 13.2.2 보스 몬스터 게임 오브젝트 구성
- 13.3.1 보스 몬스터 애니메이션 스테이트 머신 구성
- 13.3 보스 몬스터 애니메이션 구성
- 13.4 보스 몬스터 유한 상태 기계 구성 1
- 13.4.1 GrenadierStateBase 스크립트 추가
- 13.4.2 GrenadierStateManager 스크립트 구현
- 13.4.3 GrenadierIdleState 스크립트 추가
- 13.5 보스 몬스터 애니메이션 컨트롤러 구현
- 13.5.1 보스 몬스터 애니메이션 컨트롤러 추가
- 13.6 보스 몬스터 유한 상태 기계 구성 2
- 13.6.1 GrenadierRotateState 스크립트 추가
- 13.6.2 GrenadierAttackState 스크립트 추가
- 13.6.3 GrenadierDeadState 스크립트 추가
- 13.6.4 보스 몬스터의 유한 상태 기계 컴포넌트 구성
- 13.7 보스 몬스터 공격 기능 추가
- 13.7.1 근접 공격 구현
- 13.7.2 광역(범위) 공격 구현
- 13.8 보스 몬스터 대미지 처리 기능 추가
- 13.8.1 Damageable 컴포넌트 추가 및 설정
- 13.8.2 HPController 컴포넌트 추가 및 설정
- 13.9 피격 효과 추가
- 13.9.1 피격 애니메이션 재생
- 13.9.2 피격 사운드 효과 재생
- 13.9.3 피격 파티클 및 머티리얼 효과 재생
- 13.9.4 피격 시 플레이어를 바라보기
- 13.10 보스 몬스터 완성
- 13.10.1 체력 바 추가
- 13.10.2 보스 몬스터 죽음 연출
- 13.11 최종 퀘스트 추가
- 13.11.1 최종 퀘스트
- 13.12 정리
- 14장. 스테이지와 게임의 완성
- 14.1 개요
- 14.2 스테이지 배치
- 14.2.1 맵 및 플레이어 배치
- 14.2.2 몬스터 생성 위치 조정
- 14.2.3 먹개비 몬스터 테스트 모드 해제
- 14.3 게임 관리자 시스템 구축
- 14.3.1 배경 음악 재생 기능 추가
- 14.3.2 게임 관리자 추가
- 14.3.3 게임 시작 처리
- 14.3.4 게임 메뉴 UI 제작
- 14.3.5 게임 종료 처리
- 14.3.6 게임 클리어 처리
- 14.4 정리
- 15장. 게임 시작 씬 및 빌드
- 15.1 개요
- 15.2 게임 시작 씬 제작
- 15.2.1 게임 메뉴 UI 배치
- 15.2.2 게임씬 로딩 UI 배치
- 15.2.3 게임 메뉴 UI 기능 구현
- 15.2.4 게임씬 로드 기능 구현
- 15.3 윈도우 빌드
- 15.3.1 빌드 설정
- 15.3.2 빌드
- 15.3.3 테스트 및 포스트모텀
- 15.4 정리


