NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인 - 야생의 땅: 듀랑고의 사례와 함께
Nexon Developer Conference 2014 에서 발표에 사용한 슬라이드입니다.
강연 영상은 http://www.youtube.com/watch?v=jaZ-sM46R60 에서 보실수 있습니다.
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서영준 박
(과거 NDC 2014에서 했던 강연 자료입니다. 발표 당시엔 공유에 힘든 부분이 있어 게임 출시 이후에 공개되는 점 양해를 드립니다.)
프로그래머의 시각에서 게임 개발 프로세스를 보면, 여러 에이전트 들이 특정한 목적을 가지고 동시에 정보를 처리하는 일련의 로직 조합이라고 생각해볼 수 있습니다. 테크니컬 하게 정보 처리 로직을 작성하고 그 효율을 탐구하는 업무가 바로 프로그래머의 주요 업무 중 하나입니다. 그렇다면 프로그래머의 시각으로 개발 프로세스를 접근해 보면 새로운 인사이트를 얻는 부분이 있지 않을까요?
<야생의 땅:듀랑고>에는 새로움이 가득한 도전이 많이 있습니다. 이러한 새로움을 향한 도전은, 비단 게임 피처 뿐만 아니라 개발 프로세스에서도 마찬가지로 녹아 있습니다. 실제로 개발 프로세스 관리에 수많은 시도들이 있었고 지금도 계속 되고 있습니다.
그간 시도했던 여러 개발 프로세스에 대한 소개를 하고, 그것을 활용한 피처 개발, 프로토타이핑 사례 등을 공유하고자 합니다.
NDC 2014 이은석 - 온라인 게임의 창발적 플레이 디자인 - 야생의 땅: 듀랑고의 사례와 함께
Nexon Developer Conference 2014 에서 발표에 사용한 슬라이드입니다.
강연 영상은 http://www.youtube.com/watch?v=jaZ-sM46R60 에서 보실수 있습니다.
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서영준 박
(과거 NDC 2014에서 했던 강연 자료입니다. 발표 당시엔 공유에 힘든 부분이 있어 게임 출시 이후에 공개되는 점 양해를 드립니다.)
프로그래머의 시각에서 게임 개발 프로세스를 보면, 여러 에이전트 들이 특정한 목적을 가지고 동시에 정보를 처리하는 일련의 로직 조합이라고 생각해볼 수 있습니다. 테크니컬 하게 정보 처리 로직을 작성하고 그 효율을 탐구하는 업무가 바로 프로그래머의 주요 업무 중 하나입니다. 그렇다면 프로그래머의 시각으로 개발 프로세스를 접근해 보면 새로운 인사이트를 얻는 부분이 있지 않을까요?
<야생의 땅:듀랑고>에는 새로움이 가득한 도전이 많이 있습니다. 이러한 새로움을 향한 도전은, 비단 게임 피처 뿐만 아니라 개발 프로세스에서도 마찬가지로 녹아 있습니다. 실제로 개발 프로세스 관리에 수많은 시도들이 있었고 지금도 계속 되고 있습니다.
그간 시도했던 여러 개발 프로세스에 대한 소개를 하고, 그것을 활용한 피처 개발, 프로토타이핑 사례 등을 공유하고자 합니다.
2016년 인벤 게임 컨퍼런스에서 발표한 실전 시나리오라이팅 - PD가 원하면 나는 쓴다 - 입니다.
성과발표는 아니고 주로 튜터리얼적인 의미로 만들었습니다.
대부분 카피라이트를 넣었고, 표지가 나오는 경우에는 넣지 않은 것도 있습니다.
#igc2016 #시나리오 #게임시나리오
2016년 인벤 게임 컨퍼런스에서 발표한 실전 시나리오라이팅 - PD가 원하면 나는 쓴다 - 입니다.
성과발표는 아니고 주로 튜터리얼적인 의미로 만들었습니다.
대부분 카피라이트를 넣었고, 표지가 나오는 경우에는 넣지 않은 것도 있습니다.
#igc2016 #시나리오 #게임시나리오
6. “공포” 라는 감정
특정한 사물이나 상황에 대해
지속적으로 나타나는
비이성적이고 극렬한 두려움
사전적 의미
1) 대부분의 동물에서 관찰된다.
2) 모든 문화권에 존재 한다.
3) 특징적인 얼굴표정을 갖는다.
4) 생존 가능성을 증가 시킨다.
5) 뚜렷한 생리적변화의
양상과 결합되어 있다
공포의 특징
7. 아곤 - 그리스어로 시합, 경기를 뜻하는 말
ex) 스포츠 경기 전반, 리그오브레전드 등
아레아 - 라틴어로 주사위 놀이를 뜻하는 말
ex) 룰렛, 로그라이크, 랜덤박스 등
미미크리 - 의지. 흉내, 모방, 의태를 뜻하는 말
ex) 소꿉놀이, 심즈, 시뮬레이션 게임 등
일링크스 - 그리스어로 소용돌이를 뜻하는 말
ex) 롤러코스터, 수족관 (신선한 재미) 등
“
”
로제카유아가 주장한 놀이의 4분류
게임(놀이, 오락)이란 무엇인가?
8. 아곤 - 경쟁자와의 생존경쟁에서 유발되는 공포
ex) 괴물과의 술래잡기, 데드 바이 데이라이트
아레아 - 어디에서 나올지 모르는 괴물에 대한 공포
ex) 점프스케어, FNAF, 에밀리는 놀고싶어
미미크리 - 가상세계를 진짜세계처럼 인식하고 몰입
ex) 로보토미 코퍼레이션, 포니 아일랜드
일링크스 - 충격적인 연출, 괴물등을 통한 공포
ex) 아웃라스트, 그림자 복도
“
”
로제카유아가 주장한 놀이의 4분류
놀이의 4분류를 통한 공포요소 분석
9. 인간의 감각을 통한 공포요소 분석
시각적 공포요소
- 괴물의 비주얼, 이펙트, 미장센 등
- 그로테스크한 괴물(살인자, 좀비, 기형인간)
- 답답하고 어두운 공간(지하, 실내)
- 긴장감 있는 미장센(카메라 무빙)
청각적 공포요소
- 미미크리적 요소
- 사실감있는 발소리, 괴물의 소리
- 주변 사물들과의 상호작용소리
ex) 마룻바닥소리, 물소리
“
”
10. 기대심리를 통한 공포요소 분석
심리학자 프로이드의 기대불안(Erwartungsangst)
- 학습된 사건(기대)에서 오는 공포
ex) 코너를 돌았는데 귀신이 나옴
-> 다음 코너를 돌 때 조심하게 됨
- 플레이어가 겪어보기 전엔 모르는 공포지점에
대한 기대심리는 긴장감과 공포감을 줌
“
” 코너를 도는 장면 및
문을 여는 장면
11. 제한적 상황을 통한 공포요소 분석
시야 제한적 공포요소
- 안개 등의 시야방해 요소를 통한 공포
- 사각지대에서 튀어나오는 괴물로 인한 공포
능력 제한적 공포요소
- 괴물과 동등히 맞설 수 없는데에서 오는 공포
시간 제한적 공포요소
- 시간에 쫓기는 상황등에서 오는 공포
“
”
12. 공포게임 디자인 8요소
조절자 디자인 5요소
- 캐릭터: 범인, 맹수, 로봇, 좀비, 귀신
- 배경: 동굴, 심해, 고고도, 극한환경
- 소품: 나무, 비행선, 파동, 충격파
- 사운드: 배경음악, 목소리, 발소리
- 서사: 현실성, 연관성
조절 형식 디자인 3요소
- 강도: 얼마나 강조할 것인가?
- 빈도: 얼마나 자주할 것인가?
- 지속시간: 얼마나 길게 할 것인가?
“
”
13. 참 고 문 헌
공포게임에서 유희적 공포요소와 플레이어의 반응에 대한 연구
- 윤장원, 숭실대학교 대학원 미디어학과 박사논문, 2007
애니메이션과 게임의 공포 조절에 대한 디자인 8 요소
(DEFC-8)와 체계화
- 왕건, 동명대학교 대학원 디자인학과 박사논문, 2020년
18. - 언리얼 에디터 안에서 노드 기반 인터페이스를
사용하여 게임플레이 요소를 만드는 개념을
토대로 한 비주얼 스크립팅 시스템
- 게임 개발의 난도를 쉽게 하기 위한 시각적
프로그래밍 기법
- 기본적인 프로그래밍 로직이나 알고리즘등은
따로 공부하고 구현해야 함
- 블루프린트로 작성된 코드는 C++ 코드로 변환
“
”
게임 개발의 핵심, 블루프린트
19. ● 장점
- 프로그래밍 방법이 직관적이고 쉽다.
- 시각적인 노드와 라인으로 인해 프로그램의
로직 플로우를 확인 하기가 쉽다.
- 함수 구현을 잘해놓을 경우 추후 디자이너
등 비전공자들과의 협업이 쉬워진다.
○ 단점
- 배우는데 시간이 걸린다.
- C++ 코드와 연계가 까다롭다.
- 비전공자 수준이 아닌 함수를 직접 구현하고
OS, 네트워크 수준의 시스템을 제어하기
위해선 C++ 및 시스템 프로그래밍, 네트워크
프로그래밍 등의 전공지식이 필요하다.
“
”
게임 개발의 핵심, 블루프린트
20. 블루프린트 인터페이스
- 비슷한 역할을 하는 액터에 대해서 전부 다른
코드를 짜는 것은 매우 비효율적임
- 오브젝트 상호작용의 경우 각각의 오브젝트와
상호작용할 때 마다 이를 if 분기점으로 나누는
것을 피하기 위해 인터페이스를 사용함
- 블루프린트에서는 인터페이스 상속을 검사하는
노드를 제공함
- 또한 상속된 메소드를 호출할 수 있어 컨트롤러
는 호출만 하고 오브젝트의 역할은 오브젝트 내
부에서 정의할 수 있음
“
”
21. 상호작용 오브젝트
- 상속된 액터의 내부 이벤트는 액터 내부에 구현
- 이후 함수를 구현할 때 해당 이벤트가 호출되도
록 구현하기
- 상호작용 키를 누르면 Line Trace로 액터 감지
- 감지된 액터가 인터페이스 상속이 된 경우 상호
작용 메소드 호출
“
”
22. 통일된 상호작용
- 상호작용 인터페이스가 상속만 되어 있다면 어
떤 액터라도 해당 액터 내부의 로직을 호출 가능
- 아이템 오브젝트는 인벤토리에 추가하고 해당
아이템을 레벨에서 지우는 메소드로 구현
- 키패드나 컴퓨터는 해당 오브젝트를 사용하는
메소드로 구현
“
”
23. - 매 프레임마다 호출되는 Tick 이벤트를 활용
- 마우스가 상호작용이 가능한 오브젝트 위에
있으면 UI가 표시되어 플레이어를 편하게 함
“
”
상호작용 UI
24. - 언리얼 엔진에서 제공하는 이벤트 핸들러
- 이벤트 바인딩을 하면 참조 없이 다른 블루프린
트에게 특정 동작을 지시할 수 있음
- 이벤트를 호출할 블루프린트에게 Event Dispatc
her를 부착함
- 호출되는 오브젝트에 이벤트 바인딩을 하고 실
행될 이벤트를 생성하면 됨
“
”
Event Dispatcher
25. - 아이템 사용 키를 입력 시 이벤트를 호출
- 해당하는 아이템의 블루프린트에서 이벤트 바인
딩 및 구현
“
”
들고있는 아이템 사용
26. - 키패널에서 상호작용 버튼을 누를 시 키패널로
줌인 되도록 만듬
- 키패널 디자인 이후 패널 버튼마다 클릭 이벤트
를 바인딩하여 번호가 눌리도록 만듬
- 미리 저장된 비밀번호와 입력된 비밀번호를
비교하여 맞으면 연결된 문을 염
“
”
키패널 제작과정
27. C++ 프로그래밍
- UE의 각 모듈은 DLL에 가까운 형식으로 되어있
음.
- 클래스 선언 시 DLLEXPORT를 통한 외부접근자
지정. 이후 게임 모듈에서 컴파일한 코드를 접근
하여 C++로 프로그래밍된 코드를 사용할 수 있
음.
- 모든 코드는 기본적으로 매크로를 통해 전처리
및 언리얼 엔진과 상호작용
“
”
28. C++ 프로그래밍
- 언리얼 엔진에서 기본적으로 정해주는 부모
클래스들
- 언리얼 엔진마다 선택된 클래스 소스의 헤더
파일을 제공하고 있음.
- 부모클래스의 정의에 맞춰 각자 상황에 맞게
필요한 코드를 컴파일해서 사용
- UBlueprintFunctionLibrary같은 경우
GetFunctionCallspace를 임포트하여
오버라이드 하고있음.
“
”
29. CMD 명령 콘솔 제작과정
- 현재 실행중인 컴퓨터의 윈도우 명령어 실행을
위해 파이프를 열어 명령어 실행
- 이때 사용되는 파이프의 반대쪽은 인자로 넣은
명령어의 표준 입출력으로 연결됨
- 명령 프로세서의 생성된 복사본을 비동기적으로
실행하고 명령줄로 사용
- 입력된 명령어를 통해 힌트를 얻고 방을 탈출
“
”
31. 많은 게임 엔진에서는 길찾기 알고리즘이 구현되
어 있음
언리얼에서도 구현되어 있는 길찾기인 Nav Mesh
를 사용하면 알아서 경로를 계산함
Link Proxy를 이용하면 창문과 창문 사이, 장애물
뛰어넘기 등을 구현할 수 있음
“
”
추격 AI, Nav Mesh
32. 언리얼 엔진에서는 빛을 다루는 액터가 존재함
이러한 액터에 블루프린트나 스크립트를 활용하
여 특정 상황에서 불이 꺼지는 연출을 할 수 있음
엔진이 제공하는 라이트 유형 중 스포트라이트는
손전등에 응용하기 좋음
빛과 관련된 스크립트로 공포감을 조성하기
“
”
시각적 제한 요소, 빛
33. 2D 게임처럼 직접 도트를 찍는 것은 거의 불가능
엔진 내장 매터리얼을 통해 원하는 질감 구현
마켓스토어에 존재하는 수많은 매터리얼도 이용
“
”
바닥과 벽의 질감, 매터리얼
34. - 언리얼 엔진을 통한 수려한 그래픽과 섬뜩한
분위기의 게임을 즐길 수 있음
- 윈도우 명령어를 통해 현실적이고 참신한 게임
플레이를 경험할 수 있음
- 몰입감 있는 스토리를 통해 마치 실제로 겪는듯
한
생생한 공포를 느낄 수 있음
- 공포스럽고 긴박한 분위기 속에서 수수께끼를
푸는 카타르시스를 느낄 수 있음
“
”
작품 특징 및 기대효과