SlideShare a Scribd company logo
1 of 19
Download to read offline
The Sight
in a mirror
언리얼엔진4 게임 기술 문서
게임 소개
레벨 구성
캐릭터
맵
UI
개발도구
INDEX
게임
소개
'The Sight in a mirror' 는 아이템을 모아서 괴물의 집을 탈출하는 게임입니다.
늦은 밤, 길을 잃은 당신은 불빛에 이끌려 어떤 집을 발견합니다.
집에 들어가자 문이 잠기고 사람이 아닌 무언가에게 쫓기게 됩니다.
탈출하기 위한 카드 키를 찾기 위해 방을 유심히 살펴야 합니다.
거울에 비치는 괴물의 시야를 이용해서 괴물의 위치를 파악하세요
괴물은 당신의 위치를 점점 정확하게 찾아냅니다.
만약 위험하다고 생각되면 빠르게 자리를 피하세요
스팀 페이지 https://store.steampowered.com/app/1310620/The_Sight_in_a_mirror/?l=koreana
제작 블로그 https://y50814.tistory.com/
레벨
구성
Title
InGame2 InGame3InGame1
End
Title 에서 랜덤으로 3개의 레벨 중 하나로 이동합니다.
InGame 레벨은 각각 아이템 배치가 다르기 때문에
플레이 할 때마다 아이템의 위치를 다시 찾아야 합니다.
게임을 클리어하면 End 레벨로 이동했다가 몇 초 뒤
자동으로 Title 레벨로 돌아갑니다.
캐릭터
<플레이어> <몬스터>
게임 내에서 캐릭터는 플레이어와 몬스터가
존재합니다.
플레이어는 주어진 기능으로 몬스터를 피하
고 숨겨진 아이템을 찾으면서 탈출 방법을 찾
아야합니다.
몬스터는 주어진 AI로 플레이어를 찾아 게임
오버 시킵니다.
캐릭터들의 애니메이션은 Animinstance 클
래스와 애니메이션 블루프린트로 만들었습니
다.
캐릭터
- 플레이어
1인칭 눈높이에 닿는 아이템을 획득할 수 있고 서랍과 옷장을 여
는 상호작용도 가능합니다.
-> 카메라 앞에 충돌체를 붙여 충돌되는 사물을 체크하도록 했
습니다. 충돌된 액터가 아이템일 경우 F키를 누르면 해당 아이템
을 제거하고 인벤토리에 추가합니다.
손전등, 거울, 열쇠 등 아이템은 평소 잠겨있다가 해당 아이템을 획득하면 해금되
어 사용 가능하도록 했습니다.
-> 획득 전에는 bool변수로 아이템 사용 함수를 불가능 하도록 하고 visibility 설
정으로 눈에도 안보이도록 했습니다.
주변에 몬스터가 있으면 화면이 왜곡되고 노이즈 소리가 들립니다.
-> 충돌체에 몬스터가 Overlap되면 카메라 PostProcess의 비
네팅과 그레인을 이용해서 캐릭터의 긴장도를 표현했습니다.
Overlap이 끝나면 노이즈 소리를 끄고 비네팅과 그레인이 원상복
귀 되도록 했습니다.
캐릭터
- 몬스터
몬스터의 시야는 맵에 있는 모든 거울을 통해서 확인이 가능
합니다.
-> 랜더 타겟을 이용한 마테리얼로 몬스터의 카메라 화면을
확인 가능하게 만들었습니다.
Depth를 이용한 마테리얼로 몬스터만의 독특한 시야를 만들
어서 몬스터가 어두운 방에 가더라도 밝기에 상관없이 내부
구조를 파악할 수 있도록 만들었습니다.
몬스터의 이동 경로는 플레이어가 어느 곳에 있는지, 얼마나
오래 있는지에 따라 달라지며 한 곳에 오랫동안 있는다면 몬
스터의 탐색이 더 세밀해 집니다.
-> Patrol Point라는 Actor로 좌표를 만들고 그 액터들을
가리키는 Patrol Point List를 만들어서 경로를 만들었습니다.
몬스터는 가지고 있는 Patrol Point List 포인터를 상황에
따라 바꾸며 Patrol Point의 좌표를 찾아갑니다.
Patrol Point에는 bool 변수가 True면 왼쪽으로 90도, 오
른쪽으로 180도 회전하며 탐색합니다.
캐릭터
- 몬스터
몬스터가 플레이어를 따라잡게 되면 플레이어는 움직일 수 없게 되며 자
동으로 몬스터의 얼굴을 바라보게 됩니다. 그 후 몬스터는 플레이어에게
도끼를 내려찍고 게임오버 시킵니다.
-> 몬스터와 플레이어가 일정 거리 이하가 되면 플레이어의 키입력이 안
되도록 하고 자동으로 Rotation을 조절하여 몬스터의 얼굴을 바라보게
했습니다. 그 후 몬스터는 공격모션을 하고 게임오버 UI가 표시됩니다.
플레이어의 진행도에 따라 몬스터는 건물 내부의 모든 거울을 깨버립니
다.
-> 빨간색 키 카드를 얻게 되면 몬스터가 거울 깨는 것을 최우선으로 하
도록 했습니다. 모든 거울을 깨고 나면 몬스터의 이동속도가 그 전 보다
빨라집니다.
캐릭터
- 몬스터AI
몬스터 AI는 비헤이비어트리로 구현 했으며 크게 추적모드와 탐색모드로 나뉩니다.
-> bool타입 Trace변수로 나뉩니다.
추적모드 탐색모드
캐릭터
- 몬스터AI
Trace가 false일 때 들어오게 되는 노드입니다.
DetectSight는 전방 120도 부채꼴로 회전하며 플레이어를 인식하고 벽을 통과
하지 못합니다. DetectTrace는 몬스터 중심으로 작은 구를 만들며 벽을 통과해서
인식합니다.
두 가지의 BTService로 몬스터는 여러 각도로 플레이어를 찾을 수 있으며 플레
이어가 너무 가까이 있다면 DetectSight에 걸리지 않더라도 DetectTrace로 걸리
게 됩니다.
앞의 Detect에 플레이어가 인식이 된다면
들어오는 노드입니다. 추적모드로 변경합니다.
Detect에 걸리는 것이 없을 때 들어
오는 노드입니다. PatrolPoint를 따라
이동합니다.
PatrolPoint에 bool변수가 true일 때 들어
노는 노드입니다. 왼쪽으로 90도, 오른쪽으
로 180도 회전하며 탐색합니다.
캐릭터
- 몬스터AI
Trace가 true일 때 들어오게 되는 노드입니다.
DetectTrace는 몬스터 중심으로 커다란 구를 만들며 벽을 통과해서 인식합니다.
인식이 됐다면 숨어도 몬스터가 찾아내므로 플레이어는 멀리 달아나야 합니다.
Detect에 걸렸을 때 들어오는 노
드입니다. 인식된 플레이어를 추격
합니다.
Detect에 걸리는 것이 없을 때 들어오는 노드입니다.
플레이어가 마지막으로 인식됐던 좌표까지 이동한 다음 왼쪽으
로 90도, 오른쪽으로 180도 회전한 뒤, 인식되는 것이 없다면 탐
색모드로 변경합니다.
맵
- 외부
<시작 위치 숲>
타이틀 화면에서 인게임으로 넘어가게 되면 처음으로 보이는 것은 검은 숲입니다.
길을 따라서 가게 되면 간단한 동작을 알려주는 가이드가 차례대로 표시됐다가 사라집니다.
덕분에 플레이어는 해당 기능들을 숙지한 상태에서 건물 내부로 들어가게 됩니다.
-> 플레이어가 보기 편한 위치에 Material Billboard를 배치하고 주변 충돌체에 Overlap
되는 동안만 표시합니다.
맵
- 내부
<건물 내부 구조>
<일반적인 방 구조>
맵
- 내부
18개의 방이 있으며 대부분의 문은 잠겨 있습니다.
초록, 파랑, 빨강, 검은색 자물쇠 가 걸려있고
맞는 색깔의 키 카드 를 찾으면 열 수 있습니다.
-> 문의 충돌체에 닿은 플레이
어의 Key 변수를 확인하여 부
여된 등급의 이상일 경우 자동으
로 열립니다. 등급 미만이라면
자물쇠 Material Billboard를
2초간 표시합니다.
어느 한 구역에 오래 있으면 몬스터가 점점 플레이
어의 위치를 찾아오게 됩니다.
-> 방과 복도마다 달려있는 충돌체로 플레이어가
어느 곳에 있는지, 얼마나 오래 있는지에 따라 몬스
터의 탐색 경로를 변경합니다.
맵
- 내부
옷장과 서랍은 여닫는 것이 가능
합니다.
-> 플레이어의 에임이 닿아 있을
때 F키를 누르면 해당 부분의
Location, Rotation이 조절되어
열리도록 했습니다.
Int변수로 내부에 들어갈 아이템
넘버를 입력하면 해당 아이템이 위
치해 있습니다.
랜더 타겟을 이용한 거울은 몬스터
의 시야를 보여줍니다. 진행도에
따라 몬스터가 거울을 찾아 깨버
리기도 합니다.
-> 몬스터가 거울 가까이에 접근
하면 마테리얼 교체가 되도록 했
습니다.
UI
- Title
START 버튼이 눌리면 랜덤으로 InGame 레벨이 열리게 됩니다.
EXIT 버튼은 quit 명령어로 게임을 종료하도록 만들었습니다.
UI
- InGame
에임은 평소에는 반투명하다가 아이템, 상호
작용이 가능한 가구와 겹치면 불투명하게 되
도록 만들었습니다.
인벤토리는 아이템 넘버를 가지는 이미지
슬롯을 따로 만들어 두고 만들어둔 이미지
슬롯을 UniformGridPanel로 모아서 만
들었습니다. 적혀 있는 숫자 넘버를 누르
면 눌러진 이미지 슬롯에 저장된 아이템
넘버를 확인하고 해당되는 아이템을 사용
합니다.
UI
- End
TEXT 박스를 띄운 뒤 Title 레벨로 이동하도록 만들었습니다.
개발
도구

