반응형

 

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다!

이번에는 언리얼 엔진에서 컴파일 에러가 발생했을 때 나오는 에러 로그의 한글이 깨져보이는 문제를 해결하는 방법을 알아봅시다.

 

사용 엔진 버전 : 4.26

 

타임라인

0:00 인트로

0:13 에디터에서 컴파일 에러 로그가 깨지는 문제

1:09 해결책 1

2:07 해결책 2

3:49 아웃트로

반응형
  1. 뒷반 2021.06.17 14:06 신고

    그는 신인가?

반응형

 

언리얼 스크립트에서 한글을 사용했을 때 한글이 깨지는 문제를 해결하는 방법을 알아봅시다.

 

타임라인

0:00 인트로

0:13 한글 깨짐 문제와 해결법

2:03 아웃트로

반응형
반응형

 

언리얼 엔진에서 C++ 프로젝트에서는 한글 경로를 멀리 하시고 영어나 쓰시는게 옳습니다.

 

사용 엔진 버전 : 4.26

 

타임라인

0:00 인트로

0:19 프로그래밍에서는 한글 경로를 멀리 하십시오 휴먼

1:36 아웃트로

반응형
반응형

 

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다! 이번 영상에서는 메타휴먼 크리에이터에 대해서 알아봅시다!

반응형
반응형

 

언리얼 개발자라면 놓쳐서는 안될 마켓플레이스 이 달의 무료 콘텐츠에 대해서 알아봅시다!

 

타임라인

0:00 언리얼 마켓플레이스 개요

0:52 마켓플레이스 무료 콘텐츠

1:15 언리얼 마켓플레이스 무표 콘텐츠 검색

2:23 무료 콘텐츠 받기

반응형
반응형

 

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다! 2021년 03월에 공개된 언리얼 마켓플레이스 이 달의 무료 콘텐츠를 리뷰해보겠습니다!

반응형
반응형

Physics

-

디스트럭터블 메시 사용하기(기초)

 

작성기준버전 :: 4.22.3

 

게임에서 배경 오브젝트를 상호작용하여 파괴하는 기능은 사실 그렇게 쓸모있어 보이지는 않지만, 플레이어에게 자신이 이 게임 속의 세상과 상호작용을 하고 있다는 체감을 더 강하게 느끼게 만들어준다.

 

 

이렇게 파괴가능한 오브젝트를 만드는 전통적인 방법은 오브젝트를 모델링 할 때, 온전한 모델 하나와 잘게 쪼개진 모델들을 만들어서 우선 온전한 오브젝트를 배치해 두었다가 상호작용이 발생하면 잘게 쪼개진 모델들로 바꿔치기해서 각각의 조각들에 물리효과를 주는 것이었다. 이러한 방법은 작업자의 역량에 따라서 더 자연스럽게 오브젝트를 쪼갤 수 있지만 작업 시간이 많이 소요된다는 단점을 가지고 있었다.

 

 

디스트럭터블 메시(Destructable Mesh)

 

메시를 쪼개는 작업 시간을 줄이기 위해서 온전한 메시를 자동으로 쪼개주는 기능이 바로 언리얼 엔진 4의 디스트럭터블 메시(Destructable Mesh)이다. 참고로 이 기능은 초기 버전의 언리얼 엔진 4에서는 기본적으로 활성화 되어 있는 상태였지만 최근의 버전에서는 기본적으로 비활성화되어 있으며 해당 기능을 사용하기 위해서는 플러그인을 활성화 시켜야 한다.

 

 

플러그인 활성화

 

플러그인을 활성화시키기 위해서는 상단의 메뉴에서 [편집>플러그인] 항목을 선택한다.

 

 

플러그인 창이 열리면 검색창에 "APEX"를 입력하면 Apex Destruction 플러그인이 검색된다. 활성화 체크박스를 체크하고 지금 재시작 버튼을 누르면 언리얼 엔진이 재시작되면서 플러그인이 활성화 된다.

 

 

 

 

 

디스트럭터블 메시 생성 및 설정

 

플러그인이 활성화 되었으면 콘텐츠 브라우저 패널에서 디스트럭터블 메시를 생성하고자 하는 스태틱 메시를 찾아서 우클릭한 뒤 [디스트럭터블 메시 생성] 항목을 선택한다.

 

 

