Comming Soon

유니티를 활용한 RPG 게임 개발 [유니티 엔진 개발자가 알려주는]

  • 지은이장세윤
  • ISBN : 9791161757230
  • 50,000원
  • 2025년 12월 10일 펴냄
  • 페이퍼백 | 1,028쪽 | 188*235mm
  • 시리즈 : 게임 개발 프로그래밍

책 소개

요약

이 책은 유니티로 RPG 게임을 제작하려는 개발 지망생과 개발자를 위한 내용을 담고 있다. 캐릭터 이동, 전투 시스템, 몬스터 AI, 인벤토리, 퀘스트 등 RPG 게임의 핵심 요소를 체계적으로 다루며, 유니티 컴포넌트를 기반으로 유한 상태 기계를 구현하는 방법을 소개한다. Scriptable Object를 활용해 플레이어, 몬스터, 퀘스트, NPC 데이터 등 게임 데이터를 효율적으로 관리하는 방법도 다룬다. 기초부터 고급 기능까지 단계별로 설명하며, 실무에서 마주할 문제와 해결 방법을 제시한다.

이 책에서 다루는 내용

◆ 플레이어 이동, 점프, 공격 등 기본 캐릭터 기능 구현 과정을 유한 상태 기계를 활용해 단계적으로 설명
◆ 몬스터 제작 및 추격, 공격 기능을 통해 적 AI 동작 구현
◆ 전투 및 대미지 시스템 구현을 통해 RPG 게임의 핵심 시스템 구축
◆ Scriptable Object를 활용한 플레이어, 몬스터, 퀘스트, NPC 데이터 등 게임 데이터의 효율적 관리
◆ 사용자 인터페이스UI와 인벤토리 시스템 구축
◆ 퀘스트 시스템과 NPC 설정으로 스토리와 상호작용 요소 추가
◆ 캐릭터 레벨 시스템을 통한 보상 시스템 구축
◆ 보스 몬스터 제작
◆ 게임 시작 씬과 빌드 과정을 통해 최종 게임 배포 준비

이 책의 대상 독자

◆ Unity를 처음 접하거나 RPG 게임 개발에 입문하려는 학생
◆ RPG 게임의 구조와 구현 과정을 체계적으로 배우고 싶은 개발자
◆ 게임 개발 실무 경험을 쌓고자 하는 개발자
◆ Unity를 활용한 캐릭터 시스템, 전투 시스템, UI 등 다양한 기능 구현을 익히려는 독자
◆ Scriptable Object를 활용해 게임 데이터를 효율적으로 관리하는 방법을 배우려는 개발자

저자/역자 소개

지은이의 말

지난 10여 년간 게임 개발 지망생들에게 유니티 활용법을 강의해오며 많은 학생들과 소통해왔다. 수업을 통해 학생들이 성장하고 발전하는 모습을 보며 큰 보람을 느꼈다. 그럼에도 책을 쓰려는 마음을 갖지 못했는데, 최근 진행한 게임 개발 수업에서 학생들로부터 여러 차례 좋은 피드백을 받은 것이 책을 집필하는 계기가 되었다.
이 책은 게임을 개발하고자 하는 학생 및 유니티를 접하지 못한 개발자들에게 실질적인 도움을 주고자 하는 마음에서 시작되었다. 게임 개발은 복잡한 구조와 다양한 시스템을 필요로 한다. 따라서 초보자들에게는 도전적인 과제가 될 수 있다. 이 책은 그러한 과정에서 발생할 수 있는 여러 어려움을 하나씩 해결하는 과정을 보여주며 게임 개발의 즐거움을 독자분에게 전달하고자 노력하였다.
이제는 게임 회사들만 게임을 제작하는 것이 아니라 개인 및 소규모 팀들도 재미있는 게임을 제작하는 시대가 되었다. 높았던 게임 개발의 진입 장법을 낮추는데 유니티가 크게 기여했다고 생각한다. 이런 시기와 맞물려 게임을 개발하고자 하는 모든 분들에게 이 책이 조금이나마 도움이 되었으면 좋겠다.
유니티는 다양한 분야에서 콘텐츠 개발의 핵심 도구로 자리 잡았다. 게임뿐만 아니라 다양한 프로젝트에 유니티가 활용되고 있지만, 여전히 게임 개발을 할 때 빛을 발한다. 이 책을 통해 유니티의 강력한 기능과 이를 활용하는 방법을 습득할 수 있기를 바란다.
이 책은 유니티 엔진을 활용해 RPG 게임을 제작하는 과정을 다룬다. 기초적인 시스템 설계와 기본적인 게임 메커니즘을 구축하는 방법을 시작으로, 캐릭터 및 몬스터 제작, 전투 시스템, 아이템 관리, 다이얼로그 및 퀘스트 등 고급 주제도 다룬다. 각 단계마다 게임을 개발하는 과정에서 자주 직면하는 문제와 그 해결 방법을 함께 제시한다. 독자들은 이 책을 통해 실무적인 경험과 노하우를 자연스럽게 습득할 수 있을 것이다.

지은이 소개

장세윤

상용 게임 엔진 회사에서 기술지원, 엔진 기술 홍보, 기술 문서 번역 등의 업무를 진행했다. 프리랜서로 전향한 이후, 엔씨소프트, 넥슨, 네오플, 골프존, 현대자동차 등 다양한 기업 및 대학교, 게임 교육 학원에서 유니티 엔진과 언리얼 엔진을 활용한 강의를 진행했다.
현재는 프리랜서 강사, 개발자, 기술 서적 번역가, 저자로 활동하며 게임 개발과 엔진 활용의 지식을 널리 알리고 있다.

목차

목차
  • 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 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안