More Related Content

What's hot

NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개Seungmo Koo
 
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템Jubok Kim
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니Yongha Kim
 
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012devCAT Studio, NEXON
 
배정섭, 쉽고 빠르게 매력적인 모션 제작하기 tip, NDC2010
배정섭, 쉽고 빠르게 매력적인 모션 제작하기 tip, NDC2010배정섭, 쉽고 빠르게 매력적인 모션 제작하기 tip, NDC2010
배정섭, 쉽고 빠르게 매력적인 모션 제작하기 tip, NDC2010devCAT Studio, NEXON
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다Lee Dustin
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
NDC 2012 이은석 - 고전게임 화이트데이 디렉터 포스트모템
NDC 2012 이은석 - 고전게임 화이트데이 디렉터 포스트모템NDC 2012 이은석 - 고전게임 화이트데이 디렉터 포스트모템
NDC 2012 이은석 - 고전게임 화이트데이 디렉터 포스트모템Eunseok Yi
 
모바일 게임 개발
모바일 게임 개발모바일 게임 개발
모바일 게임 개발hong sanghyun
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018devCAT Studio, NEXON
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기강 민우
 
이원, MMORPG 스토리텔링의 금기들, NDC2010
이원, MMORPG 스토리텔링의 금기들, NDC2010이원, MMORPG 스토리텔링의 금기들, NDC2010
이원, MMORPG 스토리텔링의 금기들, NDC2010devCAT Studio, NEXON
 
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사 NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사 Imseong Kang
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기JP Jung
 