그렇게 하면 선택한 스태틱 메시에 대한 디스트럭터블 메시가 생성되고, 생성된 디스트럭터블 메시를 편집할 수 있는 에디터 창이 열린다.

 

 

열린 에디터 창에서 [프랙처 메시] 버튼을 누르면 플러그인이 자동으로 스태틱 메시를 쪼개서 파편을 만들어 준다.

 

 

기본적으로 에디터의 우측에 있는 디스트럭터블 세팅 패널과 프랙처 세팅 패널을 통해서 디스트럭터블 메시를 설정할 수 있다.

 

 

프랙처 세팅 패널의 Voronoi 카테고리의 프로퍼티인 Cell Site Count 값을 조절하여 메시가 쪼개지는 갯수를 설정할 수 있다.

 

 

 

 

간단한 사용법

 

게임 내에서 실제로 이 디스트럭터블 메시가 부숴지는 모습을 확인해보자.

 

 

우선 디스트럭터블 세팅 패널에서 Enable Impact Damage를 true로 세팅하고 저장한 뒤 디스트럭터블 메시 에디터를 닫는다.

 

 

생성한 디스트럭터블 메시를 레벨에 배치한다.

 

 

배치된 디스트럭터블 메시를 선택하고 Pysics 카테고리에서 Simulate Physics 프로퍼티를 체크한다.

 

 

 

그 다음 플레이 버튼을 누르고 캐릭터를 움직여서 배치된 의자에 부딪히면 의자가 산산조각 나서 부숴지는 것을 확인할 수 있다.

반응형
반응형

비헤이비어 트리(Behavior Tree)


작성 기준 버전 :: 4.21.1


AI는 잠입 액션 게임에서는 수색자가 플레이어를 찾기 위해서 주변을 수색하고, 슈팅 게임에서는 총알이 떨어지면 탄창을 갈고 체력이 부족해지면 회복 아이템을 사용하고 사격을 받으면 엄폐물 뒤로 숨는 등의 게임의 난이도를 적절하게 조절하고 게임의 생명력을 불어넣는 역할을 한다.


못 만든 게임은 여러 가지 요소가 플레이어를 거슬리게 만들지만 멍청하게 구는 AI 역시 게임의 재미를 떨어뜨리는 아주 중요한 요소이다. 낮은 난이도라고 AI가 플레이어가 눈 앞에 있어도 멍청하게 서있거나 수 초가 지나서야 반응하거나, 높은 난이도라고 플레이어가 대응할 시간도 없이 죽여버리는 것은 AI를 통한 난이도 조절에 완전히 실패한 경우라고 볼 수 있다. AI를 통한 난이도 조절을 제대로 하기 위해서는 무작정 반응 속도가 빠른 것이 아니라, 플레이어의 심리를 교묘하게 찌르는 전략적인 움직임을 AI가 할 수 있도록 만들어야 한다.


앞에서 사설이 길었지만, 이러한 AI를 제작하기 위한 방법으로는 여러 가지가 있다. 간단한 방법으로는 상태 머신(State Machine)부터 어려운 방법으로는 머신 러닝(Machine Learning)까지 말이다. 이러한 여러 가지 기법 중에서 언리얼 엔진은 비헤이비어 트리(Behavior Tree)라는 방식으로 AI 기능을 제공한다.


 

언리얼 엔진에서 제공하는 비헤이비어 트리는 블랙보드(BlackBoard)와 비헤이비어 트리(Behavior Tree), 이 두 가지 유형의 에셋의 조합으로 이루어진다.



블랙보드는 AI의 기억 저장소로 AI가 판단을 내리는데 필요한 데이터들을 저장하는 역할을 하고, 비헤이비어 트리는 블랙보드가 가진 데이터를 토대로 의사결정을 내리고 이를 실행으로 옮기는 역할을 한다.



비헤이비어 트리 노드의 종류


비헤이비터 트리의 노드는 루트(Root), 컴포짓(Composite), 데코레이터(Decorator), 서비스(Service), 태스크(Task). 이렇게 다섯 가지 종류가 있다.



