본문 바로가기

블루프린팅/9. 인공지능

(9)          글쓰기    
[언리얼매뉴얼] 비헤이비어 트리 퀵 스타트 가이드 https://docs.unrealengine.com/5.2/ko/behavior-tree-in-unreal-engine---quick-start-guide/ 이 예제는 언리얼 매뉴얼 입니다. 처음에 교재가 여려워 검색하다 비슷한 예제가 있어 캡쳐해 봤습니다. 따라 해봤는데 안움직이는데 아직 이유는 모르겠습니다. ㅠㅠ 이 가이드에서는 순찰하거나 플레이어를 추격하는 AI 캐릭터를 비헤이비어 트리로 구성하는 방법을 알아봅니다. 비헤이비어 트리 퀵 스타트 가이드 에서는 플레이어를 보고 반응하여 추격하는 적 AI를 구성하는 방법을 학습합니다. 아래 예시 영상에서 볼 수 있듯이, 플레이어가 시야에서 사라지면 AI는 몇 초 후(원하는 대로 조정 가능) 추격을 포기하고 플레이어를 다시 발견할 때까지 주변을 랜덤하게 ..
[09인공지능] 비헤이비어 트리에 조건추가 적에게 플레이어를 추적하게 하는 탯그크에 접속할 다른 시퀀스와 노드와 두개의 시퀀스노드중 하나를 실행하는 셀렉터 노드가 필요하다. 새로운 태스크는 적이 플레이어를 볼 때문 실행되도록 해야 한다. 이를 위해 데코레이터를 추가한다. 데코레이터는 노드 상단에 부탁돼 작업을 수행하기 전에 충족해야 하는 조건을 제공한다. 1. BT_EnemyBehavior에셋을 연다. 2. Root노드 중앙을 우클린 모든 핀 링크 끊기를 선택한다. ALT클릭으로 끊어도 된다. 3. Root에서 Selector노드를 만든다. 4. 셀렉터노드에서 기존의 MoveToPatrol노드를 연결한다. 5. 셀렉터 노드에서 왼쪽아래 시퀀스노드를 추가하고 AttackPlayer로 이름을 변경한다. 6. 이제 데코레이터를 사용 적이 플레이어를 볼..
[09인공지능] AI가 플레이어를 추적하게 하기 폰 감지라는 이름의 컴포넌트는 적에게 시각과 청각을 추가하는데 사용된다. 이 컴포넌트를 사용해 비헤이비어 트리를 확장해서 적이 플레이어에 위협을 가하도록 하겠다. 폰 감지로 적에게 시야를 주기 적에게 플레이어를 탐지할 수 있는 기능을 부여하려면, 폰감지 컴포넌트를 BP_EnemyController에 추가하고 적이 플레이어를 볼 때 플레이어캐릭터 참조를 BB_EnemyBlackboard에 저작해야 한다. 폰감지 컴포넌트를 사용하는 순서는 다음과 같다. 1. BP_EnemyController 블루프린트를 연다. 2. 내 블루프린트 패널에서 변수를 만든다. 이름을 PlayerKeyName으로 지정하고 변수 타입은 name으로 한다. 컴파일후 디폴트값을 Player character로 세팅한다. 3. 컴포넌트 ..
[09인공지능] AI 컨트롤러에서의 비헤이비어 트리 실행 AIController클래스에는 Run Behavior Tree라는 기능이 있다. 비헤이비어 트리 에셋을 파라미터로 받는다. BT_EnmeyBehavior Behavior Tree를 실행하기 위한 부모 클래스로 AIController를 사용하여 BP_EnemyController블루프린트를 만들었다. 비헤이비어 트리를 실행하는 절차는 다음과 같다. 1. BP_EnemyController 블루프린트를 연다. 2. 이벤트그래프에서 BeginPlay 이벤트의 흰색 실행핀에서와이어를 끌어 실행 Run Behavior Tree를 추가한다. 3. BTAsset의 입력 파라미터로 BT_EnemyBehavior를 세팅한다. 4. 블루프린트를 컴파일해서 저장한다. 비헤이비어 트리로 인공지능이 걷도록 가르치기 비헤이비어트리..
[09.인공지능] 내비게이션(탐색) 행동 만들기 적의 첫 번째 목표는 맵에 만든 지점 사이를 이동시키는 것이다. 이를 달성하기 위해, 적이 탐색할 지점을 맵에 만든 다음, 적이 순환적으로 각 지점으로 이동하도록 하는 행동을 세팅한다. 패트롤(순찰)지점 세팅 인공지능이 순찰할 경로를 만드는 것부터 시작한다. 트리거 스피어는 오버랩이벤트를 생성하고 게임에 숨겨지기 때문에 순찰 지점을 나타내기 위해 사용할 것이다. BP_EnemyCharacter의 각 인스턴스는 두 개의 순찰 지점 사이를 탐색할 수 있기 때문에 우리는 적어도 두 개의 순찰 지점이 필요하다. 다음 단계에 따라 순찰 지점을 작성한다. 1. 레벨 에디터에서 툴바에 있는 +만들기 버튼을 클릭후 Basic>트리거 스피어를 클릭한다. 바닥 아무곳에나 배치한다. 2. 디테일 패널에서 Sphere Tri..
[09인공지능] BP_EnemyChracter블루프린트 세팅 1. BP_EnemyCharacter 블루프린트를 연다 2. 툴바에서 클래스 디폴트 버튼을 클릭한다. 3. 디테일패널에서 pawn카테고리를 찾아 마지막 AI컨트롤러 클래스에 대한 드롭다운리스트에서 BP_EnemyController클래스로 변경한다. 4. 컴포넌트 패널에서 메시를 클릭한다. 그 다음 디테일 패널에서 머터리얼 카테고리를 찾고 머터리얼의 엘리먼트 0을 우리가 만든 M_TargetRed 머티리얼로 변경한다. 새로프로젝트를 만든분들은 M_TargetRed머티리얼을 새로 만들던지 적용하시던지. 전 컴포넌트 Mesh를 선택해 디테일패널 Mesh카테고리에서 SKM_Manny_Simple로 변경해서 모양을 바꾸어 주었다. 5. 컴포넌트 패널에서 Capsule Component(CollisionCylind..
[CH09.인공지능] NavMesh에셋, AI에셋 생성 NavMesh에셋으로 이동 가능한 레벨 만들기 적 인공지능을 만들기 위해 인공지능이 탐색에 사용할 네비게이션메시라는 맵을 NavMesh라는 에셋으로 만듭니다 1. 레벨에디터에서 툴바에 있는 만들기 버튼을 클릭합니다. NavMesh Bonus Volume을 클릭합니다. 2. NavMesh Bonus Volume을 이동가능한 수준의 걸어갈 수 있는 공간이 포함될때까지 이동및 크기 조정을 해야합니다. 디테일 패널에서 위치 X=-316, Y=2116, Z=460및 스케일 (20,44,7)로 설정 전 다음과 같이 설정했습니다. 레벨에디터에서 P를 누르면NavMesh가 올바르게 배치되었는지 확인할 수 있습니다. AI 에셋 생성 우리는 적의 행동을 관리하기 위해 함께 동작하는 네 가지 타입의 에셋을 만들어야 합니다...
[09인공지능] 플레이 영역 확장 플레이 영역 확장 1. 현재 플레이어 영역을 세로축으로 2배 늘려보겠습니다. 바닥 빈곳을 클릭하면 노란줄로 선택됩니다. outliner를 보면 이름이 SM_CUBE입니다. 2. ALT+ 좌표 Y축을 클릭 드래그 하면 복제가 됩니다. 좌표가 안나타나면 위쪽 툴바의 위치를 선택해줍니다. 3. 파일메뉴 밑 Perspective를 Back으로 바꿔 Y축을 잡고 딱 마쳐주고 다시 Perspective로 돌아 옵니다. 4. 복사한 바닥의 Y포지션이 약 3500정도입니다. 5. 교재에서는 Outliner의 Lightmass Importance Volume을 찾아 디테일 패널에서 스케일 속석이 Lock을 해제하고 스케일 Y를 2로 세팅후 플레이 영역이 될때까지 Y축으로 이동하라는데 여기는 없네요 확장한 부분의 조명이 ..
[3부]게임의 향상 [09] 인공지능으로 똑똑한 적 만들기 9장에서는 적을 만들것이다. 이 과정에서 공부할 주제는 탐색할 적 액터 세팅 탐색 동작 만들기 인공지능이 플레이어를 추적하게 하는것 적의 탐색을 레벨에서 처리하는 비헤이비어 트리를 만들고 적들이 그들의 시야에 있을때 플레이어를 추적하게 할 수 있다. >> 적액터가 탐색하도록 세팅 현재 타깃은 움직이는 실린더뿐이다 에픽 마켓플레이스에서 에셋패키지를 가져와 플레이 영역을 확장하고 내비게이션 메시를 사용 적이 사용하는 AI에셋을 생성해보겠다. 마케플레이스에서 가져오기 먼저 언리얼 에디터에서 벗어나 Epic Games Laucher에 초점을 맞추겠다. 일단 프로젝트를 닫는다. 1. Epic Games Launcher를 열고 창 왼쪽 Unreal Engine메뉴를 선택 2. 맨 위 마켓플레이스 탭을 클릭후 Ani..