KGDC 2001 Making of Whiteday Postmortem (revised)
KGDC 2001 Making of Whiteday Postmortem (revised)KGDC 2001 Making of Whiteday Postmortem (revised)
KGDC 2001 Making of Whiteday Postmortem (revised)Eunseok Yi
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들Jubok Kim
 

What's hot (20)

NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개
 
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니
 
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
 
배정섭, 쉽고 빠르게 매력적인 모션 제작하기 tip, NDC2010
배정섭, 쉽고 빠르게 매력적인 모션 제작하기 tip, NDC2010배정섭, 쉽고 빠르게 매력적인 모션 제작하기 tip, NDC2010
배정섭, 쉽고 빠르게 매력적인 모션 제작하기 tip, NDC2010
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
NDC 2012 이은석 - 고전게임 화이트데이 디렉터 포스트모템
NDC 2012 이은석 - 고전게임 화이트데이 디렉터 포스트모템NDC 2012 이은석 - 고전게임 화이트데이 디렉터 포스트모템
NDC 2012 이은석 - 고전게임 화이트데이 디렉터 포스트모템
 
모바일 게임 개발
모바일 게임 개발모바일 게임 개발
모바일 게임 개발
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
 
이원, MMORPG 스토리텔링의 금기들, NDC2010
이원, MMORPG 스토리텔링의 금기들, NDC2010이원, MMORPG 스토리텔링의 금기들, NDC2010
이원, MMORPG 스토리텔링의 금기들, NDC2010
 
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사 NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기
 