루트(Root)


 

루트 노드는 비헤이비어 트리의 시작점이며, 아래쪽으로 향하는 단 하나의 연결만을 가질 수 있고, 데코레이터나 서비스를 덧붙일 수 없다.

 

 

루트 노드 자체에는 별다른 프로퍼티가 없지만, 루트 노드를 선택하면 디테일 패널에서 이 비헤이비어 트리에서 사용할 블랙보드 애셋을 설정할 수 있다.



컴포짓(Composite)


컴포짓 노드는 해당 분기가 실행되는 기본 규칙을 정의한다. 데코레이터를 통해서 분기로 들어가는 조건을 변경하거나, 중간에 실행이 취소되도록 만들거나, 서비스를 덧붙여서 컴포짓 노드의 자손이 실행되는 동안 서비스가 작동되도록 만들 수도 있다.


컴포짓 노드는 셀렉터(Selector), 시퀀스(Sequence), 심플 페러렐(Simple Parallel). 세 가지 종류가 있다.


셀렉터(Selector)


 

셀렉터 노드는 선택기 노드라고도 하며, 자손 노드를 왼쪽에서 오른쪽 순서로 실행하며, 자손 노드 중 하나가 실행에 성공하면 자손의 실행을 멈춘다. 셀렉터의 자손이 실행에 성공하면 셀렉터의 작동은 성공한 것이 되고, 모든 자손의 실행이 실패하면 셀렉터의 작동은 실패한 것이 된다.


시퀀스(Sequence)


 

시퀀스 노드는 자손 노드를 왼쪽에서 오른쪽 순서로 실행하며, 자손 중 하나가 실패하면 자손의 실행을 멈춘다. 자손 노드가 실행에 실패하면 시퀀스는 실패하며, 모든 자손 노드가 실행에 성공해야 시퀀스가 성공한다.


심플 페러렐(Simple Parallel)


 

심플 페러렐 노드는 단순 병렬 노드라고도 하며, 전체 노드 트리와 동시에 하나의 태스크를 실행할 수 있다. 예를 들어, 적을 향해 이동하면서 사격한다던지 하는 행동을 할 수 있게 해준다.


Finish Mode 설정을 통해서 메인 테스크가 완료되면, 서브 트리를 중단시키고 즉시(Immediate) 노드를 완료시킬지, 아니면 서브 트리를 완료할 때까지 지연(Delayed)시킬지를 설정할 수 있다.



데코레이터(Decorator)


 

데코레이터는 다른 비헤이비어 시스템에서 조건절이라고도 부르는 것으로, 컴포짓이나 태스크에 붙여서 분기나 노드가 실행될 것인지를 정의한다.



데코레이터의 종류는 기본적으로 16가지가 있고 필요하다면 비헤이비어 트리 에디터의 상단 메뉴 바에서 새 데코레이터 버튼을 클릭해서 커스텀 데코레이터를 추가할 수 있다.


기본적인 데코레이터의 종류는 언리얼 엔진 문서 중 비헤이비어 트리 참고서 : 데코레이터에서 확인할 수 있다.



서비스(Service)




서비스는 컴포짓 노드에 분기가 실행되는 동안 정해진 빈도에 맞춰서 실행된다. 보통 검사를 하고 그 검사를 바탕으로 블랙보드의 내용을 업데이트하는데 사용된다.


 

비헤이비어 트리 에디터의 상단 메뉴 바에서 새 서비스 버튼을 클릭해서 커스텀 서비스를 추가할 수 있다. 기본적인 서비스 노드의 종류로는 Default Focus와 Run EQS가 있다.



태스크(Task)


 

태스크는 AI의 이동이나 블랙보드의 값 조정과 같은 작업을 하는 노드로 이 노드에도 데코레이터가 붙을 수 있다.


태스크 노드의 종류에는 7가지가 있으며 그 내용은 언리얼 엔진 문서의 비헤이비어 트리 노드 참고서 : 태스크 문서에서 볼 수 있다.


 

비헤이비어 트리 에디터의 상단 메뉴 바에서 새 서비스 버튼을 클릭해서 커스텀 태스크를 추가할 수 있다.

반응형

+ Recent posts