KGDC 2001 Making of Whiteday Postmortem (revised)
KGDC 2001 Making of Whiteday Postmortem (revised)KGDC 2001 Making of Whiteday Postmortem (revised)
KGDC 2001 Making of Whiteday Postmortem (revised)
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
 

The Sight in a mirror 게임 개발 기술문서

  • 1. The Sight in a mirror 언리얼엔진4 게임 기술 문서
  • 3. 게임 소개 'The Sight in a mirror' 는 아이템을 모아서 괴물의 집을 탈출하는 게임입니다. 늦은 밤, 길을 잃은 당신은 불빛에 이끌려 어떤 집을 발견합니다. 집에 들어가자 문이 잠기고 사람이 아닌 무언가에게 쫓기게 됩니다. 탈출하기 위한 카드 키를 찾기 위해 방을 유심히 살펴야 합니다. 거울에 비치는 괴물의 시야를 이용해서 괴물의 위치를 파악하세요 괴물은 당신의 위치를 점점 정확하게 찾아냅니다. 만약 위험하다고 생각되면 빠르게 자리를 피하세요 스팀 페이지 https://store.steampowered.com/app/1310620/The_Sight_in_a_mirror/?l=koreana 제작 블로그 https://y50814.tistory.com/
  • 4. 레벨 구성 Title InGame2 InGame3InGame1 End Title 에서 랜덤으로 3개의 레벨 중 하나로 이동합니다. InGame 레벨은 각각 아이템 배치가 다르기 때문에 플레이 할 때마다 아이템의 위치를 다시 찾아야 합니다. 게임을 클리어하면 End 레벨로 이동했다가 몇 초 뒤 자동으로 Title 레벨로 돌아갑니다.
  • 5. 캐릭터 <플레이어> <몬스터> 게임 내에서 캐릭터는 플레이어와 몬스터가 존재합니다. 플레이어는 주어진 기능으로 몬스터를 피하 고 숨겨진 아이템을 찾으면서 탈출 방법을 찾 아야합니다. 몬스터는 주어진 AI로 플레이어를 찾아 게임 오버 시킵니다. 캐릭터들의 애니메이션은 Animinstance 클 래스와 애니메이션 블루프린트로 만들었습니 다.
  • 6. 캐릭터 - 플레이어 1인칭 눈높이에 닿는 아이템을 획득할 수 있고 서랍과 옷장을 여 는 상호작용도 가능합니다. -> 카메라 앞에 충돌체를 붙여 충돌되는 사물을 체크하도록 했 습니다. 충돌된 액터가 아이템일 경우 F키를 누르면 해당 아이템 을 제거하고 인벤토리에 추가합니다. 손전등, 거울, 열쇠 등 아이템은 평소 잠겨있다가 해당 아이템을 획득하면 해금되 어 사용 가능하도록 했습니다. -> 획득 전에는 bool변수로 아이템 사용 함수를 불가능 하도록 하고 visibility 설 정으로 눈에도 안보이도록 했습니다. 주변에 몬스터가 있으면 화면이 왜곡되고 노이즈 소리가 들립니다. -> 충돌체에 몬스터가 Overlap되면 카메라 PostProcess의 비 네팅과 그레인을 이용해서 캐릭터의 긴장도를 표현했습니다. Overlap이 끝나면 노이즈 소리를 끄고 비네팅과 그레인이 원상복 귀 되도록 했습니다.
  • 7. 캐릭터 - 몬스터 몬스터의 시야는 맵에 있는 모든 거울을 통해서 확인이 가능 합니다. -> 랜더 타겟을 이용한 마테리얼로 몬스터의 카메라 화면을 확인 가능하게 만들었습니다. Depth를 이용한 마테리얼로 몬스터만의 독특한 시야를 만들 어서 몬스터가 어두운 방에 가더라도 밝기에 상관없이 내부 구조를 파악할 수 있도록 만들었습니다. 몬스터의 이동 경로는 플레이어가 어느 곳에 있는지, 얼마나 오래 있는지에 따라 달라지며 한 곳에 오랫동안 있는다면 몬 스터의 탐색이 더 세밀해 집니다. -> Patrol Point라는 Actor로 좌표를 만들고 그 액터들을 가리키는 Patrol Point List를 만들어서 경로를 만들었습니다. 몬스터는 가지고 있는 Patrol Point List 포인터를 상황에 따라 바꾸며 Patrol Point의 좌표를 찾아갑니다. Patrol Point에는 bool 변수가 True면 왼쪽으로 90도, 오 른쪽으로 180도 회전하며 탐색합니다.
  • 8. 캐릭터 - 몬스터 몬스터가 플레이어를 따라잡게 되면 플레이어는 움직일 수 없게 되며 자 동으로 몬스터의 얼굴을 바라보게 됩니다. 그 후 몬스터는 플레이어에게 도끼를 내려찍고 게임오버 시킵니다. -> 몬스터와 플레이어가 일정 거리 이하가 되면 플레이어의 키입력이 안 되도록 하고 자동으로 Rotation을 조절하여 몬스터의 얼굴을 바라보게 했습니다. 그 후 몬스터는 공격모션을 하고 게임오버 UI가 표시됩니다. 플레이어의 진행도에 따라 몬스터는 건물 내부의 모든 거울을 깨버립니 다. -> 빨간색 키 카드를 얻게 되면 몬스터가 거울 깨는 것을 최우선으로 하 도록 했습니다. 모든 거울을 깨고 나면 몬스터의 이동속도가 그 전 보다 빨라집니다.
  • 9. 캐릭터 - 몬스터AI 몬스터 AI는 비헤이비어트리로 구현 했으며 크게 추적모드와 탐색모드로 나뉩니다. -> bool타입 Trace변수로 나뉩니다. 추적모드 탐색모드
  • 10. 캐릭터 - 몬스터AI Trace가 false일 때 들어오게 되는 노드입니다. DetectSight는 전방 120도 부채꼴로 회전하며 플레이어를 인식하고 벽을 통과 하지 못합니다. DetectTrace는 몬스터 중심으로 작은 구를 만들며 벽을 통과해서 인식합니다. 두 가지의 BTService로 몬스터는 여러 각도로 플레이어를 찾을 수 있으며 플레 이어가 너무 가까이 있다면 DetectSight에 걸리지 않더라도 DetectTrace로 걸리 게 됩니다. 앞의 Detect에 플레이어가 인식이 된다면 들어오는 노드입니다. 추적모드로 변경합니다. Detect에 걸리는 것이 없을 때 들어 오는 노드입니다. PatrolPoint를 따라 이동합니다. PatrolPoint에 bool변수가 true일 때 들어 노는 노드입니다. 왼쪽으로 90도, 오른쪽으 로 180도 회전하며 탐색합니다.
  • 11. 캐릭터 - 몬스터AI Trace가 true일 때 들어오게 되는 노드입니다. DetectTrace는 몬스터 중심으로 커다란 구를 만들며 벽을 통과해서 인식합니다. 인식이 됐다면 숨어도 몬스터가 찾아내므로 플레이어는 멀리 달아나야 합니다. Detect에 걸렸을 때 들어오는 노 드입니다. 인식된 플레이어를 추격 합니다. Detect에 걸리는 것이 없을 때 들어오는 노드입니다. 플레이어가 마지막으로 인식됐던 좌표까지 이동한 다음 왼쪽으 로 90도, 오른쪽으로 180도 회전한 뒤, 인식되는 것이 없다면 탐 색모드로 변경합니다.
  • 12. 맵 - 외부 <시작 위치 숲> 타이틀 화면에서 인게임으로 넘어가게 되면 처음으로 보이는 것은 검은 숲입니다. 길을 따라서 가게 되면 간단한 동작을 알려주는 가이드가 차례대로 표시됐다가 사라집니다. 덕분에 플레이어는 해당 기능들을 숙지한 상태에서 건물 내부로 들어가게 됩니다. -> 플레이어가 보기 편한 위치에 Material Billboard를 배치하고 주변 충돌체에 Overlap 되는 동안만 표시합니다.
  • 13. 맵 - 내부 <건물 내부 구조> <일반적인 방 구조>
  • 14. 맵 - 내부 18개의 방이 있으며 대부분의 문은 잠겨 있습니다. 초록, 파랑, 빨강, 검은색 자물쇠 가 걸려있고 맞는 색깔의 키 카드 를 찾으면 열 수 있습니다. -> 문의 충돌체에 닿은 플레이 어의 Key 변수를 확인하여 부 여된 등급의 이상일 경우 자동으 로 열립니다. 등급 미만이라면 자물쇠 Material Billboard를 2초간 표시합니다. 어느 한 구역에 오래 있으면 몬스터가 점점 플레이 어의 위치를 찾아오게 됩니다. -> 방과 복도마다 달려있는 충돌체로 플레이어가 어느 곳에 있는지, 얼마나 오래 있는지에 따라 몬스 터의 탐색 경로를 변경합니다.
  • 15. 맵 - 내부 옷장과 서랍은 여닫는 것이 가능 합니다. -> 플레이어의 에임이 닿아 있을 때 F키를 누르면 해당 부분의 Location, Rotation이 조절되어 열리도록 했습니다. Int변수로 내부에 들어갈 아이템 넘버를 입력하면 해당 아이템이 위 치해 있습니다. 랜더 타겟을 이용한 거울은 몬스터 의 시야를 보여줍니다. 진행도에 따라 몬스터가 거울을 찾아 깨버 리기도 합니다. -> 몬스터가 거울 가까이에 접근 하면 마테리얼 교체가 되도록 했 습니다.
  • 16. UI - Title START 버튼이 눌리면 랜덤으로 InGame 레벨이 열리게 됩니다. EXIT 버튼은 quit 명령어로 게임을 종료하도록 만들었습니다.
  • 17. UI - InGame 에임은 평소에는 반투명하다가 아이템, 상호 작용이 가능한 가구와 겹치면 불투명하게 되 도록 만들었습니다. 인벤토리는 아이템 넘버를 가지는 이미지 슬롯을 따로 만들어 두고 만들어둔 이미지 슬롯을 UniformGridPanel로 모아서 만 들었습니다. 적혀 있는 숫자 넘버를 누르 면 눌러진 이미지 슬롯에 저장된 아이템 넘버를 확인하고 해당되는 아이템을 사용 합니다.
  • 18. UI - End TEXT 박스를 띄운 뒤 Title 레벨로 이동하도록 만들었습니다.